您的位置:首页 > 移动开发

《大话移动 APP 测试》

2015-12-27 17:06 531 查看

《大话移动 APP 测试》

wiki: Software testing

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

AndroidiOS

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
OK

help
Android console command help:

help|h|?         print a list of commands
event            simulate hardware events
geo              Geo-location commands
gsm              GSM related commands
cdma             CDMA related commands
kill             kill the emulator instance
network          manage network settings
power            power related commands
quit|exit        quit control session
redir            manage port redirections
sms              SMS related commands
avd              control virtual device execution
window           manage emulator window
qemu             QEMU-specific commands
sensor           manage emulator sensors
finger           manage emulator finger print

gsm 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

http://developer.android.com/intl/zh-cn/tools/testing/index.html

wiki: Software testing

《测试之美》、《微软测试之道》、《Google 测试之道》

《Rework》、《高效能人士的七个习惯》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: