#2 楼 @lihuazhang
正好上个版本碰到个 bug:
需求:
界面上有一个商品数量编辑框,还有一个显示总价的标签,用户修改商品数量后自动更新总价,如果商品数量小于 1,重置数量为 1
场景1:
想把商品数量从 1 改成 9
重现步骤:
1、点击商品数量编辑框,点 backspace 删除 1
结果:
请求后端更新总价,因为商品数量小于 1,重置数量为 1
2、点击商品数量编辑框,点 backspace 删除 1
结果:
请求后端更新总价,因为商品数量小于 1,重置数量为 1
场景2:
想把商品数量从 1 改成 1111
重现步骤:
1、点击商品数量编辑框,弹出键盘,输入1
结果:
请求后端更新总价,收起了键盘
2、点击商品数量编辑框,弹出键盘,输入1
结果:
请求后端更新总价,收起了键盘
容易想到的实现是在编辑框失去焦点时再触发更新,但 Android 上貌似没什么好办法。
淘宝、京东的购物车会再弹出一个窗口用于修改数量。
不考虑 Android ,如果请求的时候断网了,数量和总计还是会不匹配。
另一种常见的 bug
需求:
用户名不能包含特殊字符
测试结果:
前段有做验证,但用户名包含特殊字符的 http 请求可以注册成功
没有相关知识,这里是盲点
技术实现、业务场景、用户体验……知道的越多,越能想到更多的测试场景
不过现实世界总是那么多的可能性没办法去穷举,如果知道代码里是大于小于整型,可以把 1 到 9 当等价类
如果知道是企业内部办公系统,不做这种测试也可以
知道越多,也越能去分类,去判断优先级
除了 vsftpd ,能通过 yum 安装其他包?
能 ping 通 mirrorlist.centos.org 吗?
能 wget 下载 http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os 吗?
google 一下,有 DNS 有问题的,有网络配置错的,有被墙的……
GET /index.html HTTP/1.1
Host: www.example.com
1234
比如 http 报文是这样的,被空行分成上下两部分,下边是 body
url 后接的 ?a=1&b=2 这部分一般叫 query string,而不是 body
1、如果服务器不能正确响应带 body 的请求,只能正确响应 query string 形式的请求,而文档上用的是 body,那应该改文档
2、Jmeter http sample 的 httpclient implementation 应该是不支持 get 方法带 body 的
3、postman get 方法也不能带 body,你图上还是用的 query string
翻了下 httpclient4 的文档,HttpGet 没有 .setEntity 的方法,java 那个 implementation 不知道是什么库
试试用 curl 发一个带 body 的 GET 到服务器,看下服务器日志,接收到的请求有没有 body,客户端有没有收到对应的数据
察看结果树 - 请求-raw 里是什么内容
#8 楼 @xiuqi
json 最后一行参数,去掉逗号,用双引号
在线 JSON 校验格式化工具
1、一千个人有一千种封装方法,看这种代码猜不出到底 appium 干了什么
2、那就看 server log 吧,不知道什么奇怪的写法,查找元素执行了很多遍,虽然开始报了很多错,但最终还是找到元素了
3、那继续往下看吧,在id/teledt
输入13816244956
,成功了,在id/loginpswedt
输入liuxinyang1234
,成功了,点击id/loginbtn
,成功了
4、再往下,删除了 id 是98ab7e67-6ea4-492b-babc-eaf84210f9f3
的 session ,正常关闭了 appium
5、再往下,用被删除的 session 98ab7e67-6ea4-492b-babc-eaf84210f9f3
查找id/icon_three
,截图,又删除 98ab7e67-6ea4-492b-babc-eaf84210f9f3
6、下面没了
jenkins 作为 windows 服务时,应该是浏览器在无界面的状态下执行测试,也能打开的
两个人同时请求了一个改变数据的接口会有问题吗
准备数据和数据恢复具体怎么实现呀?
看UiSelector文档,没有.content-desc()
方法
另外,你没有给出查找时对应的 log ,不确定的时候附上全部 log 就好了
info: [debug] Running old fashion reset (reinstall)
貌似要重新安装,你加上这个试一试
desired_caps['app'] = '/abs/path/to/my.apk'
看下这个 issue 的评论
reset() breaks Appium if the App has been launched with "no_reset=true"
之前用过 selendroid 模式?现在手机上的 app 是 selendroid 模式下安装的?
你发的 Appium 日志开头就已经开始关闭 Appium 了,不知道前面的执行结果是什么
第二个问题,代码贴全
1、基于 Uiautomator 提供的 .getCurrentActivity()
方法获取的当前 Activity 并不准确, 如何获取当前页面的 Activity 名称?
2、有可能整个 App 只有一个 Activity ,关于 Android,用多个 activity,还是单 activity 配合 fragment?
3、Appium 本来就有.start_activity方法,是用三楼说的 intent 实现的,不是所有 Activity 都可以用这个方法打开
4、Android 测试中获取包名、Activity 的方法总结
没想到有什么万能的方法可以在各种情况下直接跳到想测试的页面
Requires Android 4.3 (API level 18) or higher.
看下这里是不是 WebView