美文网首页软件测试
自适应随机测试方法与判定表的结合

自适应随机测试方法与判定表的结合

作者: 刘晓佳rachel | 来源:发表于2021-04-13 17:36 被阅读0次

    转自公众号投稿:https://mp.weixin.qq.com/s/s7ZrUxM2Y39nrQ_UFWcKHw

    1. 什么是自适应随机测试

    1. 随机测试

    随机测试,是指确定测试用例输入输出后,随机选择测试用例输入数据进行测试。如:测试数据范围为[0,100],随机选择[0,100]中的数字进行测试,如2,50,77等。

    1. 自适应随机测试

    自适应随机测试,是一种增强的随机测试。其思想史:由于失效输入通常都会集中于某个区域,因此一个失效输入附近的输入也有可能是失效输入.如果将测试用例均匀分布到整个输人空间,那么测试用例集合将有更大的可能触发软件失效,从而更快地发现被测软件中的错误。即假设用例T1与T2在同一区域,距离较近,则T1检测出软件缺陷后,T2发现缺陷的概率也很大。

    2. 自适应随机测试的具体使用

    在讲解自适应随机测试之前,我们先来简单了解一种分析和生成测试用例的方法——判定表。

    1) 什么是判定表

    判定表,也叫决策表,是对多种输入条件下软件系统执行不同动作的分析工具,它可以把复杂的逻辑关系和多种条件组合的情况表达得具体明确。

    判定表通常由条件桩、条件项、动作桩、动作项组成。 条件桩:被测对象的所有输入; 条件项:被测对象的输入取值 ;动作桩:被测对象可能采取的操作/表现 ;动作项:在各个条件项的组合下,被测对象所采取的动作/表现。

    判定表模板如下图1所示:

    图1 判定表模板

    判定表可以将功能的各个条件进行组合,便于可视化分析。但是,随着条件的增多,判定表会变得越来越庞大,且不适合循环结构的类型。因此,判定表常用于简单、平铺式的软件功能用例分析。

    2) 布尔判定表的设计

    条件桩进行排列组合后的集合,对应到判定表右侧的所有列,每一列都可以对应一个测试用例。 如果有3个条件,每个条件有2个取值,则有 2^3= 8种规则,判定表中则有8列。

    如以经理候选人举例,要求年龄30以上,工龄超过5年的硕士以上学历可以竞聘。有年龄、工龄、文化程度3个条件。条件项分别为:C1年龄取值(30岁以下,30岁以上);C2工龄取值(5年以下,5年以上);C3文化程度取值(硕士以下学历,硕士以上学历)。

    使用判定表设计如下:


    图2 判定表举例

    注意:判定表设计举例中隐含着一个规则。即:条件和规则的排列顺序不会影响。

    通过3知道了判定表的设计方法,但是如果条件项过多,例如增加上述例的条件项,条件项分别为:C1年龄取值(30岁以下,30-45岁,45岁以上);C2工龄取值(5年以下,5-10年,10年以上);C3文化程度取值(硕士以下学历,硕士以上学历)。动作项为30-45岁以上,工龄10年以上的硕士以上学历或45岁以上,工龄10年以上可以参加竞聘。则判定表如下:

    图3 增加条件项判定表举例

    可见,当条件项有限增多部分时,判定表会变得很大,特别是条件项为文字表达时,可读性变差。

    假如,想修改下判定表,提高可读性,该怎么做呢?可以试试将判定表条件项、动作项转换成布尔值表达。

    如,将图3例的条件项和动作项使用布尔值表达。可以转换成:C1年龄取值(是否30岁以下,是否30-45岁,是否45岁以上);C2工龄取值(是否5年以下,是否5-10年,是否10年以上);C3文化程度取值(是否硕士以上学历)。动作项取值(是否能够参加竞聘)。其中,“是”用Y表示,“否”用N表示。判定表可以改写为:

    图4 布尔式判定表举例

    通过图4可见,使用“Y\N”或“1\0”式的布尔表达方式表示取值结果,可以优化判定表的表现方式,增强可读性,且易于筛选和转换测试用例。如,可以快速选出图4可以参加竞聘的判定表例,如下图所示:

    图5 图4判定表筛选结果

    进一步删除无效条件项,即值为N的条件项,结果如下图所示:

    图6 删除无效条件项判定表结果

    至此,最小有效判定表结果如图6所示。转换成用例表述为:

    表1 有效用例表述举例

    3. 自适应测试方法的用例选择

    通过判定表的介绍和举例,使用布尔判定表可以快速筛选出有效判定表结果,可以看出随着输入条件项的增多,即使是有效判定表测试用例数也会成倍数级增长。

    因此,本文介绍使用自适应测试方法选择测试用例进行执行。

    1) 测试用例的海明距离计算

    自适应随机测试是利用测试用例的聚集特性来提高测试的效率,其关键点在于寻找测试用例的聚集区域。常使用的计算测试用例距离的方法有:海明距离,欧式距离等。本文选择海明距离进行说明。海明距离是指两个字符串之间对比比特位的取值,不同的比特数目就是这两个字符串之间的海明距离。

    以图4布尔判定表为例,将“Y”用“1”表示,“N”用“0“表示。判定表可以改写为下图7:

    图7判定表0-1表达结果

    图7中从左至右分别为用例1,2,3……18,用例用0-1布尔表达可以表示为:

    表2 判定表用例0-1布尔表达

    使用海明法判断上表中的任意两个用例输入条件项距离,可如下表示:


    表3 布尔判定表用例间的海明距离

    2) 自适应测试方法执行测试用例

    通过布尔判定表将用例转换成布尔表达后,再经过海明距离测定完用例间的距离。接下来就可以使用自适应方法执行测试用例了。自适应方法执行测试用例主要有以下几步:

    a) 随机选择第一条测试用例进行测试,统计测试结果(通过/失败);

    b) 根据a)的结果选择第二条测试用例。若a)的结果是通过,则选择与a)用例海明距离最大的用例进行测试;若a)的结果是失败,则选择与a)用例海明距离最小的用例进行测试;

    c) 将a)和b)使用的用例从用例集中去除;

    d) 重复b),直到测试资源耗尽或满足测试达标要求。

    4. 自适应测试方法的意义

    自适应测试方法理论基础是,由于被测试软件的输入参数之间存在着相互作用,使得软件的错误仅和某几个参数相关,而引起的失效输入在输入空间的相关分布。自适应测试方法是从故障模式入手,也不失为一种故障假定模式下的最小用例集选择和用例执行方法。

    相关文章

      网友评论

        本文标题:自适应随机测试方法与判定表的结合

        本文链接:https://www.haomeiwen.com/subject/onyclltx.html