2010年是淘宝无线突飞猛进开创无线新业务的一年。而从2011年初开始,淘宝技术质量部
自动化测试组便致力于
手机自动化框架的调研和开发
工作。TMTS(Taobao Mobile
Test System)框架,正是尝试从
Android和IPhone入手,建立无线测试领域的自动化测试整体解决方案。经过前段时间的开发,及业务线试用,TMTS框架Android部分已经趋于稳定。而IPhone的自动化框架也已经开发完成,目前正在业务线试用阶段。
本文重点介绍TMTS框架的Android部分,这部分目前已经开源。开源链接: http://code.taobao.org/project/view/565/
在框架开发前,我们先是通过无线业务的同学,收集了明确的需求:
支持对release版本的测试。即不需要为自动化测试专门打包。
支持
敏捷开发和持续集成。每天自动打包,自动运行
测试用例,给出测试报告。
支持内嵌WebView的自动化。淘宝有大量的应用有WebView的场景,需要自动化。
在应用退出时调用killProcess杀掉自已进程,不应影响自动化测试的结果收集。
之前也用过Robotium框架,但由于淘宝应用的特殊性,导致自动化能运行,但最后的结果收集不到,除非把killProcess代码注释掉再编译。
针对上面的需求,TMTS使用Android SDK的Instrumentation机制作为自动化框架的基础,保证测试工程可以在不改写和重编译被测应用的基础上,与被测应用运行在同一个进程里,从而达到自动化测试的目的。针对淘宝无线的自动化测试场景,我们对原有Android控件进行了一次抽象,基类为TmtsView,这里定义了所有控件共有的操作,如click等。对于SDK中能编辑文字的控件如TextView,EditText统一抽象为TmtsTextView。对于容器类的View统一抽象为TmtsViewGroup,等等。简化了控件类型的选择,让测试脚本更简单易读。
持续集成是
自动化测试框架走向企业级应用的必经之路,只有持续集成、每日回归跑起来了,自动化才能有收益。我们对Athena框架进行了二次开发,加入了失败详情收集,失败截图上传,和运行异常处理的功能,并与hudson集成直接查看运行结果。同时我们还把每日构建也做起来,从开发的svn分支自动打包,自动测试,生成报表。这样每天只要查看运行结果就可以了,大幅度提高了效率。
其它的很多功能,这里就不一一说明了。通过下面的表,列举TMTS,Robotium和Android Native Driver的特性与区别。