51Testing软件测试论坛

标题: Android测试工具ThreadingTest测试CSDN开源版手机游戏--捕鱼达人实例(下) [打印本页]

作者: threadingtest    时间: 2014-8-18 15:20
标题: Android测试工具ThreadingTest测试CSDN开源版手机游戏--捕鱼达人实例(下)


选择示波器界面中刚建立的用例,选择start进行数据接收。连接移动设备有USB和热点等多种方式可以点击help获得相关说明。





[url=]5[/url].测试数据获取完毕后,TT超高速、大型、互动的图形化系统展示[url=]5.1[/url]主界面-调用关系视图




[url=]5.2[/url]主界面-控制流程视图


[url=]5.3[/url]主界面-函数列表视图

[url=]5.4[/url]覆盖率分析
主界面的CallGraph、ControlFlow、ListView三个视图是可以相互切换的,我们可以通过查看每个函数的各个覆盖率的数据,如果覆盖率没有达到100%的,可以选择查看函数的那部分代码或者分支执行的测试用例没有覆盖到。
ListView视图是以列表的形式显示了项目包含的所有函数的各种覆盖率信息和复杂度信息的统计数据,支持翻页、跳转指定页,按各列升序排序等功能。


[url=]5.4.1[/url]段覆盖

  设置跳转到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视图部分,这些条件的假分支是都被执行过的。

[url=]5.4.2[/url]条件判定覆盖

TT除了提供了几种段覆盖率统计,也提供了条件判定的多种覆盖率,具体的有条件为真(TURE),条件为假(FALSE)、条件真假(BOTH)、分支覆盖又称判定覆盖(Branch覆盖)、条件/判定覆盖(C/DC)、修正的条件判定/覆盖(MC/DC)。TT囊括了几乎所有的条件判定类的覆盖率。给测试人用提供程序中各种条件判定式中各条件以及各判定的真假分支执行情况以及各种相关复杂度统计数据,直观、多方位、几近全面的逻辑表达式的分支覆盖统计让繁杂的测试变得容易、简单、精准。
通过ControlFlow视图部分,选中代码中条件判定式,右侧窗口会显示各个条件、条件组合以及整个判定表达式的真假分支被执行的情况,表示执行过、表示没有被执行。测试人员可以根据执行情况,去补充增加相应的测试用例,完善测试,达到100%覆盖测试。如果测试人员不能很好的设计补充测试用例,可以和开发人员进行沟通,确定没被覆盖的分支如何设计测试用例。通过TT很直观很准确的定位到那块代码或那些分支没有被覆盖,让测试和开发很好的协同工作,减少了沟通时间,同时也减少了沟通障碍。


[url=]5.5[/url]复杂度分析

在软件开发过程中,保证代码质量时,往往会被要求控制代码复杂度。复杂度称为代码量度是经过了很长的一段历史经历的,令大多人熟知的圈复杂度简称CC也是这段历史的产物,每个公司都会有对圈复杂度的一个告警值。
TT通过复杂度分析,给出多种复杂度的计算值,对于高复杂度的模块应考虑重构。对于高复杂度的模块,还可以进一步得知其控制流程图和逻辑框图的复杂程度。控制好复杂度能有效地增强软件产品的可维护性,降低bug的发生率,同时也让软件产品的测试工作能更好的进行。
TT提供的复杂度除了之前提到的JC0,JC1,JC1+,CC0(包含case语句在内的圈复杂度)、CC1(不包含case在内的圈复杂度)以及JC2(条件-段的测试复杂度)
JC2=所有可见段+不可间段+所有条件判定语句个数。
在ListView里面我们可以点击某个复杂度对函数进行升序降序排列,对于高复杂度的,点击调转到ControlFlow图部分查看对应的控制流程图。可以和开发人员沟通,对模块进行优化,控制复杂度,使得测试工作更好展开。

[url=]6.[/url] 详细直观的报表能够快速的汇总测试项目的各项指标信息,以多样化的表现形式向用户展示了测试用例执行结果以及源代码的各项指标

点击工具栏View->Analyzer Report进入报表界面。


(1)基本信息统计部分




主要是对当前项目的当前版本的行数统计、包数量统计、文件数量统计、类数量统计、函数数量统计以及测试用例数量统计。
(2)覆盖率扇形图
TT个人版的目前的覆盖率的划分是固定的,划分了4个区域分别是0%~25%、25%~50%、50%~75%、75%~100%。TT的企业版的这些数据区间是可以自动设置的,企业可以根据项目的要求设定合适的有针对性的覆盖率区间。
下图为本次案例的覆盖率统计,可以看到设计的测试用例的还是没有充分测试的,需要有针对性的增加测试用例完善测试。
文件的各个覆盖率统计扇形图

类的各个覆盖率统计扇形图


函数的各个覆盖率统计扇形图

(3)复杂度扇形图

TT的个人版针对复杂度的划分区间是根据行业经验值来划分的,历史研究认为复杂度大于10会存在很大的出错风险。我们可以看到整个源代码中绝大多数的函数的复杂度都是<10,只有少数的函数还需要进一步优化改进。


作者: threadingtest    时间: 2014-8-18 17:33

(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覆盖率)




7. 支持分布式测试场景

支持分布式应用的集成测试

当用户的系统为分布式系统,由多个组件在集成环境下同时对外提供服务的情况下,TT支持对这个分布式环境的各个组件及其交互的联合测试。即可以看到一个外部请求,对不多个子系统之间的所有的执行情况。

支持多用户同时测试与测试数据的有效隔离 

TT允许多个用户同时对被测应用测试,而不同用户针对不同用例即时在同一时刻做的测试而产生的测试数据之间也不会发生任何混淆的情况






欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2