淘宝Android自动化测试框架 – TMTS
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的特性与区别。
对TMTS框架感兴趣的同学,欢迎加入我们的开源项目。进一步的交流与合作,也可以联系太禅:[email protected]。
如果你是Android测试高手,或者对android测试有着深入的兴趣,加入我们吧,真的求贤若渴啊!