今天给大家引入一种非入侵式UI的自动化测试方法,是想让大家在写手头脚本的同时也能看到其他的玉石
针对做自动话测试的工程师来说,当拿到测试对象的时候,第一时间会去想这个系统/软件有没有一些built-in的测试方法。比如针对Android来说,我们根据android的发展历史可以枚举出很多
-
基于API的自动化测试
- 根据测试的功能模块,会去调用一些sdk写一些APP来测试这些功能是否工作。比如,针对Video的测试,会去写个简单的app (或者调用系统intent)来打开指定媒体文件;根据TCD的说明,设置参数。这样的测试更多的比较适用于集成或者开发时候的测试,用于简单的验证功能的可用性。缺点是 无法模拟用户的行为,会漏掉很多用户场景。
-
基于UI的自动化测试
- 举例来说,如果针对android,Google本身已经提供了很多测试方法。一路走来,Google提供了Monkey, Monkeyrunner, InstrumentationTest, Robotium(instrumentation test的变种,三方), uiautomator. 其中UI automator已经是功能非常强大的模拟人行为的自动化方法。笔者所在的部门从android出世就紧跟google的步伐频繁更换各种测试工具(很折腾)。当测试针对跑起来的时候,有些时候是发现问题很难定位。比如Activity的instrumentation测试,它跑起来的时候和被测试app是在同一个进程中的,这本身是一种HOOK的机制,针对比较复杂的错误来说,往往不容易说清楚是app的问题还是脚本本身的问题。包括uiautomator, 因为这本身是一种入侵式的测试。
说这些是为了引入标题的意义,下面这个测试方法就是非入侵(non-intrustive),自动化的过程是真的模拟人的行为的。是芬兰的一批人开发的,关键的技术是用摄像头实时地拍出当前手机的画面,然后用图像识别技术来找出目标图标,然后用机械手指去点击,这是测试界的机器人了。
这里可以看到是这个测试装置是如何工作的,很酷,好处在这里就不用文字多说了. Optofidelity
______但是______
- 太贵了,小公司很难有钱是买这个高级货
- 当系统(APP) UI变化的时候,照样会遇到script需要去更新维护的场景