RBT技术在软件测试中的应用

2019-09-17 08:27黄志亮钱锟
电子技术与软件工程 2019年16期
关键词:测试用例软件测试覆盖率

文/黄志亮 钱锟

1 引言

研究表明,软件需求错误、有问题的系统测试覆盖是导致在软件开发项目过程中大量返工、重新设计和编码的主要原因。在已发现的软件缺陷中,超过50%缺陷的根源是由于错误或不恰当的软件系统需求造成的。随着现在系统日益庞大复杂,系统功能场景和逻辑分支越来越多,实现完全的测试覆盖率是个巨大挑战。基于需求的软件测试主要是对需求进行验证和评定,并确认软件实现是否满足需求的定义,它是软件测试的本质。Bender-RBT是一种基于需求的功能测试用例设计系统工具,它通过评价系统需求,发现其中的错误和逻辑矛盾,使系统需求得到验证和明确化,并以需求作为基础实现设计最少的测试用例达到全面的功能覆盖率。

2 基于需求测试(RBT)

需求是系统服务以及约束的陈述。完整、正确和稳定的软件需求是软件开发的基础,同时也是软件验证和确认的基准。然而在实际软件开发过程中可能受到需求分析工作不完善、对系统缺乏完整准确认识、软件开发窗口压缩、需求未完全固化等因素影响,难以在项目开始阶段就获得完整、正确和稳定的需求。对开发开创性、全新的系统而言,很多时候只有随着项目的进行需求才会越来越清晰。基于需求的测试是一种最根本的软件测试,主要是对需求进行验证和评定,并确认软件实现是否满足需求的定义,并应遵循两个关键准则:

(1)验证软件需求是否正确、完整、无二义性,并且逻辑一致;

(2)要从“黑盒”的角度,设计出充分并且必要的测试集对系统需求进行测试覆盖,以保证设计和代码都能完全符合要求。

3 Bender-RBT测试工具

图1:因果逻辑关系图

图2:测试用例集

软件测试的目的是希望以最小的代价,尽可能地找出软件中潜在的各种错误和缺陷,以提高软件的可靠性和质量。Bender-RBT是一种基于需求的功能测试用例设计系统工具,它可以通过彻底评价系统需求,发现其中的错误和逻辑矛盾,使系统需求明确化。Bender-RBT将需求作为基础,实现设计最少的测试用例达到全面的功能覆盖率。

完整、正确的需求是保证系统开发和测试准确性的前提基础。Bender-RBT通过分析和复查系统的需求,发现其中逻辑上的矛盾和错误。Bender-RBT使用因果作图法分析需求的每个方面,并用逻辑图表方式来说明系统各个输入之间以及输入同各输出之间的结点关系、约束和其可观测性;通过评价记录下来的信息,从而鉴别出在关系、逻辑错误和功能缺失等方面的问题,并以逻辑图表和功能说明书等形式提供详细的分析结果。这种用因果逻辑关系图直接去表现需求的形式有助于需求和测试用例的复查和理解,从而尽早地发现和纠正需求的错误,以确保需求是正确、完整、可理解和可测试的。

现在系统日益庞大复杂,随之系统功能场景和逻辑分支也越来越多,获得满意的测试覆盖率愈加困难,实现完全的测试覆盖率将会是个巨大挑战。通常在许多测试中一般使用的都是GUT FEEL(直觉)方法或基于组合数学的方法。GUT FEEL测试十分依赖于测试工程师的水平和经验,如果仅按照个人的经验和感觉来设计测试用例,很难保证100%覆盖系统的所有功能,研究报告表明一般来讲只能覆盖30-40%。基于组合数学的测试使用的是大量输入的组合,随着应用系统输入增多,使用该方法设计的测试用例数量会剧增,一个有27个输入的应用系统穷举测试需要设计上亿个测试用例,要做到完全的覆盖几乎不可能。

Bender-RBT是基于需求的测试用例设计工具,包含有正交组合对法(Orthogonal Pairs)和因果图法(Cause Efffect)两种完全独立的测试用例设计引擎。在因果图测试用例设计引擎中,Bender-RBT使用一种数学上很严谨的敏感路径逻辑算法来确定为保证完全的功能覆盖率所需的最少测试用例,最大的减少测试设计和建立的时间,从整体上降低了测试的工作量,在这方面Bender-RBT比其他的测试技术效率提高至少4倍。

4 举例

某金融应用系统中关于给顾客免费设置信用账户透支保护的要求如表1所示。

表1:免费设置信用账户透支保护的具体要求

图3:覆盖率矩阵

根据表1提供的需求,利用Bender-RBT中因果图法建立“免费设置信用账户透支保护”的因果逻辑关系如图1所示。本示例中企业客户和优质个人客户存在互斥,信用账户透支保护状态、透支次数依赖于存在信用账户这一前提条件,在建立因果逻辑关系图时,通过节点加入现实情况下的约束关系和前提条件减少无效的测试用例。由当前因果逻辑关系图生成的测试用例集如图2所示,包含系统状态变化个数(Vars)、创建的测试用例个数(Tests)等基本信息,同时经分析和复查需求也验证了需求正确无误。在Bender-RBT报告中可获得覆盖率矩阵和定义矩阵等重要信息,覆盖率矩阵显示每个测试所覆盖的功能,并可以显示是否每次测试都至少执行了一个未覆盖的功能;定义矩阵显示每个测试用例中的输入和输出条件。覆盖率矩阵如图3所示,显示了每个系统状态变化由对应哪些测试用例所覆盖以及每个测试用例所覆盖的系统状态变化的信息,其中“#”表示只有唯一对应的测试用例覆盖该状态变化,而“X”表示有一个以上的测试用例可覆盖该状态变化。定义矩阵如图4所示,标识了每个测试用例输入输出节点的真假状态。理论上覆盖系统全部的状态变化最多需要26个测试用例,若按照传统直觉方法并依赖测试者水平和经验的不同进行测试设计需至少9个测试用例,而使用Bender-RBT仅需7个测试用例即可覆盖系统全部的状态变化。

图4:定义矩阵

5 结语

基于需求的测试是一种最根本的软件测试。完整正确的需求是软件测试的前提,对系统需求的测试覆盖需要设计充分且必要的测试集。Bender-RBT是一种基于需求的功能测试用例设计系统工具,通过分析和复查系统需求验证其正确性,并以需求因果逻辑关系图作为基础实现设计最少的测试用例达到完全的功能覆盖率,尤其对存在较多输入输出的系统测试更能体现其特点及优势,更好地保证系统测试的质量和进度,提高软件的可靠性和质量。

猜你喜欢
测试用例软件测试覆盖率
民政部等16部门:到2025年村级综合服务设施覆盖率超80%
我国全面实施种业振兴行动 农作物良种覆盖率超过96%
基于SmartUnit的安全通信系统单元测试用例自动生成
基于OBE的软件测试课程教学改革探索
EXCEL和VBA实现软件测试记录管理
基于混合遗传算法的回归测试用例集最小化研究
关于软件测试技术应用与发展趋势研究
软件测试工程化模型及应用研究
基于喷丸随机模型的表面覆盖率计算方法
基于依赖结构的测试用例优先级技术