TMTS(Taobao Mobile Test System)是一个用于Android的UI自动化测试工具,目前已经在淘蝌蚪上开源:http://code.taobao.org/project/view/565/,可以下载源代码和示例程序,下面以特性为主线介绍这部分。
使用Java语言编写测试代码
使用TMTS时,测试代码编写环境与应用开发环境完全相同,并且使用与应用开发相同的语言Java编写测试脚本,有助于测试人员编码能力的提高,提高阅读开发代码和定位Bug的能力。
多种获取控件的方式
TMTS目前可以通过三种方式获取控件。
第一种方式是通过id查找:
public <T extends TmtsView> T findTmtsViewById(String name, Class<T> returnType) |
通过传入在布局文件中声明的控件id获取控件,类似在应用开发中使用到findViewById()
方法。所不同的是这里传入的是String类型参数,通过反射拿到其int值,因而测试工程也不需要再依赖于应用工程。
第二种方式是通过文本查找,通过传入控件上的文本,可以获取TextView或者其子类:
public <T extends TmtsView> T findTmtsViewById(String name, Class<T> returnType) |
第三种方式通过索引查找,获取当前界面内所有指定类型的控件,然后通过索引返回指定控件:
public <T extends TmtsView> T findTmtsViewByIndex(int index, Class<? extends View> view, Class<T> returnType) |
面向对象的API
获取到原生控件之后,会返回对应的TMTS类型控件,里面封装了对控件进行操作的API。这样可以让测试代码与应用代码有相同的OO风格,也有利于测试人员读懂应用代码,下面是一个测试方法的实例:
public void testScrollListInDialog() throws Exception { pressMenu(); findTmtsTextViewByText("Dialog With List").doClick(); TmtsAbsListView listView = findListByIndex(0, TmtsAbsListView.class); listView.scrollToLine(9); assertEquals(9, listView.getLastVisiblePosition()); findTmtsTextViewByText("OK").doClick(); assertEquals("Botton OK in dialog with list is pressed!", findTmtsToast("").getText()); } |
而且面向对象的API受UI变动影响要较面向过程小,能编写出复用率高的测试脚本,这点在测试脚本达到一定数量后非常重要。
支持多个Activity之间的跳转
TMTS支持对多个Activity的测试,可以编写测试代码对应用的一个场景进行完整的测试,真实模拟用户的操作。
对原生控件的良好支持
TMTS非常好的支持了绝大多数原生控件,包括ContextMenu和Toast。
提供了对WebView的支持
TMTS目前提供了对WebView的支持。
良好的可扩展性
TMTS控件类采用了OO的设计思想,与原生控件的继承关系类似,用户可以根据自身应用的实际情况对框架作出扩展。
完善的日志系统
框架会记录每个测试类执行过程中的关键步骤日志,比如查找一个控件,在框架异常或是测试代码异常时会记录当时的调用栈信息,并截取屏幕保存至SD卡。所有的日志信息都会在Logcat中显示,同时持久化保存至设备SD卡,为异常或Bug定位提供更多有用的信息。
支持项目持续构建
可在Hudson上配置进行持续构建,具体步骤请参看http://code.taobao.org/trac/TMTS/wiki/ZhWikiStart,这里有非常详细的说明文档。
TMTS使用方法
1、首先搭建环境,也就是Android应用开发的环境,需要下载JDK1.5及以上版本,Android SDK,ADT,Eclipse3.5及以上版本。具体的过程这里就不叙述了。
2、到http://code.taobao.org/project/565/viewSvn/下载TMTS源代码,其中Tmts是框架代码,将其导入Eclipse建立一个Java工程。TmtsApp是示例应用,TmtsTest是示例测试工程。
3、在Eclipse中建立一个Android Test Project,工程配置TestTarget一项选择This project
4、修改测试工程的Manifest文件,修改instrumentation标签的android:targetPackage属性,改为被测应用的包名
5、接下来就可以开始编写测试代码了,更详细API使用方法请参看TmtsTest工程中的代码。
6、Tmts Wiki是http://code.taobao.org/trac/TMTS/wiki/ZhWikiStart。
版权声明:51Testing软件测试网原创出品,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。