《大话移动 APP 测试》
2015-12-27 17:06
531 查看
《大话移动 APP 测试》
wiki: Software testing第5章 常用工具介绍和实践
Android、iOSMonkey
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.htmlwiki: Software testing
《测试之美》、《微软测试之道》、《Google 测试之道》
《Rework》、《高效能人士的七个习惯》
相关文章推荐
- 芒果iOS开发之Merge branch 'master' of XXX Please enter a commit message to explain why this merge
- Android开发和測试实践 - 接入友盟统计
- android之旅12 activity之间的跳转与生命周期
- Android M 新的运行时权限开发者需要知道的一切
- android偏好设置
- iOS开发之数据存储(偏好设置)
- Error:(2, 0) Plugin with id 'com.github.dcendents.android-maven' not found解决办法
- Android Design Support Library(一)用TabLayout实现类似网易选项卡动态滑动效果
- Android用TabLayout实现类似网易选项卡动态滑动效果
- IOS九宫格设计源码(外加添加删除功能)
- Android 中 Intent.Action
- 使用Bmob ---数据服务(提交数据,查询数据)
- Android 系统名字、版本、API level的对应关系
- 25.SwiftyJSON转换JSON的注意
- Android 报错:Error: Apostrophe not preceded by \ (in ... ...)
- iOS开发之数据的写入与读取(plist存储)
- 关于『65535问题』的一点研究与思考
- ios app 上架AppStore
- Android中MediaButtonReceiver广播监听器的机制分析
- iOS 代码规范