看了帮助很大啊,感谢大佬指导
由用户 jsx 启动
构建中 在工作空间 /var/lib/jenkins/workspace/接口测试_maven 中
Updating http://svn.91sph.com/svn/sph/server-service at revision '2018-08-15T16:54:34.100 +0800' --quiet
Using sole credentials build/****** in realm ‘http://svn.91sph.com:80 VisualSVN Server’
At revision 21847
Using sole credentials build/****** in realm ‘http://svn.91sph.com:80 VisualSVN Server’
No emails were triggered.
[接口测试_maven] $ /bin/sh -xe /tmp/jenkins2568474232541011686.sh
Running jsx.apitest.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[JENKINS] Recording test results
[WARNING] Attempt to (de-) serialize anonymous class hudson.maven.reporters.SurefireArchiver$2; see: https://jenkins.io/redirect/serialization-of-anonymous-classes/
[WARNING] Attempt to (de-) serialize anonymous class hudson.maven.reporters.BuildInfoRecorder$1; see: https://jenkins.io/redirect/serialization-of-anonymous-classes/
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ apitest ---
[INFO]
[INFO] >>> jmeter-maven-plugin:2.1.0:jmeter (jmeter-tests) > :configure @ apitest >>>
[INFO]
[INFO] --- jmeter-maven-plugin:2.1.0:configure (configure) @ apitest ---
[INFO] -------------------------------------------------------
[INFO] Configuring JMeter...
[INFO] -------------------------------------------------------
[INFO]
[INFO] <<< jmeter-maven-plugin:2.1.0:jmeter (jmeter-tests) < :configure @ apitest <<<
[INFO]
[INFO]
[INFO] --- jmeter-maven-plugin:2.1.0:jmeter (jmeter-tests) @ apitest ---
[INFO]
[INFO] -------------------------------------------------------
[INFO] P E R F O R M A N C E T E S T S
[INFO] -------------------------------------------------------
[INFO] Invalid value detected for . Setting pause to 0...
[INFO]
[INFO]
[INFO] Executing test: 查询书籍.jmx
[INFO] Writing log file to: /usr/jsx/apitest/target/jmeter/logs/查询书籍.jmx.log
[INFO] Creating summariser
跟我现象一样,解决了吗?
对,不懂 java 的业务测试人员用起来确实有难度,以后将转成 xml 形式或自定义语法的文本化脚本,同时引入脚本录制功能,尽量方便维护修改。
链接是永久有效的,进入后如下:
业主网络是不是有问题?以后代码共享在 git 上,更专业点
我理解的是把 java 写的业务脚本转换为 xml 形式,方便用户以后修改是吗
业务发生比那话无非要修改业务脚本、控件定位、测试输入数据 3 种,现在已经做到脚本/控件/数据的唯一性,哪个部分发生变化只修改一次即可。不知道业主说的 “自动或者选择拾取关键字,生成关键字对应的 xml” 啥意思?
类似 qtp 的快速模式吧,以后打算把框架平台化,让用户直接在平台上写脚本,类似如下格式:
输入 | 登录页.用户名输入框 |userid;
输入 | 登录页.密码输入框 |password;
点击 | 登录页.登录按钮;
var1=获取 | 首页.右上角登录信息.用户名;
var2=获取 | 首页.右上角登录信息.用户名 | 是否激活;
支持页面操作和数据获取,同时引入循环和条件判断机制,这样任何复杂业务场景应该都能实现,效果跟我现在用 java 写脚本完全一样。
@testly ,
2,同时上层框架化的话局限性挺大,让别人看到上层的东西会感觉技术 sense 有点 low
答:确实 low 点 ,我本来就业务测试出身,对技术不是很敏感,之前想的是在自己的技术范围内只要满足自动化需求就 OK 了,不过考虑为了框架扩展必须使用标准技术,如项目改成 maven,数据存储用 xml/yml 之类,使用关键字驱动方式脱离 java 环境下脚本编写等。
3,其次有一些复杂场景支持不是很好
答:如果指的是复杂业务场景,我是用业务单元形式写脚本,测试用例全部通过这些业务单元实现脚本,这些业务单元通过参数驱动调用,实现脚本重复利用,任何复杂业务都可以实现且保证脚本和数据唯一性,可以参考下面的用例案例。
整个用例先后经历 15 个业务单元完成脚本,在 4 个结果页面进行断言判断,算是业务比较复杂的用例。业务单元和测试用例框架提供了对应的实现机制,只要业务分析到位,觉得任何复杂用例都能快速编写脚本。
有相关说明文档吗
我的思路是:每个测试手机各自编写上传头像的脚本,调用时根据设备 udid 或设备名称定位是哪个手机,再调用对应的上传头像的脚本,虽然麻烦但可以考虑下。目前也没找到直接通用的办法。
appiumserver 启动多个,每个 server 用不同端口,每个手机通过端口分别关联到一个 appiumserver 同时 udid 设置为自己的设备编号,设备编号可以通过命令 adb devices 查看
掌握 appium 很有帮助,支持!!!,必须收藏
看来目前最简单的方式还是 2 楼提的建议,先打开 appium->设定等待操作->手动操作进入目标页面->执行脚本。谢谢大家指点。
#5 楼 @autotester ,执行 adb shell am start -S /这个命令,效果跟 driver.startActivity() 相同,都是从 app 的主页面开始进入,无法直接切换到中间页面
#6 楼 @seveniruby ,你是说 capabilities.setCapability()这个参数设置是吗?所有参数都看过,没有直接启动特定页面相关的参数,APPActivy 只能设定 launchableActivity。
有个疑问,能不能先手动移动到 app 的某个 activity 页面,然后启动 appium 捕获当前 activity 页面继续执行脚本?这个功能在调试脚本时很有用,无需从头开始执行。目前 driver.startActivity 只能重新打开 app,有没有办法实现以上想法?