ThreadingTest(简称TT)第一期是一款Android白盒测试工具,使用离线检测的方式,在保护用户源代码的基础上,运用插装、第五代覆盖率等技术,为开发工程师与测试工程师提供一套高效可量化、可视化的交流工具。对比其它测试工具,TT在自动化测试时,会对应测试用例自动生成测试用例和代码之间的关系以及函数覆盖率,并且以TT自带的双向追溯图进行展示,在整个自动化测试进行过程中,TT还会以示波器界面可视化的监控整个自动化测试中每时每刻获取的测试数据。
基于其它测试工具测试时,TT还开放了API接口进行整合,使原本的自动化操作不用进行任何的改变,通过TT的API接口连接,TT示波器获取其它测试工具的测试数据,并生成会对应测试用例自动生成测试用例和代码之间的关系以及函数覆盖率。目前开放的Java语言的API,直接使用Java语言作为脚本预言的单元测试工具,自动化测试工具都可以通过该接口与TT进行整合。这样就可以实现在运行测试用例的同时,在TT中记录用例所对应的代码执行逻辑信息。
演示:测试场景说明: 当使用其它测试工具进行自动化测试时,如果在测试过程中出现无法干预或正在进行的自动化测试过程时,需要对测试过程进行测试用例的区分,例如登录和退出,在运行一次自动化测试时,同时执行了这两个测试用例,就可以在程序中,添加这两个测试用例的开始和结束点,从而达到区分两个测试用例的目的。这样就可以通过TT来实现测试用例与源代码的关系的自动建立,例如本例子中将建立登陆操作对应的代码以及退出动作所对应的代码。
测试步骤: 以登录退出为例,若存在以下代码结构: …
classHomePage { public void login(){ … // 登录的相关操作 }
public void logout(){ … // 退出的相关操作 } } |
1、将JavaParser-Android.jar包引入到工程中; 2、import com.zoa.writeToMQ.UnitTest; 3、添加开始结束标识。 在login函数的开始添加登录测试用例开始的标记,在函数结束前添加登录测试用例结束的标识;同样,在logout函数的开始和结束也可以添加相应的标识。添加后的代码为:
… import com.zoa.writeToMQ.UnitTest;
classHomePage { public void login(){ UnitTest testLogin = new UnitTest(“HomePage/login”); … // 登录的相关操作 testLogin.close(); }
public void logout(){ UnitTest testLogout = new UnitTest(“HomePage/logout”); … // 退出的相关操作 testLogout.close(); } } |
4、使用TT对程序进行插桩并测试,详见:http://www.threadingtest.com/xwiki/bin/view/ZOA%7C4.演示/Android+程序测试配置
手动使用TT测试基本原理: 为了让读者理解TT的接口调用,我们这里说明下在手动模式下TT是如何录制用例的代码执行逻辑与覆盖率信息的。
在TT中,区别测试用例是通过使用不同的测试用例Id进行划分的。在测试的开始添加测试开始标识并在结束添加结束标识,其目的为,开始标识会通过一个网络连接或USB连接,通过一个字符串从TT获取一个测试用例Id,然后通过先前TT对源代码的插桩,被测程序内部会不断地向TT示波器发送数据,并且会在消息中使用从TT获取到的测试用例Id,从而做到区分测试用例。
当调用发送结束标识后,发送的消息将会使用默认的测试用例Id,TT接收到后,会将收到的数据存储到默认勾选的测试用例中,从而不会与之前的测试用例混合。 例如在进行一个单元测试时,每一个单元测试对应一个测试用例,从而生成多个测试用例,过程如下:
1、打开TT实时监控示波器界面,勾选一个测试用例。
2、点击开始,然后运行测试。
运行时,数据波形图显示接收到的被测程序发送的数据。
3、测试结束后,点击停止,刷新测试用例树,即可出现划分的测试用例。
1、单元测试开始标记 com.zoa.writeToMQ.UnitTest.UnitTest(String unitName)
publicUnitTest(String unitName)
当调用这个构造函数时,即标志着一个单元测试的开始。创建一个新的单元测试的测试用例。 此函数会发送一个unitName到TT,由TT根据名称创建一个测试用例和测试类型。通信过程为一个阻塞过程,只有当通信结束或发生严重错,函数才会返回。 进行单元测试时,必须在TT端选中一个测试用例,生成的单元测试用例组会首先生成一个与选中的测试用例同名的测试类型,然后根据unitName生成的测试用例和测试类型都生成到该测试类型下。 参数: unitName–测试用例名称,名称以“/”进行分割,最后一部分为测试用例名,前面部分为测试类型路径,如“ThreadingTest/Android/Unittest”其生成的测试用例结构为: — ThreadingTest 测试类型 |— Android 测试类型 |—Unittest测试用例
2、单元测试结束标记 voidcom.zoa.writeToMQ.UnitTest.close() throws IOException
public void close() throws IOException
结束单元测试,一个单元测试只能调用一次该函数。 参数:
返回值: |