测试驱动开发在系统中的设计实现及效能分析
作者:网络转载 发布时间:[ 2013/6/5 11:18:46 ] 推荐标签:
3.2.3 详细设计、编码、测试阶段
对上述几个需求点进行详细设计、编码和测试。后对单元模块的具体实现方案如下:
图1 测试驱动单元模块的基本结构
如图所示,整个系统分为两个部分:实现产品功能等需求的“应用模块(Application Module)”、实现测试驱动开发的“测试模块(Test Mt,dule)”。
测试模块又分为3个子模块:输入子模块、输出子模块、处理子模块。“输入子模块”主要是接收外部的一些命令;“处理子模块”主要是接收已经经过“输入子模块”过滤、解析的命令,然后与应用模块进行信息的查询、收集、控制等操作,再把一些信息传递给“输出予模块”;“输出子模块”接收“处
理子模块”传递过来的信息,并把它呈现出来。由这个测试模块来实现前面总结四个方面的17条测试驱动需求。比如“自动化测试脚本支持”这一需求:如果后期测试人员要做一个自动化测试,可以在测试模块的界面输入测试脚本,这些测试脚本由“输入子模块”进行处理后传达到“处理子模块”;“处理子模块”对这些脚本逐条进行解析转化成应用模块“认识”的命令,然后去向应用模块进行查询信息、对应用模块进行控制下达操作命令......这样处理完之后,把一些需要输出的信息,比如执行结果、成功失败等信息传递给“输出子模块”;后经过“输出子模块”把结果、信息给测试人员看。这样设计的优点在于,不管应用如何升级、如何改变,只要应用模块与测试模块之间的接口不变,这个测试模块都可以起作用。
4、效果分析
该项目总代码行为15.3K,其中测试驱动代码行为6.6K(测试模块的代码量),测试驱动代码占总代码的43%。
(1)通过测试驱动开发可以提高测试效率、定位bug效率
用“测试并定位1个bug所需人天”作为测算指标,这个指标的计算公式。3 o如下:(测试所投入的人员天数+定位bug所投人人员天数)/测试阶段所发现的全部bug,得到“测试并定位1个bug所需人天”这个指标。选取了一个没有实现测试驱动的项目作比较,该项目的测试效率:
测试并定位1个问题所需人天=2.93人天
而在这个实现了测试驱动的项目的系统测试投入人天及定位bug投人人天共368人时=46人天,共发现并定位bu932个,测试效率如下:
测试并定位1个问题所需人天=46人天/32=1.44人天
这个测试效率明显提高很多,在发现的32个bug中,大部分的bug是可以根据系统所提供的测试驱动手段很快定位的。
(2)通过测试驱动开发可以降低测试成本
开发设计的投入成本相比测试成本是要低的,开发投入的成本主要是人员、PC机;而测试投入的成本主要是人员、设备,设备是测试成本中占比重大的。测试环境要包括所有组网设备、还有测试所需的设备,都是非常昂贵的。对于没有实现测试驱动开发的项目,测试人员往往需要自行开发一些测试工具,对系统进行测试,而且首先要先熟悉该系统去了解开发人员的设计和开发思路,然后才能进行完善的测试,而这是很浪费时间和人力。而实现测试驱动开发的项目可以把这一步简化为只需要测试人员写测试脚本、甚至可以把这一步完全略去。所以可以通过前期测试驱动的投入来降低后期测试所需要投入的成本,效果非常明显。
(3)通过测试驱动开发可以降低“不可重现/随机重现”bug的比例
实践证明,通过测试驱动开发,大大降低了“不可重现/随机重现”bug的比例。这类问题是系统的很大隐患。通过测试驱动开发,因为很多会出现问题的地方都打印了相关信息、同时也提供很多方法来进一步的定位控制,大部分以前认为是“不可重现/随机重现”的bug都可以抓到蛛丝马迹,后来定位和解决。
(4)通过测试驱动开发可以提高开发设计文档的质量
以前系统开发的模式,是开发人员进行开发,测试人员根据开发人员完成的各种文档进行各类测试计划的撰写、进行测试,这样的模式下,开发与测试是完全独立甚至对立的立场。在整个测试驱动项目开发的过程中,对于测试驱动需求的实现都是由开发人员来完成的,这样有两方面优点:
(1)促使开发人员从测试的角度来考虑问题、来进行设计。
(2)当开发人员在对测试需求进行设计时,也会促使他对已经完成的sRS、HLD等设计文档进一步的进行反思,进而促进设计文档的正确性、完备性,提高前期设计的质量。经验证明,大型软件的问题多是前期设计不当引起的,所以提高前期设计的质量尤为关键。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11