个适合使用宏自己的宏,有什么方法测试

后使用快捷导航没有帐号?
查看: 5723|回复: 19
Lv.2, 积分 47, 距离下一级还需 3 积分
UID帖子威望0 多玩草0 草
我是影之哀伤的小战士。本人比较懒。整合了许多实用的PVE宏给大家分析一下。&&
首先是一键输出宏。是由三个宏组合的 但是只需要按宏1就行了
宏1& && && && &
#showtooltip 压制
/startattack
/castsequence reset=0.6 0,0,0,猛击
/click MultiBarBottomRightButton11
/cast !压制
/console Sound_EnableSFX 1
/script UIErrorsFrame:Clear()
把这个宏放到你想放的位置。
#show 巨人打击
/startattack
/castsequence reset=0 0,0,巨人打击
/click MultiBarBottomRightButton12
/cast !压制
/cast 狂暴之怒
这个把它放在经验条上面的动作条的倒数第二个
#showtooltip 致死打击
/startattack
/castsequence reset=0 0,致死打击
/click MultiBarBottomRightButton11
/cast !压制
这个放在经验条上面的动作条的倒数第一个
这种宏可以一键无脑输出。同时使得技能循环更加顺畅,少出现卡CD的情况.
#showtooltip 斩杀
/startattack
/castsequence reset=0 0,0,0,压制
/castsequence reset=0 0,0,致死打击,0
/castsequence reset=0 0,巨人打击,0,0
/cast 斩杀
#showtooltip 雷霆一击
/startattack
/castsequence reset=0 0,0,0,顺劈斩
/castsequence reset=0 0,0,旋风斩,0
/castsequence reset=0 0,雷霆一击,0,0
/cast 雷霆一击
/施放 浴血奋战
/施放 颅骨战旗
/施放 狂暴之怒
/施放 鲁莽
/USE 黑暗院长遗训
大家看一下,好不好的话可以自己试一下。。顺便试一下木桩。。报一下装等。看看这个宏能打多少伤害
新人欢迎积分0 阅读权限1积分18精华0UID帖子金钱37 威望0
UID帖子威望0 多玩草0 草
LZ 果然是传说中的&&懒神&&&&
无聊丶别闹了
Lv.4, 积分 939, 距离下一级还需 61 积分
UID帖子威望0 多玩草66 草
武器一键宏和1托2 1托3的最好别用了
要是想偷懒就弄个两键宏吧 爆发可控制的 DPS拖拖的毕一键高不少 操作也不难
让小姐从良;令女同爱郎!
茗灬菛丶喜力
Lv.2, 积分 36, 距离下一级还需 14 积分
UID帖子威望0 多玩草0 草
如果想打的好 个人建议还是手动挡
邪恶的是我 不是世界
Lv.6, 积分 2729, 距离下一级还需 2271 积分
UID9016208帖子威望0 多玩草68 草
试了一下 还是蛮好用的 就是怒气泄的太快 有时候手动不出英勇 不过还是赞一个
难道 我连等你的资格都没有了吗?
邪恶的是我 不是世界
Lv.6, 积分 2729, 距离下一级还需 2271 积分
UID9016208帖子威望0 多玩草68 草
AOE宏 似乎 没什么意义把
难道 我连等你的资格都没有了吗?
新人欢迎积分0 阅读权限1积分68精华0UID帖子金钱147 威望0
UID帖子威望0 多玩草0 草
无聊丶别闹了 发表于
武器一键宏和1托2 1托3的最好别用了
要是想偷懒就弄个两键宏吧 爆发可控制的 DPS拖拖的毕一键高不少 操作也 ...
哪里有两键宏啊
新人欢迎积分1 阅读权限1积分31精华0UID帖子金钱59 威望0
UID帖子威望0 多玩草0 草
UID5421415帖子威望0 多玩草0 草
管用吗?能比手打得高吗
UID帖子威望0 多玩草0 草
有个问题要问!!!!为什么我的宏,颅骨战旗不能施放呢!
Lv.2, 积分 18, 距离下一级还需 32 积分
UID帖子威望0 多玩草0 草
Lv.2, 积分 18, 距离下一级还需 32 积分
UID帖子威望0 多玩草0 草
[/FLY] 用不了啊 [/FLY]
UID帖子威望0 多玩草0 草
楼主怎么把横扫攻击从宏里面去掉啊,这样打单目标会浪费很多怒气
UID帖子威望0 多玩草0 草
顶个 留空试试看
UID帖子威望0 多玩草0 草
本来手动的WQZ就打不怎么高 还用宏.....唉& &飘过
需要金钱:1100
手机盒子客户端点击或扫描下载
Powered by刚开始工作,记录平时学习和困惑的内容,稳步成长。
使用Makefile编译不同平台目标文件方法
使用Makefile编译不同平台目标文件方法
一、源码autoconf、automake生成软件包
1、基础概念
configure.in 这是最重要的文件,整个安装过程都靠它来主导。
Makefile.am automake会根据它来生成Makefile.in,再由./configure 把Makefile.in变成最终的Makefile,一般来说在顶级目录和各个子目录都应该有一个Makefile.am
acconfig.h autoheader会根据它来生成config.h.in,再由./configure 把config.h.in变成最终的config.h
test.c test1.c test.h … … 等等源程序。
二、automake步骤流程
①autoscan命令生成autoscan.log和configure.scan
autoscan是用来扫描源代码目录生成configure.scan文件的。autoscan可以用目录名做为参数,但如果你不使用参数的话,那么autoscan将认为使用的是当前目录。autoscan将扫描你所指定目录中的源文件,并创建configure.scan文件。
②重命名configure.scan为configure.in,然后配置configure.in
configure.scan包含了系统配置的基本选项,里面都是一些宏定义。需要将它改名为configure.in
configure.in文件的内容是一些宏,这些宏经过autoconf 处理后会变成检查系统特性、环境变量、软件必须的参数的shell脚本。configure.in文件中的宏的顺序并没有规定,但是必须在所有宏的最前面和最后面分别加上AC_INIT宏和AC_OUTPUT宏。
③aclocal命令生成aclcal.m4
aclocal是一个perl 脚本程序。aclocal根据configure.in文件的内容,自动生成aclocal.m4文件。aclocal的定义是:“aclocal - create aclocal.m4 by scanning configure.ac”。
④编写acconfig.h头文件
⑤autoheader命令生成config.h.in
⑥编写Makefile.am
Makefile.am是用来生成Makefile.in的,需要手工书写。Makefile.am中定义了一些内容:
AUTOMAKE_OPTIONS
  这个是automake的选项。在执行automake时,它会检查目录下是否存在标准GNU软件包中应具备的各种文件,例如AUTHORS、ChangeLog、NEWS等文件。将其设置成foreign时,automake会改用一般软件包的标准来检查。
bin_PROGRAMS
  这个是指定所要产生的可执行文件的文件名。如果要产生多个可执行文件,那么在各个名字间用空格隔开。
helloworld_SOURCES
  这个是指定产生“helloworld”时所需要的源代码。如果它用到了多个源文件,使用空格符号将它们隔开。比如需要helloworld.h,helloworld.c那么请写成helloworld_SOURCES= helloworld.h helloworld.c。
  如果在bin_PROGRAMS定义了多个可执行文件,则对应每个可执行文件都要定义相对的filename_SOURCES。
⑦在源文件子目录中也编写相应的Makefile.am
⑧执行automake -a 或者automake –add-missing命令产生Makefile.in
选项--add-missing的定义是“add missing standard files to package”,它会让automake加入一个标准的软件包所必须的一些文件。 用automake产生出来的Makefile.in文件是符合GNU Makefile惯例的,接下来只要执行configure这个shell 脚本就可以产生合适的 Makefile 文件了。
⑨执行autoconf生成最终的configure
autoconf是用来产生configure文件的。configure是一个脚本,它能设置源程序来适应各种不同的操作系统平台,并且根据不同的系统来产生合适的Makefile,从而可以使源代码能在不同的操作系统平台上被编译出来。
⑩运行./configure
,根据Makefile编译源代码,连接,生成目标文件,可执行文件。
make clean
清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件。
make install
将编译成功的可执行文件安装到系统目录中,一般为/usr/local/bin目录。
产生发布软件包文件(即distribution package)。这个命令将会将可执行文件及相关文件打包成一个tar.gz压缩的文件用来作为发布软件的软件包。
make distcheck
生成发布软件包并对其进行测试检查,以确定发布包的正确性。这个操作将自动把压缩包文件解开,然后执行configure命令,并且执行make,来确认编译不出现错误,最后提示你软件包已经准备好,可以发布了。
make distclean
类似make clean,但同时也将configure生成的文件全部删除掉,包括Makefile。
三、修改Makefile(参数传递)
编译的可执行文件有时候需要在PC机(x86)的平台上运行,有时候则需要在A嵌入式平台(arm端)i.mx6的平台上运行,而还有时候则需要在B嵌入式平台(arm端)mini2440的平台上运行,需要能随时进行切换,编译出对应平台所需要的可执行文件。
①最土的办法自然就是写三份makefile,需要编译某一个平台时,拷贝对应的makefile,然后再make。 效率很低。
②在makefile中,定义三套编译规则,通过输入make x86,以及make imx6,以及make mini2440这样的目标选择命令,来指示编译器选择某一套编译规则并运行 ,导致makefile的文件很冗余,存在多套几乎一模一样的编译规则。
③在makefile中预先使用一个未定义的变量, 这个变量可以在make执行时传递给它。向make命令传递参数,告诉它怎么去解释makefile这个文件。
同一个工程在不同平台上编译时需要修改的Makefile中选项为:
build_triplet = x86_64-unknown-linux-gnu
可通过命令uname -a 查看当前设备平台版本信息 ;--build=编译该软件所使用的平台。
//注:该参数在不指定的情况下将自动尝试猜测目前平台的名称
host_triplet = arm-unknown-linux-gnu
--host=该软件将运行的平台
--target=该软件所处理的目标平台
ACLOCAL = ${SHELL} /workteam/huangxiang6/data/work/strace-4.6/missing –run aclocal-1.11
AMTAR = ${SHELL} /workteam/huangxiang6/data/work/strace-4.6/missing –run tar
AUTOCONF = ${SHELL} /workteam/huangxiang6/data/work/strace-4.6/missing –run autoconf
AUTOHEADER = ${SHELL} /workteam/huangxiang6/data/work/strace-4.6/missing –run autoheader
AUTOMAKE = ${SHELL} /workteam/huangxiang6/data/work/strace-4.6/missing –run automake-1.11
指定一些自动生成的文件路径
CC = arm-hisiv510-linux-gcc
特定交叉编译工具指定
H90板端:arm-hisiv510-linux-gcc
H100板端:aarch64-linux-gnu-gcc
CPP = arm-hisiv510-linux-gcc -E
E参数将对源程序example.c进行预处理,生成example.i文件, 就是将#include,#define等进行文件插入及宏扩展等操作。
MAKEINFO = ${SHELL} /workteam/huangxiang6/data/work/strace-4.6/missing –run makeinfo
abs_builddir = /workteam/huangxiang6/data/work/strace-4.6
abs_srcdir = /workteam/huangxiang6/data/work/strace-4.6
abs_top_builddir = /workteam/huangxiang6/data/work/strace-4.6
abs_top_srcdir = /workteam/huangxiang6/data/work/strace-4.6
build = x86_64-unknown-linux-gnu
build_cpu = x86_64
build_os = linux-gnu
host = arm-unknown-linux-gnu
host_alias = arm-linux
host_cpu = arm
host_os = linux-gnu
includedir = /opt/toolchains-BE/hisi/arm-hisiv510-linux/bin/../target/usr/include
install_sh = ${SHELL} /workteam/huangxiang6/data/work/strace-4.6/install-sh
opsys = linux
OS = linux
(说明:OS is one of
linux , sunos4 , svr4 , or
freebsd .)
ARCH = arm
, etc.包含了此核心源代码所支持的硬件体系结构相关的核心代码。如对于X86平台就是i386。)
搞不明白的几个问题:
在编译服务器上./configure
后生成的Makefile中的配置 build是X86,host也是X86,将make后的可执行文件strace传到H90板上,出现的错误很好理解:
-sh: ./strace: cannot execute binary file: Exec format error
但是将Makefile修改为arm-hisiv510-linux的环境后运行make报错:
syscall.c:46:21: fatal error: sys/reg.h:没有那个文件或目录
#include &sys/reg.h&
原因:项目中的makefile必须能够正确的定位源文件和依赖文件 ,特殊的预定义变量VPATH用于指示make如何查找文件 ,不同文件夹可作为VPATH的值同时出现,文件夹的名字之间需要使用分隔符进行区分
例如:VPATH:=inc src
VPATH:=src
VPATH:=inc:src
VPATH使用场景:当前文件夹找不到需要的文件时 ;
make会在VPATH指定的文件夹中依次搜索文件;
当多个文件夹存在同名文件时,选择第一次搜索到的文件 ;
VPATH只能决定make的搜索路径,无法决定命令的搜索路径 ;
对于特定的编译命令(gcc),需要独立指定编译搜索路径
网上有一种方法CMake 可以编译源代码、制作程序库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。CMake 支持 in-place 建构(二进档和源代码在同一个目录树中)和 out-of-place 建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake 也支持静态与动态程式库的建构。
“CMake”这个名字是“cross platform make”的缩写。虽然名字中含有“make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高阶。
没有更多推荐了,测试经验及测试方法
提出问题,分析问题,总结问题,改进问题产出
产出!!!
一,测试类型
1.功能测试:最基础的测试类型,主要对产品的各个功能进行验证,检查是否满足产品需求。
1.1 测试用例设计:
1.1.1 主要基于需求的设计:根据需求文档进行分析,按照一定的设计方法去编写测试用例,如正反例,边界值;
1.1.2 主要基于经验的设计:业务类的一些需求,要根据之前的测试情况或是自己对业务的熟悉程度进行验证,发散思维,深究这个点可能会出现的问题,影响到的功能等去进行设计;
1.1.3 主要基于对代码逻辑的实现设计:这个涉及到代码开发的层面,但是了解开发实现的逻辑,熟悉代码实现的方式可以在下次同类功能测试时减少一些问题的出现,同时也能更好的发现一些隐藏性的问题。(举例:在上次测试投资记录改版时详情页中有一个”预期收益率“的字段展示,开发取的是产品的预期收益率,但问题在于产品的预期收益率如果改变的话,详情页的收益率也会变化,导致客户购买过的产品收益率展示与之前不符。如果熟悉代码逻辑的实现,上线之前确定开发取的是订单的”预期年化收益率“就不会有这个问题了。)
1.2 用例展现实现:
1.2.1 excel:这是最普遍也是最基本的展示形式,但是当我拿着这个去跟开发评审测试用例时,开发都无法接受一堆文字堆叠在表格中;
1.2.2 xmind:脑图的形式展现,优点是方便帮助梳理思路,也便于阅读;缺点是没有状态的展示,后续执行测试用例标记的时候不便;
1.2.3 word,txt等形式,将测试点在里面写下来,不考虑其他的测试步骤或是数据;
1.3 功能测试需要关注的点:
1.3.1 实现的逻辑,界面展现,兼容性,异常情况
1.4 测试进度:
1.4.1 项目的进度报告:报告我没有发过,但是在项目执行过程中,会在技术群中将测试情况告知大家;
1.4.2 完成报告
2.接口测试(欠缺这部分测试)
2.1 自己开发接口框架,开发源码框架
2.2功能接口自动化+线上监控
3.UI自动化测试
3.1 用到的框架有robotium,uiautomator,appium,这些框架有利有弊,找到适合自己项目的框架就好。
4.稳定性测试
4.1 Monkey,UI自动化
5.专项测试
5.1 CPU 内存 GPU过度绘制 启动/加载时长 流量 电量 弱网 权限 兼容 常规检查,会有对应的工具辅助进行测试
6.性能测试
7.安全性测试
二,测试流程及测试方法
1.通用的测试流程:需求——》开发——》自测——》产品/设计验收——》提测——》测试——》上线
2.流程要持续优化,不断改进,满足工作需要(如产品通过发邮件通知,如开发代码的review,如单元测试的推进)一切都为了产品的质量。
3.持续集成,结果及时反馈
三,测试方法论及测试框架
1.项目的复盘:遇到的问题,估期,效果
bug的整个分析。宏观分析:bug趋势,不同分级,严重bug超过多少就属于不合格的。出现的点是开发还是测试的问题,测试用例是否覆盖到了这个问题。bug的重新打开率。bug的预防,测试对bug的分析,追深层次的问题出现原因,找到实现某一类方法通用的方法,实现的基本逻辑,下一次写用例时就可以添加这部分用例。
2.定期对项目做总结:关注招聘信息,面试,不同岗位不同要求,面向那些方面,会什么工具,
3.测试方法论的行成:看,听,实践,总结经验,理解当下,行成适合的最重要。推进问题不要太激进,多了解,自己熟悉了之后才会提出自己的意见和建议。
4.测试框架的完善:
测试的基本技能测试技术测试流程:结果是好的 才会有影响力测试管理:领导是如果管理的,如果进行分工的,团队的表现时怎么样的,团队成员的性格及擅长的事儿是什么
四,互联网测试过程中的经历和感悟
1.与开发合作:懂代码,理解实现逻辑,bug产生原因的分析,才能更好的与开发沟通交流。
2.提高自己的影响力:借鉴好的东西,分析利弊;有效产出:做出来,小步快跑逐步完善;自己更需要能够讲出来。
3.如果带新人:这是一门学问也是一门艺术。好的领导可遇不可求。
十年测试经验悟出的测试心得
软测经验1——web项目测试经验总结(基本流程、回归测试、测试方案)
服务器端的一些测试方法
没有更多推荐了,没有风,在春天的树荫下晒大阳,等待苹果掉下来。
Linux下默认的宏测试
今天为了弄明白用什么宏来区分linux平台,特意写了个小程序试了一下。
代码如下:
#include &stdio.h&
int main(int argc, char *argv[]){
#ifdef LINUX
printf("LINUX/n");
#ifdef _LINUX
printf("_LINUX/n");
#ifdef __LINUX
printf("__LINUX/n");
#ifdef _LINUX_
printf("_LINUX_/n");
#ifdef __LINUX__
printf("__LINUX__/n");
#ifdef linux
printf("linux/n");
#ifdef _linux
printf("_linux/n");
#ifdef __linux
printf("__linux/n");
#ifdef _linux_
printf("_linux_/n");
#ifdef __linux__
printf("__linux__/n");
#ifdef GNU
printf("GNU/n");
#ifdef _GNU
printf("_GNU/n");
#ifdef __GNU
printf("__GNU/n");
#ifdef _GNU_
printf("_GNU_/n");
#ifdef __GNU__
printf("__GNU__/n");
#if defined(gnu) || defined(_gnu) || defined(__gnu) || defined(_gnu_) || defined(__gnu__)
printf("*gnu*/n");
return 0;}
运行结果:
linux__linux__linux__
Linux下的两个经典宏定义
查看gcc的默认宏定义命令
没有更多推荐了,关注51Testing
iOS单元测试常用的宏和测试方法
发表于: 11:48 &作者:wg689 & 来源:简书
推荐标签:
  常用的宏和测试方法  XCTFail(...)  任何尝试都会测试失败,...是输出的提示文字。(后面都是这样)  XCTAssertNil(expression, ...)  expression为空时通过,否则测试失败。  expression接受id类型的参数。  XCTAssertNotNil(expression, ...)  expression不为空时通过,否则测试失败。  expression接受id类型的参数。  XCTAssert(expression, ...)  expression为true时通过,否则测试失败。  expression接受boolean类型的参数。  XCTAssertTrue(expression, ...)  expression为true时通过,否则测试失败。  expression接受boolean类型的参数。  XCTAssertFalse(expression, ...)  expression为false时通过,否则测试失败。  expression接受boolean类型的参数。  XCTAssertEqualObjects(expression1, expression2, ...)  expression1和expression1地址相同时通过,否则测试失败。  expression接受id类型的参数。  XCTAssertNotEqualObjects(expression1, expression2, ...)  expression1和expression1地址不相同时通过,否则测试失败。  expression接受id类型的参数。  XCTAssertEqual(expression1, expression2, ...)  expression1和expression1相等时通过,否则测试失败。  expression接受基本类型的参数(数值、结构体之类的)。  XCTAssertNotEqual(expression1, expression2, ...)  expression1和expression1不相等时通过,否则测试失败。  expression接受基本类型的参数。  XCTAssertEqualWithAccuracy(expression1, expression2, accuracy, ...)  expression1和expression2之间的任何值都大于accuracy时,测试失败。  expression1、expression2、accuracy都为基本类型。  XCTAssertNotEqualWithAccuracy(expression1, expression2, accuracy, ...)  expression1和expression2之间的任何值都小于等于accuracy时,测试失败。  expression1、expression2、accuracy都为基本类型。  XCTAssertGreaterThan(expression1, expression2, ...)  expression1 &= expression2时,测试失败。  expression为基本类型  XCTAssertGreaterThanOrEqual(expression1, expression2, ...)  expression1 & expression2时,测试失败。  expression为基本类型  XCTAssertLessThan(expression1, expression2, ...)  expression1 &= expression2时,测试失败。  expression为基本类型  XCTAssertLessThanOrEqual(expression1, expression2, ...)  expression1 & expression2时,测试失败。  expression为基本类型  XCTAssertThrows(expression, ...)  expression没抛异常,测试失败。  expression为一个表达式  XCTAssertThrowsSpecific(expression, exception_class, ...)  expression没抛指定类的异常,测试失败。  expression为一个表达式  exception_class为一个指定类  XCTAssertThrowsSpecificNamed(expression, exception_class, exception_name, ...)  expression没抛指定类、指定名字的异常,测试失败。  expression为一个表达式  exception_class为一个指定类  exception_name为一个指定名字  XCTAssertNoThrow(expression, ...)  expression抛出异常时,测试失败。  expression为一个表达式  XCTAssertNoThrowSpecific(expression, exception_class, ...)  expression抛出指定类的异常,测试失败。  expression为一个表达式  XCTAssertNoThrowSpecificNamed(expression, exception_class, exception_name, ...)  expression抛出指定类、指定名字的异常,测试失败。  expression为一个表达式  exception_class为一个指定类  exception_name为一个指定名字  异步测试方法(定时器测试)  - (void)testTimerOne02{   & &XCTestExpectation *exception01 = [self expectationWithDescription:@"开始测试定时器"];   & &self.timer01Exception = exception01;   & &[[DYBoxTimer shareInstance] addSubscriberTimerWithTimeInterval:3 target:self selector:@selector(sendLocation01) timerSubscriberName:@"timer5" isRepeat:YES];   & &////等待6s期待预期完成,10s之内完成任务就认为是正常的   & [self waitForExpectationsWithTimeout:3.1 handler:nil];  }  - (void)sendLocation1{   & &[self.timer1Exception fulfill];  }上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-7),我们将立即处理。
搜索风云榜
51Testing官方微信
51Testing官方微博
测试知识全知道}

我要回帖

更多关于 在宏中openreport 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信