分分28官网|分分28开奖网

实验:测试用例设计(五)
作者:强官涛   类型:测试开发    类别:实验   日期:2020-04-21    阅读:1235 次   消耗积分:0 分



本周分享《测试用例设计》实验内容,由于知识含量较多,现在拆分为多篇分享,今日是第一篇。

回顾前期内容,请点击







 实 验 简 介 



本实验主要讲解测试用例设计方法,包括等价类,边界值,正交试验表,判定表,流程分析法,状态迁移法,错误猜测等。




 实 验 目 的 



(1)、掌握测试用例设计方法,以便设计高效的测试用例。




 实 验 流 程 


5. 判定表


  • 什么是判定表法


判定表是分析和表达多种输入条件下系统执行不同动作的工具。在程序设计发展的初期,判定表就已被当作编写程序的辅助工具了,它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确。判定表通常由四个部分组成,如下图:


20200421_112904_249.png

(1). 条件桩:列出了系统的所有输入,列出的输入次序无关紧要

(2). 动作桩:列出了系统可能采取的操作,这些操作的排列顺序没有约束

(3). 条件项:列出针对它左列输入的取值,在所有可能情况下的真假值

(4). 动作项:列出在输入项的各种取值情况下应该采取的动作

(5). 动作项和条件项一起,指出了在条件项的各种取值情况下应该采取的动作,在判定表中贯穿条件项和动作项的一列就是一条规则,可以针对每个合法输入组合的规则设计用例进行测试。

 

对于判定表可以进行化简工作,化简工作是以合并相似规则为目标的。如果表中有两条或多条规则具有相同的动作,并且其条件项之间存在极为相似的关系,我们便可以将其合并。


20200421_112914_089.png

  • 如何使用判定表法


步骤1:标识输入和输出

逐项分析测试子项的测试规格,找出其中的输入和输出并标识出来,其中要注意以下几点:

(1). 输入需要包括外部消息输入、内部预置的用户状态、数据配置等所有对系统输出有影响的因素;

(2). 输入和输出项只涉及2种取值的,可以只做为一个标识出来。如果输入项涉及多种取值的,每个取值需要做为一个输入标识出来;

(3). 标识符可以自己确定,但输入与输出需要独立标识。


步骤2:构造判定表

将标识的输入填入条件桩部分,将标识的输出填入动作桩部分。条件项部分的列数为2的n次方列,n为输入数。并从最右列到最左列逐列从“NN…..N”到“YY….Y”填入条件项的所有组合。


步骤3:逐列分析条件项组合,填入其动作项

分析每列的条件项取值情况,根据输入和输出逻辑关系,得到该列的输出值为“Y”或“N”,填入该列动作项,得到一条规则。如果该列条件项取值组合不合法,则动作项填入“X”。


步骤4:简化判定表(可选)

简化判定表是将相似规则(即表中的列)进行合并,以简少测试用例,当然它是以牺牲测试用例充分性为代价的。

简化的过程为:找到判定表中输出完全相同的两列,观察它们的输入是否相似,例如只有一个输入不同时,说明不管该输入取何值,输出都是一样的,也就是说该输入对输出是无影响的,因此可以将这两列合并为一列。


下面是两个规则(列)简化为一个规划的示例图:


20200421_112924_967.png

步骤5:生成测试用例

简化后的判定表的每一列可以规划为一个测试用例,它的输入和输出都已经非常明确。

 

  • 案例1


举例:“若用户欠费或停机,则不允许主被叫”,表示为判定表如下:


20200421_112932_784.png

其中条表中的1-4每一列就是一个规则。


针对该判定表可以化简,规则1和规则2的动作完全相同,条件桩中只有条件2的取值不同,因此可将规则1、2合并起来,化简后结果如下,每条规则对应1条测试用例,这样一共是3条测试用例。


20200421_112940_230.png

  • 案例2


订购单的检查:如果金额大于500元,又未过期,则发出批准单和提货单;如果金额大于500元,但过期了,则不发批准单;如果金额小于等于500元,则不论是否过期都发出批准单和提货单,在过期的情况下还需要发出通知单。

 

请用判定表的方法对测试用例进行设计:


20200421_112948_243.png

合并相似规则。注意:用例数不多的情况下,不建议合并。

因为合并存在漏测的风险。一个显然易见的原因是,虽然某个输入条件在输出接口上是无关的,但是在软件设计上,内部针对这个条件走了不同的程序分支。


20200421_112954_762.png


  • 实际应用


从以上的案例可以看出,判定表法主要针对功能需求中的处理过程,处理过程越是复杂,越有必要使用判定表法。考虑到控制系统以及游戏的处理过程一般比较负责,因此判定表法在控制系统和游戏的测试中应用较多。


典型的控制系统比如平常上下楼的电梯,电梯的运动比较复杂,各层人的按键都会影响电梯的运动,这样就可以采用判定表法进行用例设计。下面仅列出判定表中包含的条件和动作。


电梯一般至少有十几层,高的能到几十层,这样考虑测试会非常复杂,因此可以将电梯进行简化,简化成一个三层电梯。该电梯一层只能按上,三层只能按下,二层上下都可以按。为了更好的确定条件和动作,可以先确定动作,然后分析影响这些动作的因素,然后就得到了所有的条件。

电梯的动作很好确定,有三个动作:

(1). 电梯上

(2). 电梯下

(3). 电梯打开


那么有哪些因素会影响电梯的动作呢,通过分析可以得到:

(1). 一层按键(按上或者不按,有2个条件项)

(2). 二层按键(按上、下或者不按,有3个条件项)

(3). 三层按键(按下或者不按,有2个条件项)

(4). 电梯所在楼层(1层、2层或3层,有3个条件项)

(5). 电梯状态(电梯上、电梯下或者电梯停,有3个条件项)


也就是说如果只考虑外部按键对电梯的影响,可以得到5个条件、3个动作,对应的全排列组合有2×3×2×3×3=108个。在这108个全排列组合中有不少组合是无效的,比如电梯所在楼层为1层和电梯状态为下是冲突的,这样针对这108个组合可以进行大量的化简,然后根据化简后的判定表来得到测试用例。


  • 总结

该工程方法普遍适用于各种类型特性的测试设计。

优点:

(1). 充分考虑了输入条件间的组合,对组合情况覆盖充分。

(2). 最终每个用例覆盖多种输入情况,有利于提高测试效率。

(3). 设计过程中,对输入条件间的约束关系做了考虑,避免了无效用例,用例的有效性高。

(4). 能同时得出每个测试项目的预期输出。

缺点:

(1). 当被测试特性输入较多时,判定表的规模将会非常庞大

(2). 输入之间的约束条件不能有效区分输入是否确实需要进行组合测试,会造成不需要组合测试的输入做了组合,从而产生用例冗余。

 

  • 简化:


前面已经提到特性输入多时,会造成判定表规格庞大。考虑到每个特性可以细分为若干功能流程,而这些功能流程都有自己各自的输入,功能流程间的输入是不需要进行组合的。因此,为了简化工作量,在应用本工程方法前建议对特性进行尽可能的功能流程细分,然后在对每个功能流程采用本工程方法。



为了答谢大家对蜗牛学院的支持,蜗牛学院将会定期对大家免费发放干货,敬请关注蜗牛学院的官方微信。


20190320_095757_834.jpg






版权所有,转载本站文章请注明出处:蜗牛学院在线课堂, http://www.mountsinaibaptistchurch.org/note/486
上一篇: 资讯:保底月薪8K起的网络安全课程5月6日正式开班!
下一篇: 资讯:蜗牛学院在读学员必看:复课后如何做好个人防护!
提示:登录后添加有效评论可享受积分哦!