手机自动化测试技术漫谈及OPhone自动化测试概览
笔者在从事OPhone自动化测试工作过程中,对业内开展自动化测试的情况进行过一些粗浅的研究和总结。总体来说,目前手机自动化测试技术大体可分为白盒测试和黑盒测试两种。
白盒测试
在手机自动化测试领域,白盒测试包括两种类型,第一种是传统软件测试理论中所指的白盒测试,即依赖被测对象的源代码具体实现的测试方式。在手机软件开发过程中所做的单元测试即属于此类型。第二种则是结合手机软件自身特点,对传统概念做了一些延伸。它指的是通过解析、控制和校验手机GUI控件元素对手机进行测试的方式。这种方式不必一定依赖于被测对象的源代码,但对于被测对象的GUI实现有较强的关联性。这种类型的白盒测试一般用于验证应用程序功能和界面显示正确性的功能测试。如果测试框架足够好,也可用来做自动化的性能测试、压力测试等。
目前几大主流手机操作系统对上述两种白盒测试方式都有很好的支持。例如,对于第一种类型:iOS在开发环境Xcode中提供了OCUnit框架;Android在SDK中集成了JUnit框架;Windows Phone 7可以使用Silverlight Unit Test Framework;Symbian在开发工具中提供了EUnit框架,同时还有Symbian OS Unit框架可供使用。总得来看,各个系统采用的都是xUnit这一业界广泛接受的理念。
图1 Android开发环境中集成的JUnit测试框架
第二种类型的白盒测试实现起来要比第一种类型复杂,因为它不仅要做到对界面组成元素的解析、识别、调用和比对,更要做到对被测应用所在进程做诸如发送触屏事件、发送按键事件这样的操作控制。当前,除Windows Phone 7尚不明确外,各主流系统均提供了这样的能力,如iOS系统从4.0版本开始增加的UI Automation instrument、Android从发布伊始就提供的 JUit和Instrumentation、Windows Mobile 6在SDK中集成的WMTF框架、Symbian 3基于QT开发的Testability Driver框架。图2 Symbian 3的Testability Driver框架基本架构图
图2 Symbian 3的Testability Driver框架基本架构图
白盒测试具有测试效率高、测试运行稳定性好、不易受UI改动影响等优点,但测试脚本往往采用编程语言(Android/OPhone的白盒测试脚本使用java语言开发)、脚本开发技术门槛高,同时会受到操作系统本身特性的限制,跨进程测试实现困难(在Android/OPhone上,如在编辑彩信时跳转到文件管理器里挑选附件,后续测试脚本是无法执行的,因为文件管理器和彩信不在同一个进程中)。
评论