Threadingtest(简称“TT”)是一款跨平台、多语言、集测试与辅助开发于一体的智能测试工具平台android
一、智能化:链接开发与测试之间的穿线技术c++
第五代白盒覆盖率技术(实现美军标DO-178B MC/DC白盒结构测试技术,实现100%覆盖率)windows
二、可视化:超高速、大型、互动的图形化系统多线程
实时的示波器级的测试数据检测分布式
多个版本的代码比对视图ide
三、支持多种语言、平台和应用:一期已经发布了对J2EE应用的版本以及针对Android应用的版本函数
二期将发布苹果移动应用版本以及c/c++版本工具
三期向多线程高速运转的游戏类应用扩展。性能
支持Android/MAC OS X/Windows XP/7/2003/vista/Linux/Unix等多个系统环境单元测试
四、编译技术:100%Java语法支持,最高支持Java1.7版本
一、链接开发与测试之间的穿线技术
测试用例与程序代码的双向穿线
将覆盖率分析结果做为穿线链接开发与测试
帮助测试人员可视化开发人员单元测试结果
基于穿线技术实现的智能化回归测试用例选取技术
二、第五代覆盖率技术
多版本的累计覆盖率技术
无需监管的覆盖率搜集
支持在程序结构图、控制流程图等多种图形上显示覆盖率
支持分布式测试
实现美军标DO-178B MC/DC白盒结构测试技术
三、超高速、大型、互动的图形化系统
支持百万图元级别的超高速图形绘制技术
支持全屏以及超平滑的放大与缩小技术、平滑的移动技术
支持按照类分组汇集布图以及按照函数调用关系布图,层次数量可自由定义
支持逐级的子树展开和下钻功能。
四、实时执行边作测试边看示波器
实时的被测应用执行监控示波器
被测应用的每个动做能够被示波器检测到
能够从执行数据块数量、函数数量、条件数量等多个指标进行实时的监控
下面就让咱们对CSDN上,Android开源游戏项目捕鱼达人游戏进行深度的测试演示。
(1)安装JDK并配置JDK环境变量,要求1.6以上版本
配置环境变量 步骤:
a)右击“个人电脑”-->"高级"-->"环境变量"
b)在系统变量里新建JAVA_HOME变量,变量值为:C:\jdk1.7.0_01(根据本身的安装路径填写)
c)新建classpath变量,变量值为:
.;C:\jdk1.7.0_01\lib\dt.jar;C:\jdk1.7.0_01\lib\tools.jar;(程序根据本身的安装路径填写)
d)在path变量(已存在不用新建)添加变值:
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin(注意变量值之间用“;”隔开)
(2)安装Android SDK并配置其环境变量,Android SDK按照版本依靠测试Android项目所用版本,没有其余特别要求。
配置环境变量 步骤:
a)右击“个人电脑”-->"高级"-->"环境变量"
b)在path变量值添加platform-tools的目录路径,例如
E:\android-sdk_r20.0.3-windows\android-sdk-windows\platform-tools
(3)安装TT,完成后申请试用码,将申请回执右键附件的key.key文件放置TT安装根目录下,TT的示波器界面可正常使用。
申请key.key表格的填写:
测试一个工程以前,首先要在TT上编译被测项目,编译完成后TT面板上会加载被测项目和项目的相关信息。编译步骤以下:
1.TT主界面工具栏File->ManageProject,进入多版本管理界面。
2.点击Add按钮,添加一个新的项目。
s4这种s4这种
2.继续点击Add按钮,在新建的项目下面添加一个新的版本
4.进入编译界面,配置编译选项卡,点击build进行编译。
5.点击build以后会出现编译输出信息的窗口,编译完成以后会弹出Build Finish!的提示窗口,而且在用户指定的APK安装包生成的路径下生成了相应的apk包,这两个apk包之间是没有区别的。要跑测试用例,接受测试数据前,应安装这两个apk包中的任意一个。
ThreadingTest支持USB链接、wifi热点以及模拟器三种方式进行测试数据传输,您能够选择如下任何一种方式进行测试体验。(案例以USB链接方式作简单介绍)
(1)打开移动设备USB调试(注:移动设备须要打开USB调试,安装相应的移动设备驱动程序)
(2)确保Android设备于PC机链接正常(您能够采用百度手机助手或者360助手等方便查看链接状况),将上述生成的APK安装到USB链接的Android设备上。
(3)设置本机IP(注:USB接受数据必须修改ThreadingTest接收端IP为文件为本机IP),点击View菜单点选DTCView进入DTC监控界面点击设置ip按钮设置本机ip。
第一步:启动端口映射以前,请先检查Android SDK是否配置了环境变量
点击“开始”-->“运行”-->输入“adb”-->"Enter",若是能正常打印用法说明配置正确能够进行第二步操做,若是没有配置正确请参考“ThreadingTest Android App Edition安装配置”进行Android SDK的安装以及环境变量配置。
第二步:在ThreadingTest的安装目录下,查找adb-android.bat文件,点击执行,启动端口映射。
(1)点击TT工具栏View->DTCView进入示波器界面
2)在示波器界面的左侧,建立测试用例,针对捕鱼达人小游戏设计的测试用例列表以下:
一级测试用例类型 |
二级测试用例类型 |
测试用例名称 |
测试用例描述 |
游戏模式 |
简单模式 |
在界面不作任何操做 |
不对游戏界面作操做,时间消耗完结束 |
***强度为1进行游戏 |
在默认的***强度状况下进行捕鱼操做 |
||
转换***强度进行游戏 |
测试转换***强度进行游戏 |
||
游戏中点击暂停继续按钮 |
测试捕鱼界面的暂停/继续按钮 |
||
游戏界面去除音效的设置 |
测试音效设置 |
||
普通模式 |
在界面不作任何操做 |
同普通模式 |
|
***强度为1进行游戏 |
同普通模式 |
||
转换***强度进行游戏 |
同普通模式 |
||
游戏中点击暂停继续按钮 |
同普通模式 |
||
游戏界面去除音效的设置 |
同普通模式 |
||
困难模式 |
在界面不作任何操做 |
同普通模式 |
|
***强度为1进行游戏 |
同普通模式 |
||
转换***强度进行游戏 |
同普通模式 |
||
游戏中点击暂停继续按钮 |
同普通模式 |
||
游戏界面去除音效的设置 |
同普通模式 |
||
游戏设置 |
音效调节 |
在游戏设置选项中,调节音量,作测试 |
第一步:在TT中创建上述表格中的测试用例结构,右键DTCView界面左侧,添加测试用例类型,以下截图:
第二步:在一个测试用例添加完成以后,右击该测试用例类型,选择添加测试用例类型或者测试用例,按照设计的测试用例类型结构完成。下图是测试用例添加窗口
(7)选择示波器界面中刚创建的用例,选择start进行数据接收。链接移动设备有USB和热点等多种方式能够点击help得到相关说明。
主界面的CallGraph、ControlFlow、ListView三个视图是能够相互切换的,咱们能够经过查看每一个函数的各个覆盖率的数据,若是覆盖率没有达到100%的,能够选择查看函数的那部分代码或者分支执行的测试用例没有覆盖到。
ListView视图是以列表的形式显示了项目包含的全部函数的各类覆盖率信息和复杂度信息的统计数据,支持翻页、跳转指定页,按各列升序排序等功能。
设置跳转到CoverageView中的函数调转,选中的函数的SC0=80% ,SC1=88.9%,SC1+=88.9%,JC0=5, JC1=11,JC1+=9。
例如:SC0块测试覆盖。若是程序的全部可见段(程序块)至少被执行一次,则该段程序的SC0覆盖率达到了100%。
SC0= 被执行的块个数/该段程序包含的块个数(便可见段个数),JC0=一段程序的块的个数。也就是JC0是SC0的分母。一样JC1是SC1的分母,JC1+是SC1+的分母。
(1)以SC0为例子,怎么查看那些块没有被测试用例组覆盖到,引导测试人员完善测试用例,达到100%覆盖。
跳转到CoverageView界面,以下图,选择Coverage->SC0,覆盖率是80%,该覆盖块包含的静态代码块是5,覆盖到的是4块,能够看到蓝色的Block:978没有覆盖到,若是测试用例知足了if(i<5) 这个条件,那么Block:978块就会被覆盖到。
固然咱们也能够在ControlFlow视图部分看到相应的代码执行覆盖状况,以下图咱们能够看到return true;这个语句的执行次数为0,if(i<10)中的i<10的真分支没有被执行,只有假分支被执行过。
(2)TT提供的段覆盖包括SC0,SC1,SC1+,那TT为何光段覆盖率就会提供三种呢?
咱们都知道普通的段覆盖被看作最弱的覆盖率,而大多数软件测试过程当中所提到的段覆盖就是TT的 SC0覆盖,这种覆盖率标准只考虑覆盖代码中的执行语句块,却不考虑各类语句结构的分支覆盖状况等,所以每每被看作比较弱的覆盖,但倒是很必要的一种覆盖量度。TT考虑到普通的段覆盖的缺点,所以在SC0的基础上提出了SC1以及SC1+覆盖率,都是SC0覆盖率的增强版。
SC1——标准段测试覆盖。若是程序的全部顶端不可见段至少被执行一次而且知足SC0 100%覆盖,则该程序的一组测试用例知足SC1 100%覆盖。
SC1=被执行的代码块(包括不可见段0以及不可见段2)/该段程序包含的块个数(包括不可见段0以及不可见段2)
不可见段0(if和swicth)判断体结束后的不可见段,即if和switch中条件断定式不知足的状况,会存在一个不可见段
不可见段2(for、while和do-while)循环体结束后的不可见段,即for、while、do-while循环条件不知足时,会正常跳出循环,这时会存在一个不可见段。
SC1+——加强标准段测试覆盖。若是程序的全部低端循环边界不可见段至少被执行一次而且知足SC1 100%覆盖,则该程序的一组测试用例知足 SC1+ 100%。
SC1+=被执行的代码块(包括不可见段0,不可见段2以及不可见段1)/该段程序包含的块个数(包括不可见段0,以及不可见段2以及不可见段1)
不可见段1(for和while)非正常的结束循环体时的不可见段,也就是指for和while循环体一次都没有被执行的状况,这时会存在一个不可见段。
上述那个例子的覆盖率信息是SC0=80% ,SC1=88.9%,SC1+=88.9%,SC1和SC1+相同,那这就意味着这个函数代码中没有for以及while循环,SC0和SC1不一样意味着这个函数代码中存在条件语句。
SC0各段的覆盖状况
SC1各段的覆盖状况
上图中红色框的为条件的隐藏段,也就是当条件不知足时所走的分支,4个隐藏代码块都被执行过,也就意味着这4个条件的假分支都至少被执行过一次。能够转换到ControlFlow视图部分,这些条件的假分支是都被执行过的。
TT除了提供了几种段覆盖率统计,也提供了条件断定的多种覆盖率,具体的有条件为真(TURE),条件为假(FALSE)、条件真假(BOTH)、分支覆盖又称断定覆盖(Branch覆盖)、条件/断定覆盖(C/DC)、修正的条件断定/覆盖(MC/DC)。TT囊括了几乎全部的条件断定类的覆盖率。给测试人用提供程序中各类条件断定式中各条件以及各断定的真假分支执行状况以及各类相关复杂度统计数据,直观、多方位、几近全面的逻辑表达式的分支覆盖统计让繁杂的测试变得容易、简单、精准。
经过ControlFlow视图部分,选中代码中条件断定式,右侧窗口会显示各个条件、条件组合以及整个断定表达式的真假分支被执行的状况,表示执行过、表示没有被执行。测试人员能够根据执行状况,去补充增长相应的测试用例,完善测试,达到100%覆盖测试。若是测试人员不能很好的设计补充测试用例,能够和开发人员进行沟通,肯定没被覆盖的分支如何设计测试用例。经过TT很直观很准确的定位到那块代码或那些分支没有被覆盖,让测试和开发很好的协同工做,减小了沟通时间,同时也减小了沟通障碍。
在软件开发过程当中,保证代码质量时,每每会被要求控制代码复杂度。复杂度称为代码量度是通过了很长的一段历史经历的,令大多人熟知的圈复杂度简称CC也是这段历史的产物,每一个公司都会有对圈复杂度的一个告警值。
TT经过复杂度分析,给出多种复杂度的计算值,对于高复杂度的模块应考虑重构。对于高复杂度的模块,还能够进一步得知其控制流程图和逻辑框图的复杂程度。控制好复杂度能有效地加强软件产品的可维护性,下降bug的发生率,同时也让软件产品的测试工做能更好的进行。
TT提供的复杂度除了以前提到的JC0,JC1,JC1+,CC0(包含case语句在内的圈复杂度)、CC1(不包含case在内的圈复杂度)以及JC2(条件-段的测试复杂度)
JC2=全部可见段+不可间段+全部条件断定语句个数。
在ListView里面咱们能够点击某个复杂度对函数进行升序降序排列,对于高复杂度的,点击调转到ControlFlow图部分查看对应的控制流程图。能够和开发人员沟通,对模块进行优化,控制复杂度,使得测试工做更好展开。
点击工具栏View->Analyzer Report进入报表界面。
(1)基本信息统计部分
主要是对当前项目的当前版本的行数统计、包数量统计、文件数量统计、类数量统计、函数数量统计以及测试用例数量统计。
(2)覆盖率扇形图
TT我的版的目前的覆盖率的划分是固定的,划分了4个区域分别是0%~25%、25%~50%、50%~75%、75%~100%。TT的企业版的这些数据区间是能够自动设置的,企业能够根据项目的要求设定合适的有针对性的覆盖率区间。
下图为本次案例的覆盖率统计,能够看到设计的测试用例的仍是没有充分测试的,须要有针对性的增长测试用例完善测试。
文件的各个覆盖率统计扇形图
类的各个覆盖率统计扇形图
函数的各个覆盖率统计扇形图
(3)复杂度扇形图
TT的我的版针对复杂度的划分区间是根据行业经验值来划分的,历史研究认为复杂度大于10会存在很大的出错风险。咱们能够看到整个源代码中绝大多数的函数的复杂度都是<10,只有少数的函数还须要进一步优化改进。
(4)覆盖率统计
LRV:表示最后一次运行时的覆盖率
CLV:表示累积覆盖率
横坐标表示:SC0,SC1,SC1+,TRUE,FALSE,BOTH,BRANCH,CDC,MCDC 九种不一样类型的函数覆盖率;
纵坐标表示: 不一样类型覆盖率*100的数值;
(5)覆盖率按天的增加曲线图
横轴表示不一样的日期;纵轴表示覆盖率*100的数值;
***图形部分表示覆盖率的变化走势
(6)排行榜
TT提供的排行榜有
1.函数复杂度排行(显示复杂度最高的10个函数以及对应的复杂度)
2.函数热度排行(执行次数最多的10个函数以及执行次数)
3.测试用例贡献度排行(测试覆盖率作多的10个测试用例)
4.正向追溯排行(测试覆盖函数最多的10个测试用例,根据波及到的函数数量排行)
5.逆向追溯排行(波及到的用例数最多的10个函数)
6.扇入扇出最多的函数排行
7.条件复杂度排行(按照子条件的数量排行,列出MC/DC覆盖率)
支持分布式应用的集成测试
当用户的系统为分布式系统,由多个组件在集成环境下同时对外提供服务的状况下,TT支持对这个分布式环境的各个组件及其交互的联合测试。便可以看到一个外部请求,对很少个子系统之间的全部的执行状况。
支持多用户同时测试与测试数据的有效隔离
TT容许多个用户同时对被测应用测试,而不一样用户针对不一样用例即时在同一时刻作的测试而产生的测试数据之间也不会发生任何混淆的状况
对移动端白盒测试技术或者性能测试感兴趣,请加入群符号执行 339834199
软件试用申请官网:www.threadingtest.com