第4代白盒测试方法之“如何选择嵌入式白盒测试工具”

本文探讨了嵌入式软件白盒测试工具选型的重要性,指出工具使用效率是主要障碍。文章强调在推行白盒测试时,正确选择工具对于确保产品质量至关重要,并预告将分析影响测试开展的因素及评估模型。
摘要由CSDN通过智能技术生成
 

恩格斯说“劳动从制造工具开始”,人和动物的本质区别是:人会制造与使用工具。IT产品研发也从选择合适的工具开始,工具好坏对项目成败往往起着关键作用,尤其是嵌入式领域的白盒测试工具选型。尽管业界已有众多商用工具,但大部分仍处于可将白盒测试推动起来的边缘状态,选择工具稍有不慎,就导致白盒测试整体做不起来,最终严重影响推向市场的产品质量。

先澄清两个概念

在分析如何进行工具选型之前,我们先剖析嵌入式软件,当前状况下影响白盒测试开展的最主要障碍是什么?然后才推导嵌入式软件白盒测试工具选型应遵循的评估模型。

先澄清两个概念,其一,在嵌入式研发领域,影响白盒测试推行的最主要障碍是工具的使用效率,或者说,借助测试工具,你要花多长时间才将单元测试与集成测试做完整。在《企业如何推行白盒测试》一文中,我们介绍了白盒测试的分区推动理论,如下图:

图:分区推动

测试同比曲线反映了测试工具的使用效率,测试效率越高,该指标取值就越高。如果测试效率偏低,测试同比小于2/3(大致是每写2天代码要3天才能测完整)是强制推动区,这个区域对于绝大多数企业来说,白盒测试作为一项组织行为注定要失败。而测试效率够高,测试同比超过3/2(大致是每写3天代码2天就测完整)是自发推动区,白盒测试即使没有相关流程推动,研发人员也能自觉、自发的实施起来。

所以,选择测试工具至少要求使用它的效率应保证测试同比大于1,测试同比为1是个拐点,即每写一天代码只用一天就测完整,请注意,我这里讲的是“测完整”,不是简单的比划几下,而是用例总量、覆盖率等都达到一定的指标,另外强调“每写一天代码”,指的是代码每次改动,都有白盒测试跟进,而不是一次性编码、一次性测试,如果是一次性测试,相信多数商用工具都能超越拐点,但保证整个产品周期都做到这一点,就很难了。目前适用做嵌入式白盒测试的商用工具中,大多数都没达到该要求,所以,多数情况下必需有良好的组织,有强有力的流程推动,白盒测试才做得起来。

另一个概念,嵌入式产品面对复杂的运行环境,形形色色的实时系统、编译器与设备驱动,都导致白盒测试困难重重,但白盒测试必须要到实际运行环境中去做吗?未必,也不应该这样推崇。《实施白盒测试的几个误区》一文已有详细分析,嵌入式软件应在仿真机环境实施白盒测试,“上真实环境做代码级测试”实际上是个伪命题,实践中很难行得通,或者说,行得通但代价太高,远没突破前面所提的效率拐点,所以,在各种条件受限的实时环境下做白盒测试,还不能将它上升到过程有保障的组织行为。

嵌入白盒工具的评估模型

评估一个测试工具的好坏,采用评估标准不同,所站的角度不同,评估结果大相径庭。所谓每个人的心中都有杆称,让测试人员选工具,他会站在测试的角度去选择,会更注重白盒测试能做得下去,之后才有兴趣深入去做,如果让质量人员去选,他会侧重于质量保障环节,比如非常看重覆盖率评估、测试报告提交等,但如果让企业老板选工具,恐怕他首先考虑的是这个工具的价格。所以,测试工具的选型过程,必然是各种因素综合考虑的权衡过程。进行公正的工具选型首要问题是:如何选择评估要素并赋予不同的权重,套用一句规范术语,我们先建模,确定评估模型,再按条目打分作决策。

建立评估模型应考虑如下几个因素:

1.         应用范围

首先明确你期望引入某工具的应用范围,这个业务范围内都有哪几类利益相关人,然后确定评估项目,为各评估项分配权重。

如果不明确工具适用的业务范围,或确定范围不恰当,肯定会影响评估的准确性,比如你希望某个白盒测试工具,既支持单元测试,又支持集成测试,这是一种想法,如果把它换成:想要一个能支持单元测试的工具就够了。这两种目的最终的评估结果肯定很不一样,还有,应关注适用范围的条件限定,比如,你想要一款既支持C,又支持C++的测试工具,或限定要支持某特定编译器(如GCC)的。期望工具的适用范围不仅要明确,还要合理,比如:你期望一款既支持白盒测试,又支持功能测试,另外还支持性能测试的工具,最后的选型结论肯定会让你失望,没有这种万能工具。

确定适用范围后就可以分析利益相关人了,比如你选择单元测试工具,重点是考虑编码人员的需求(注:单元测试的主体应由编码者自己承担,这是另一个话题,本文不展开),而你要的工具既支持单元测试,又支持集成测试,就不能不考虑测试人员的提议了。

2.         合理选择评估项目,分配不同的权重

上面讲到先确定应用范围,由应用范围确定相关人后,选择评估要素就容易明确下来了,最简单的方法是:把相关人叫过来,让他们一条一条的说出他关心哪些问题,把这些问题排个序。当然,叫相关人员过来讨论并非必须,如果评估者对各个适用领域都很熟悉,他站在各个利益相关人的角度细想一遍也行。

需要注意两点,一是不要漏掉相关人,比如想买一款性能测试工具,老板也是利益相关人,不站在他的角度考虑问题,申购单可能得不到批准,比如眼下公司的现金流吃紧,你要让老板购买一套奇贵无比的工具(尽管可能带来很大的效益),该项申购多半会流产。二是保证各个评估要素是恰当的、合理的,比如选择一款单元测试工具,许多人会要求这个工具应支持上单板做测试,根据前面我们分析的,这个评估项实际上似是而非。

3.         注意阶段时效性

这一点是分析工具的应用范围要考虑,但很容易被大家忽略。

前面我们介绍了白盒测试的分区推动特性,当前企业所处的区段不同,会有不同的要求。比如当前本企业的白盒测试尚处强制推动区,那首要考虑的问题是怎样把白盒测试做起来,如果当前已经在组织推动区了,如何保证深入测试会考虑得多些,而到自发推动区,质量评估环节应加大份量,像覆盖率评估等应赋予较高权重来评估。

本人曾见过有企业刚开始推行白盒测试,就因为某工具尚未支持MCDC覆盖评估,就立即将它拒之门外,选择了别一款很贵,看起来很牛X的工具。这种评估偏差很大,他错过一款测试效率奇高的工具了,像覆盖率,刚才始推白盒测试,有语句覆盖与分支覆盖就足够了,MCDC覆盖对高复杂度、重要的代码才必要,白盒测试都没做起来,首先保证工具有足够的效率才是最重要的,有没有MCDC是锦上添花的事,等白盒测试顺畅起来日显必要。

这里提供一份来源于长期实践,适用于嵌入式白盒工具的评估模型,模型先把评估要素划为两大类:商务属性、价值属性。商务属性主要包括价格、品牌、服务等,价值属性主要评估一个测试工具在不分背景、不论出处的情况下的应用价值。

评估测试工具主要是对比功能,但同类测试工具功能差异可能很大,比如两个工具遵循的理念大相径庭,比如拿XUnitCodeTest作对比,前者属第3代白盒方法,后者是第2代方法,后者除覆盖测试还支持性能测试,针对这种可比性存在偏差的情况该如何处理?这时,最忌讳的是失去自我主见,倾向某个工具就以它现成功能为基准列出评估项目。恰当的做法应是:先理清自己到底想要什么,关心哪些问题,然后看看两个工具支撑得怎么样,如果某关键功能两者都不支持,评估者可能还要另想招去解决。

由于白盒工具的核心功能比较确定,都离不开写脚本做测试,要打桩、构造测试数据、看覆盖率等,所以,鉴于本领域的特殊性,我们不必按功能逐项评估,只需评价这些功能服务于“测试效率提升”、“工具易用性”、“对质量保证的促进”的能力如何就可以了。如果被评价的工具在常规功能之外的,如CodeTest的性能测试,我们另列,按差异化功能逐条列出即可。将差异化功能分开考虑,可保证某些非核心的条目干扰我们决策过程,尤其在对比遵循不同方法论的工具时,象第4代白盒方法要求在线测试(在线测试驱动、在线脚本桩、在线测试改进),前3代白盒方法对此不作要求,如果按功能对比,可比性缺失,但按照设置这些功能的目的还是可以比较的,在线测试主要目的是提高测试效率。

又如,某工具提供“指定参数范围后用例自动生成”的功能,另一个工具没有,那是不是前者比后者一定好出不少呢?未必,这个功能只对工具易用性与工作效率产生影响,但如果指定参数范围要弹出一个接一个对话框,用户要不停点击鼠标,还用键盘输入上限值与下限值,那他的工作效率没有提升,反倒下降了,因为如此选参数远没有写一句for循环脚本来得快。所以,我们以期望工具能达到的目标为基准,以“测试效率提升”、“工具易用性”、“对质量保证的促进”3个大类作评估,分析起来更为准确。

把工具的价值属性与商务属性分开是有现实意义的,因为嵌入式领域的白盒测试普遍不够成熟,技术难度与风险偏高,考虑工具的实用价值不应受商务因素干扰。另外,本企业的白盒实践是否成熟,对工具选型影响也比较大,把价值属性独立出来利于在不同阶段给它分配不同权重。下图描述了白盒测试实践从强制推动区向自发推动区演进时,在各阶段应关注的不同重点:

图:工具评估模型

于强制推动区,企业应更关心选择高效率的测试工具,让白盒测试能做得下去,所以测试工具的使用效率与易用性最为关键,要达到一定的基准(否则如果用不下去就一票否决了),此阶段的白盒测试即便没有太明显的绩效也算成功了,因为测试做得下去,就有了可改善的基础。在组织推动区,须要解决一些基础的质量保证问题,至少,要保证白盒测试实践富于实效,测试能深入进去,比如测试先行等实践能有效的支撑起来。到了自发推动区,工具在测试效率、易用性与质量保证各环节都达到较高水准,对质量环节提升的要求更多些,此时质量要求集中于“平稳、无风险、可拷贝的运作”。

本评估模型的一个实例化表格如下:

大类

小类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值