爱收集资源网

新鲜有趣的小程序介绍

网络 2023-07-06 03:01

目录

句子覆盖

句子覆盖(StatementCoverage)又称行覆盖、段覆盖、基本块覆盖,它是最常见的覆盖形式。句子覆盖的目的是测试程序中的代码是否被执行,它只测试代码中的执行句子,这儿的执行句子不包括头文件、注释、空行等。句子覆盖在多分支的程序中,只能覆盖某一条路径,致使该路径中的每一个句子起码被执行一次,但不会考虑各类分支组合情况。为了让你们更深刻地理解句子覆盖,下边结合一段小程序介绍句子覆盖方式的执行,程序伪代码如下所示。

IF x>0 AND y<0 #条件1
    z=z-(x-y)
IF x>0 OR z>0 #条件2
    z=z+(x+y)

在上述代码中,AND表示逻辑运算&&,OR表示逻辑运算||,第1~2行代码表示假如x>0创立而且y2创立或则z>0创立,则执行z=z+(x+y)句子。该段程序的流程图如图1所示。

在图1中,a、b、c、d、e表示程序执行分支,在句子覆盖测试用例中,使程序中每位可执行句子起码被执行一次。依照图1程序流程图中标识的句子执行路径设计测试用例,具体如下。Test1:x=1y=-1z=2

语句覆盖和判定覆盖之间的关系_逻辑覆盖属于白盒测试吗_判定覆盖和语句覆盖的区别

执行上述测试用例,程序运行路径为acd。可以看出程序中acd路径上的每位句子都能被执行,然而句子覆盖对多分支的逻辑难以全面反映,仅仅执行一次不能进行全面覆盖,因而,句子覆盖是弱覆盖方式。

句子覆盖似乎可以测试执行句子是否被执行到,但却难以测试程序中存在的逻辑错误,比如,假如上述程序中的逻辑判定符号“AND”误写成了“OR”,使用测试用例Test1同样可以覆盖acd路径上的全部执行句子,但却难以发觉错误。同样,假若将x>0误写成x>=0,使用同样的测试用例Test1也可以执行acd路径上的全部执行句子,但却难以发觉x>=0的错误。

句子覆盖无须详尽考虑每位判定表达式,可以直观地从源程序中有效测试执行句子是否全部被覆盖,因为程序在设计时,句子之间存在许多内部逻辑关系,而句子覆盖不能发觉其中存在的缺陷,因而句子覆盖并不能满足白盒测试的测试所有逻辑句子的基本需求。

判断覆盖

判断覆盖(DecisionCoverage)又称为分支覆盖,其原则是设计足够多的测试用例,在测试过程中保证每位判断起码有一次为真值,有一次为假值。判断覆盖的作用是使真伪分支均被执行,即使判断覆盖比句子覆盖测试能力强,但依然具有和句子覆盖一样的单一性。以图1及其程序为例,设计判断覆盖测试用例,如表1所示。

由表1可以看出,这4个测试用例覆盖了acd、abd、ace、abe4条路径,致使每位判断句子的取值都满足了各有一次“真”与“假”。相比于句子覆盖,判断覆盖的覆盖范围更广泛。判断覆盖其实保证了每位判断起码有一次为真值,有一次为假值,并且却没有考虑到程序内部的取值情况,比如,测试用例test4,没有将x>2作为条件进行判别,仅仅判定了z>0的条件。

判断覆盖句子通常是由多个逻辑条件组成的,假如仅仅判定测试程序执行的最终结果而忽视每位条件的取值,必然会遗漏部份测试路径,因而,判断覆盖也属于弱覆盖。

实验内容

针对保险产品承保业务逻辑代码进行剖析,运用词句覆盖和判断覆盖法进行测试用例设计。

某个人税收让利型保险产品A/B1/B2/C款投保规则:

(1)凡16周岁以上且承保时未满法定退职年纪的(女性为59周岁、女性为54周岁,后续将随国家相关法规做相应调整),适用商业健康保险税收让利新政的纳税人,可作为本协议的被保险人。保险公司按照被保险人是否出席公费医疗或基本医疗保险确定适用条款。

(2)被保人为健康体,或则出席医疗保险的,可选择A款、B1款或B2款。

(3)未出席公费医疗的非健康体(有既往症)只能选择C款。

以下为个人税收让利型保险产品投保的部份伪代码实现:

实验步骤1.测试剖析

(1)按照保险产品的投保业务描述,剖析产品投保流程,包括主流程、分支流程以及正常流程、异常流程。

语句覆盖和判定覆盖之间的关系_逻辑覆盖属于白盒测试吗_判定覆盖和语句覆盖的区别

(2)模拟保险产品投保场景:触发容许产品投保的条件,不同条件是否走不同的投保流程。(3)数据项检测:数据项的估算规则,数据项后台判定逻辑。

2.测试设计

依据产品投保代码,设计出程序流程图,并对程序流程图做节点标记。

剖析伪代码得到两个判断:

判断A:(性别="男"AND16<年纪<59)OR(性别="女"AND16<年纪<54)

判断B:健康体OR有医疗保险

3.测试设计

依据业务场景与流程逻辑判断,运用词句覆盖法进行用例设计,运用判断覆盖法来进行用例设计。

句子覆盖是一个比较弱的逻辑覆盖标准,通过选择足够多的测试用例,致使被测试程序中的每位句子起码被执行一次。按照如图1所示的流程图,为使程序中的每位句子起码执行一次,只需设计两个测试用例,覆盖句子A、B、C、E,即覆盖判断A“成立”、判定B“成立”或“不创立”各被覆盖一次,如表1所示。

接出来我们运用判断覆盖法来进行用例设计。判断覆盖又称为分支覆盖,判断覆盖句子覆盖的标准稍强一些,它是指通过设计足够多的测试用例,致使被测试程序中的每位判断(即上述判断A、判定B)都获得一次“真”“假”值,如表2所示。

逻辑覆盖属于白盒测试吗