《大话移动 APP 测试》

wiki: Software testing

第5章 常用工具介绍和实践

Android、iOS

Monkey

Android SDK 提供的一个工具:发送伪随机的用户事件流,压力测试。

adb shell monkey -v 10

tips:

  • 一般 Monkey 测试的日志很长,报告前需要过滤出有效且不重复的日志。
  • 同时记录 logcat 日志。因为有时候仅仅 monkey 的崩溃日志不足以定位问题。
  • 记录 seed。才能重现、回归。
  • 阅读 monkey 源码,如果 monkey 的伪随机流程不能满足需求:
    • 可以修改代码重新编译。把编译出的 Monkey.jar adb push 到要测试手机的 /system/framework 下就能用了。
    • 可以写个脚本给 monkey 执行。

Emulator

Android:所有在模拟器上进行的测试都仅作参考。

  • 相机、wifi 等
  • 同分辨率、同系统版本下,在界面显示(UI)和某些按钮的响应上往往有比较大的差异。

iOS: 界面上没差异。

安卓版本不可能遍历所有机型,可以通过集成 友盟、Flurry 等得到用户机型分布,前 10 机型基本上就是测试重点了。第三方兼容测试平台(比如 Testin)等数据也可以作为参考。还有就是公司和部分用户内测。

telnet 到模拟器可以进行很多call、sms、geo、power等操作。

➜  ~  adb devices
List of devices attached
emulator-5554   device➜  ~  telnet localhost 5554
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: type 'help' for a list of commands
OKhelp
Android console command help:help|h|?         print a list of commandsevent            simulate hardware eventsgeo              Geo-location commandsgsm              GSM related commandscdma             CDMA related commandskill             kill the emulator instancenetwork          manage network settingspower            power related commandsquit|exit        quit control sessionredir            manage port redirectionssms              SMS related commandsavd              control virtual device executionwindow           manage emulator windowqemu             QEMU-specific commandssensor           manage emulator sensorsfinger           manage emulator finger printgsm call 15555218135    #模拟器默认号码

MonkeyRunner

With monkeyrunner, you can write a Python program that installs an Android application or test package, runs it, sends keystrokes to it, takes screenshots of its user interface, and stores screenshots on the workstation.

  • 用来跑 python 脚本。
  • 可扩充api。
  • 支持录制、回放。

Hierarchy Viewer

DDMS(Dalvik Debug Monitor Service)

Compatibility Test Suite

Android 提供的兼容性测试框架。只有通过 CTS 测试的设备才能获得 Android 商标和使用 Android Market 的权限。其中有不计其数的测试代码,覆盖 Android 系统的各个模块,非常值得借鉴。

Tcpdump/WireShark

网络分析。

……(关于日志分析)有兴趣的通许可以先熟读 TCP/IP 协议卷一到卷三……

FindBugs

静态代码分析工具。

Lint

Android Studio 中,Lint 结果显示在 Inspection 中。

Charles

抓包。

Instruments.Automation

Instruments 是 Xcode 自带的测试工具,包含一系列的实用工具。
Automation 是 Instruments 中的一个工具。用 JavaScript 写脚本进行 iOS 设备的界面自动化测试。

第6章: 常用框架介绍和实践

Instrumentation

安卓执行测试活动的核心就是 Instrumentation 框架,可以实现界面测试、功能测试、接口测试甚至单元测试等。Instrumentation 框架通过在同一个进程中运行主程序和测试程序来实现这些功能。市面上的界面自动化工具多是对它的封装。

以下是我在 Android 上从开始思考的两套思路
* 以 Python 作为自动化测试方案的主导。Python 的 os 模块用来调用 adb,负责启动和关闭模拟器;adb 负责安装和卸载应用;MonkeyRunner 负责模拟应用必须的操作(比如登陆等);MonkeyRunner 负责截图以及对比最终结果。
* 以 Python 作为自动化测试方案的主导。Python 的 os 模块用来调用 adb,负责启动和关闭模拟器;adb 负责安装和卸载应用;Appium 负责模拟应用必须的操作(比如登陆等);MonkeyRunner 负责截图以及对比最终结果。

不过最终两套方案都没有被采纳。我自己最后才去的方案是:

Python 作为自动化测试方案的主导。Python 调用 shell 脚本负责启动和关闭模拟器;adb 负责安装和卸载应用;MonkeyRunner 负责屏幕的解锁;Instrumentation 负责应用内的操作以及界面控件的验证;MonkeyRunner 负责最终界面的截图和保存;Python 的 PIL 模块负责图片像素级别的对比。

Emma Code Coverage

  • 代码覆盖(code coverage)工具。
  • 检查测试测试用例对代码的覆盖率。
  • 也可以统计黑盒手动测试的代码覆盖率。(添加类似thread.sleep()方法,sleep 过程中手动操作被测试应用。)

robolectric

第8章: 性能测试介绍和实践

Emmagee

Instrumentation

在 Android CTS 中可以找到参考。

HPROF

HPROF 是一种后缀为 .hrpof 的文件。一个 heap dump 会保存为一个 .hrpof 的二进制给文件。

Gfxinfo

Systrace

TraceView

Instruments -- Leaks

Android 多分辨率自动化实践

Python 负责总体集成:Shell 脚本控制启动和关闭不同分辨率的 Emulator;MonkeyRunner 负责模拟非应用的操作以及协助截图;Instrumentation 负责应用内的操作;最后由 Python 进行图片对比测试。

tips

  • 测试的核心是用例设计。
  • 执行用例的时候,意义在于学习别人写用例的思路;写用例的时候,意义在于学习怎么能够更好地分析需求。
  • 主动,也许是测试从业人员最终要的品质。
  • 学会判断轻重缓急。学会合理安排时间进行测试,不要只是说时间紧人少,人是活的,重要的在于自己的策略和沟通。
  • 自动化测试是为了提高效率,帮助做回归。不是为了解放手工测试人员。
  • 分层思想。

todo

  1. http://developer.android.com/intl/zh-cn/tools/testing/index.html
  2. wiki: Software testing
  3. 《测试之美》、《微软测试之道》、《Google 测试之道》
  4. 《Rework》、《高效能人士的七个习惯》

转载于:https://www.cnblogs.com/shang1jk/p/5080395.html

《大话移动 APP 测试》相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. CompletableFuture CompletableFuture.supplyAsync 异常处理
  2. 数值和字符串互相转换
  3. nginx lua 小项目:根据 user_agent 显示不同的页面,附带和 php 性能的对比
  4. Beyond Compare配置
  5. 语言差异引起的问题解决一例
  6. python输入序列语句_Python基础教程(一) - 序列:字符串、列表和元组
  7. 恰当地利用中间结果集
  8. MySQL中关于OR条件的优化
  9. F5补丁修复及几点命令
  10. mysql中float、double、decimal的区别
  11. “21天好习惯”第一期-15
  12. 【爱你 祖国】细看我国智能无人机如何从无到有?都是被逼出来的!
  13. 《MATLAB智能算法30个案例》:第11章 基于多层编码遗传算法的车间调度算法
  14. IP:网络上的击鼓传花
  15. python-26-字典:当索引不好用时
  16. 程序人生,心态变化!
  17. 【电力电子技术】 THE BUCK-BOOST 升降压斩波电路
  18. VMvare win7软件闪退
  19. 云队友丨追求复利人生,升级思维模型的四个层级
  20. 杭州还不错的IT公司,想跳槽了,不知道下一站在哪里

热门文章

  1. Scala @BeanProperty注解生成getter/setter
  2. Linux netstat -tunlp查看端口占用情况
  3. Python Django模板templates渲染及配置
  4. redis List的用途及常用命令
  5. 沈抚新区机器人产业园怎么_“智慧物流智能AGV技术交流峰会”在长春中日智能制造产业园成功举办...
  6. aspx网页_http://jwxt.xmdh.com/home.aspx厦门东海职业技术学院教务网络管理系统
  7. 绝对强大的三个LINUX指令: AR, NM, OBJDUMP
  8. OS / Linux / epoll 各种事件解析
  9. 文件系统_Docker文件系统实战
  10. 为什么qt这么强大没人使用_就是这么强大!为什么火箭队能始终压制76人,巴特勒一语点破玄机...