而对于需要操作数据库的情况,可通过adb shell sqlite3命令实现。
不过测试必须有检验结果的校验点才行。这里可以使用图像识别的方式进行结果的校验。识别可以采用两种方法:
1、利用系统viewserver中提供的接口获得当前界面上控件的属性信息,通过对比测试前后属性信息的变化进行结果校验;
2、利用ddmlib包中提供的接口自动截取测试前后的屏幕截图,通过对比两幅截图相同位置的图像信息是否存在差异来进行结果校验。
以上是基于键盘事件和图像识别的自动化测试方法的基本原理。在实际实现过程中,还需要做大量的工作,如提供友好的用户使用界面、提供更简单易懂的脚本格式、支持循环或分支等复杂的测试逻辑、支持更复杂的触摸屏操作、实现多设备互通及交互操作、支持测试结果的自动生成等。
这种自动化测试的实现方式不受系统应用程序进程间安全机制的限制,突破了JUnit+Instrumentation框架下自动化测试不易跨应用测试的限制,而且也能实现多部终端的交互操作,为实现交互性系统测试的自动化提供了解决方案,同时也非常适合于替代重复性的压力测试类型的手动测试。
该方式的缺点是:首先,获取屏幕信息时存在时延,测试执行起来的效率会降低。第二,如果大量采用基于屏幕坐标上的触摸屏点击操作,需要维护多套测试脚本已适应不同屏幕分辨率的产品。第三,与UI实现紧耦合,如果应用的UI设计变化,则需同步修改测试用例甚至重新设计测试用例。
基于OPhone API的自动化测试
OPhone平台开放的API中,很多都适合于开发测试程序。如利用ContentResolver可以操作应用的数据库,利用Graphic、Media、OpenGL等包中提供的接口可以实现对图片编解码、音视频媒体编解码、图形绘制能力等方面的测试。
也可根据需要,同时在测试程序中加入Instrumentation以扩展功能。
利用API的这种方式,最适合于开发小巧的自动化测试工具,例如生成联系人记录的数据生成工具,可以连续拨打电话的压力测试工具、可以评估系统性能的Benchmark类工具等。由于它没有基于特定的测试框架,很难满足测试任务调度和组织的需要。
总结
以上介绍的三种自动化测试技术各有所长,如能在实际的工作中根据不同的测试类型和测试需求灵活使用,一定能提高OPhone平台及产品的测试效率和测试质量。
作者简介
金镝,中国移动通信研究院终端技术研究所项目经理。OPhone测试与质量团队成员,目前主要负责OPhone平台自动化测试方面的工作。