51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1767|回复: 1

穿线测试理念介绍

[复制链接]

该用户从未签到

发表于 2014-7-16 12:59:29 | 显示全部楼层 |阅读模式
穿线测试特性

       穿线测试,其含义取自于对通过一个连线能够对实体进行连接,通过这个穿线建立实体间的联系,并在此之上通过穿线实现物体的互相可追溯特性。穿线测试的核心思想类似于目前火热的DevOPS技术,但相比于DevOPS是建立开发与运维之间的联系,打破二者之间的信息鸿沟,穿线测试则着重于将开发者和测试者的工作组件串联起来,开发和测试之间依托TT可以进行高效的互动,这里面最核心的思想之一是:功能测试与对应的程序程序源代码执行逻辑的双向穿线。

ThreadingTest自动建立测试用例与程序源代码之间的逻辑关系,正向穿线,开发工程师可以看到测试工程师执行用例的代码细节,以方便进行缺陷的修复,测试数据可以直接为开发调试提供依据,快速定位并修复缺陷。逆向穿线,测试工程师通过修改的源码快速确定测试用例的范围,极大减少回归测试的盲目性和工作量,快速修订测试用例,达到测试覆盖率最大化。
穿线测试是继白盒测试、黑盒测试以来对软件测试领域的重大理论突破,通过一系列技术,能彻底的打破原有的软件开发与软件测试之间的鸿沟,率先提出量化的软件测试工程理念,代码的可一致性修改和维护等全新理念,ThreadingTest产品的具体技术特性如下:
1.连接开发与测试之间的穿线技术
1.1 测试用例与代码执行逻辑的双向自动关联
自动建立测试用例与代码的逻辑关系,正向追溯,开发工程师可以看到测试工程师执行用例的代码细节,以方便进行缺陷的修复,开发工程师和测试工程师可以高效的进行互动,测试数据可以直接为开发调试提供依据,快速定位并修复缺陷。



图解:
   A:正向追溯的起点,点击测试用例B和D部分展示了该测试用例所执行到的函数以及函数的复杂度以及覆盖率。
       B:CallGraph视图部分,显示正向追溯追溯到的函数调和执行情况。点击CallGraph图元,C窗口展示该函数的控制流程图以及函数各个结构分支的执行覆盖情况。
       C: ControlFlow 视图部分,显示所选函数的控制流程图以及各个结构分支的执行覆盖情况。
       D:正向追溯到的函数列表,包括函数的源码的其实行号和终止行号,多种复杂度和覆盖率等数据。
       E:Code视图,显示所选函数的源码部分。
穿线测试的最大的作用,在于反向穿线的时候,可以看到某一些代码到底和哪些功能点有关,这样测试人员就会知道,当某一部分代码修改以后,哪些功能点是和修改的代码是相关的,通过反向穿线就可以自动获得,这是一个测试用例集自动削减的过程,虽然软件测试领域针对回归测试用例选取有很多的理论化方法阐述,穿线测试则通过穿线技术提供了一种可商用的解决方案。而难能可贵的是功能点和庞大程序执行逻辑信息的建立是自动化的。


图解:
   A: 反向追溯的起点,类-函数导航树,点击某个函数 ,B和C窗口显示该函数的函数调用图和控制流程图。
       B: CallGraph视图部分,显示所选函数的控制流程图以及函数各个结构分支的执行覆盖情况。
       C: ControlFlow 视图部分,显示所选函数的控制流程图以及各个结构分支的执行覆盖情况。
       D: 反向追溯到的测试用例列表,包括测试用例的运行时间,预期输入输出以及需求设计等文档信息。
       E: Code视图,显示所选函数的源码部分。选择一某段代码,F窗口会显示执行过所选代码的测试用例。
       F: 从Code视图中选择的代码反向追溯到的测试用例信息。
1.2 引导开发与测试合作完成100%覆盖率测试
测试人员运行完所有用例可以发现所有未测试分支,并且和开发确认如何才能覆盖,并增补用例。直到达到关键模块的100%覆盖的测试。对于较难覆盖程序逻辑,开发以及测试人员可以作为重点进行代码走查及联合用例设计。围绕覆盖率结果,开发和测试人员可以充分的互动,而在穿线测试工具出现之前,由于没有覆盖率这个共享数据,开发和测试人员之间很难充分的互动和协作,因为开发人员并不清楚测试用例具体对应的程序执行逻辑,而测试人员也不清楚如何完成充分的测试。
1.3 帮助测试人员可视化开发人员单元测试结果
1.4 基于穿线技术实现的高效智能化回归测试技术
测试人员可以对每次开发提交的版本进行量化分析
(1) 基于动态覆盖率模型的方法,能够最真实的体现程序的执行特性
(2) 采用自主的波及分析技术计算得到的测试用例,会非常准确的选取的确定变更而需要重新运行的测试用例的范围;
(3) 大型应用系统维护阶段的测试,可通过TT进行测试用例辅助选取,而不再凭测试人员的历史经验来确定;
(4) 无需为变更而运行所有测试用例,可确定每次变更的重点测试范围,以轻松应对频繁调整和上线的情况。
2 第二代覆盖率技术
ThreadingTest针对第一代的覆盖率技术的缺陷提出了全新的第二代覆盖率技术,为覆盖率方法的基础上,设计了全新的应用功能:
(1) 累计覆盖率技术:如果存在多个被测程序版本的覆盖率结果,TT可以实现对多个版本的覆盖率进行合并,并且在一个视图中展示

图 主界面CallGraph图中选择多个版本的累积覆盖率展示

(2) 无需监管的覆盖率搜集:覆盖率的统计完全可以由后台程序运行搜集,对测试人员实现透明化。
(3) 支持在程序结构图、控制流程图等多种图形上显示覆盖率,测试以及开发人员可以从多个视角清晰的看到程序的覆盖率情况。
(4) 支持分布式测试,多个测试人员访问系统产生的覆盖率,可以在统一视图中显示。
(5) 实现美军标DO-178B MC/DC白盒结构测试技术,实现100%覆盖率,可视化复杂条件组合,使产品质量大幅提升
(6) 可以在控制流程图上看到每个判断语句的复合条件的任意子条件的覆盖情况。通过第二代覆盖率技术,整个测试可以在充分量化的环境下运行,整个开发以及测试团队可以实时看到每个用例的覆盖率对整体测试的贡献程度。根据覆盖率的生长等指标对整个测试进程进行动态调整,同时可以引导对于累计覆盖率偏低的关键模块补充用例。
3 超高速、大型、可交互的图形化系统
TT支持程序结构图、类继承图、函数控制流程图等多多种图形的动态显示,其中callgraph图形具有高级特性:
(1) 支持百万图元级别的超高速图形绘制技术
(2) 支持全屏以及超平滑的放大与缩小技术、平滑的移动技术
(3) 支持按照类分组聚集布图以及按照函数调用关系布图,层次数量可自由定义
(4) 支持逐级的子树展开和下钻功能。
(5) 支持在函数图元上覆盖显示覆盖率与函数相关信息的显示。
(6) 可追溯:CallGraph是“活”的,不是静止不动的,可以选择途中任何一个模块而追溯所有调用它的路径和相关模块以及被他调用的模块,用于修改模块不一致性缺陷的预防等。
(7) 可交互操作,例如高亮显示一个模块及其相关模块,或者单独绘制一个模块的调用关系。
(8) 可选取CallGraph图中任何一个模块为根生成局部子图,并系那是所生成的子图的相关信息:使得团队的各个组群或者个人可以方便的得到相关的局部信息。
(9) 实现各模块与逻辑框图的链接:完成宏观(CallGraph)与微观视图(ControlFlow)的结合, 发挥更好的可视化效果。


图  CallGraph图

其中controlflow支持如下特性:
(1) 可视化的控制流程图,对主要的控制逻辑语句对应有清晰的图元显示,支持嵌套显示以及串联显示
(2) 点击控制流图的每个图元可以看到对应的代码段以及代码段的执行次数、覆盖率情况
(3) 在控制流图的代码段,当条件语句成为选中热点后,可以看到条件语句的各个子条件的各种组合执行的真假情况
(4) 支持缩略图的显示,可平滑的进行缩放以及全屏显示
(5) 可以与callgraph相互自动链接、追溯、转换。


图 ControlFlow图

4 实时的被测应用示波器


图 动态实时监测

5 多个版本的代码比对视图


图 多版本函数演变对比


图 多版本覆盖率累计
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2019-12-31 08:59
  • 签到天数: 975 天

    连续签到: 1 天

    [LV.10]测试总司令

    发表于 2014-7-16 17:04:33 | 显示全部楼层
    首次接触这个概念。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-18 22:27 , Processed in 0.078758 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表