测试方法选择的综合策略:
- 首先进行等价类划分,包括输入条件和输出条件的等价划分,将无限测试变成有限测试,这是减少工作量和提高测试效率最有效的方法
- 在任何情况下,都必须使用边界值分析法,经验表明,用这种方法设计出的用例,发现程序错误的能力最强
- 可以用错误推测法追加一些用例,这需要依靠测试工程师的经验
- 对照程序逻辑,检查出已设计出的测试用例的逻辑覆盖程度,如果没有足够覆盖,应当再补充足够的测试用例
- 如果程序说明中有输入条件的组合情况,则一开始就可以选用因果图或判定表驱动法设计测试用例
- 对于参数配置类型的软件,要用正交试验法选择较少的组合方式,达到最佳效果
- 对于业务流清晰的系统,可利用场景法贯穿整个测试案例过程,在案例中综合使用各种设计方法
黑盒测试用例设计方法:
等价类划分
边界值分析法
决策表法
因果图
错误推测法
正交试验法
场景法
等价划分类:
将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性
把所有可能的输入数据(有效的和无效的)划分成若干个等价的子集(称为等价类),使得每个子集中的一个典型值在测试中的作用与这一子集中所有其它值的作用相同
有效等价类:
对于程序的需求规格说明书来说是合理的,有意义的的输入数据组成的集合。利用有效性等价类可以检验程序是否实现了规格说明书中所要求的功能或性能。
无效等价类:
与有效等价类正好相反,无效等价类指对程序的规格说明是不合理的或无意义的数据所构成的集合。无效等价类至少应该有一个,也可能有多个。
如何划分等价类:
首先从程序的规格说明书种找出各个输入条件,在为每个输入条件划分两个或多个等价类,形成若干的互不相交的子集
确定等价类划分法设计测试用例通常分两步进行:
- 确定等价类,列出等价类表。
- 确定测试用例。
等价划分类的原则:
- 按区间划分: 在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。如:在成绩表中输入是学生成绩,范围是0~100。
(~,0)、[0,100]、(100,~)
- 按数值划分:在输入条件规定了输入值的集合或者规定了"必须如何"的条件的情况下,可确立一个有效等价类和一个无效等价类; 如:学生成绩在0~100分之间,但是必须大于等于60分才能记为及格。 [0,60),[60,100]
- 按数值集合划分:在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
(True or False)(奇数 和 偶数) - 按限制条件或规则划分: 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类。
有效等价类:专科、本科、硕士、博士 无效等价类:小学、初中、高中 - 按限制条件或规则划分: 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则) 比如:过马路时,遇到"红灯禁行" 有效等价类:所有车辆和行人都停下来(符合规则) 无效等价类:车辆没有停下来(不符合规则) 行人没有停下来(不符合规则)
- 细分等价类:在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。 例:公司招聘员工,基本学历要求专科及以上,该单位学历与工资挂钩,当学历高于硕士时,则基本工资才可以为4000元。
.
确定测试用例:
- 为每一个等价类规定一个唯一的编号
- 设计一个新的测试用例,使其尽可能多的而覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止。
- 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
边界值分析:
对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来等价类的边界。
采用此方法的原因:故障往往出现在输入变量的边界值附近。
使用边界值分析法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界值的值作为测试数据,而不是选取等价类中的典型值或则任意值作为测试数据
与等价类划分的区别:
- 边界值分析不是从某等价类中随便挑选一个作为代表,而是是则会个等价类的每一个边界都要作为测试条件。
- 边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况
边界值分析原则:
- 如果条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据 例如,如果程序的规格说明中规定:"重量在10公斤至50公斤范围内的邮件,其邮费计算公式为……"。作为测试用例,我们应取10及50,还应取10.01,49.99,9.99及50.01等
- 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1,比最大个数多1的数作为测试数据 比如,一个输入文件应包括1~255个记录,则测试用例可取1和255,还应取0及256等
- 将规则1)和2)应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。 例1:某程序的规格说明要求计算出"每月保险金扣除额为0至1165.25元", 其测试用例可取0.00及1165.24、还可取一0.01及1165.26等 例2:一程序属于情报检索系统,要求每次"最少显示1条、最多显示4条情报摘要" 这时我们应考虑的测试用例包括1和4,还应包括0和5等
- 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例
- 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例
例题1
健壮性测试:作为边界值分析的一个简单的扩充,他出了对变量的5个边界值分析取值外,还需要增加一个略大于最大值(max+)以及略小于最小值(min-)的取值,检查超过极限值时系统的情况。因此,对于有n个变量的函数采用健壮性测试需要6n+1个测试用例。
决策表法:
(判定表驱动法):
所有的黑盒测试方法中,基于判定表的测试是最为严格、最具有逻辑性的测试方法
判定表的概念:判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。
判定表的优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。
情况的种类为2^n; n为条件的个数
判定表由4部分组成,即条件桩、动作桩、条件项、动作项,及规则 条件桩:列出了问题的所有条件,通常认为列出的条件的次序无关紧要 动作桩:列出了问题规定可能采取的操作,这些操作的排列顺序没有约束 条件项:列出针对它所列条件的取值,在所有可能情况下的真假值 动作项:列出条件项的各种取值情况下应该采取的动作 规则:任何一个条件组合的特定取值及其相应要执行的操作。在判定表中贯穿条件项和动作项的一列就是一条规则。
使用范围:
- 最严格,最具有逻辑性的测试方法
- 程序中,如果输入输出比较多,输入之间和输出之间相互制约的条件比较多,在这种情况下应用决策表很合适if-then-else逻辑很突出——输入变量之间存在逻辑关系——涉及输入变量子集的计算——输入和输出之间存在因果关系
优点:它能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免遗漏。
缺点:不能表达重复执行的动作,例如循环结构。
构造判定表:
- 确定规则的个数。有n个条件的判定表有2n个规则(每个条件取真、假值)
- 列出所有的条件桩和动作桩。
- 填入条件项。
- 填入动作项,得到初始判定表
- 简化决策表,合并相似规则
若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。 合并后的条件项用符号"-"表示,说明执行的动作与该条件的取值无关,称为无关条件。
合并示例:
因果图(逻辑模型):
定义:一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。
因果图法最终生成的还是判定表,采用因果图法设计测试用例的步骤方法如下:
- 分析软件规格说明中哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。
- 分析软件规格说明中的语义,找出原因与结果之间、原因与原因之间对应的关系, 根据这些关系画出因果图。
- 由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。
- 把因果图转换为决策表。
- 根据决策表中的每一列设计测试用例。
因果图法的优点:
- 考虑到了输入情况的各种组合以及各个输入情况之间的相互制约关系。
- 能够帮助测试人员按照一定的步骤,高效率的开发测试用例。
- 因果图法是将自然语言规格说明转化成形式语言规格说明的一种严格的方法,可以指出规格说明存在的不完整性和二义性
应用场景:
当软件的输入条件过多时,可以考虑输入的所有排列组合情况,考虑条件之间和条件结果之间关系,防止遗漏 局限性:
测试用例数目可能会很大,不便于维护
例题1:
例题2
错误推测法
定义:基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法。
基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。比如设计一些非法的、错误的、不正确和垃圾数据进行输入测试。比如以前测试中曾经发现的错误,例如输入数据和输出数据为0的情况
举例:
- 在单元测试时曾列出的许多在模块中常见的错误、以前产品测试中曾经发现的错误等,这些就是经验的总结。
- 还有,输入数据和输出数据为0的情况、输入表格为空格或输入表格只有一行等。这些都是容易发生错误的情况,可选择这些情况下的例子作为测试用例。
实例:
- 测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况: 输入的线性表为空表 表中只含有一个元素 输入表中所有元素已排好序 输入表已按逆序排好 输入表中部分或全部元素相同
- '聊天窗口功能
A。输入特殊字符(全角,半角)后,窗口是否能够正常显示
B。输入空格,是否能够过滤,是否会算入长度计算
C。输入html字符
D。输入脚本语言函数
E。在需要密码验证,或者需要二次输入确认的地方,通过复制粘贴第一次的输入内容是否能够通过 - 查询功能
A。无条件查询
B。是否支持模糊查询
C。查询的关键字之间是否可用连接符
D。输入正确的查询条件以前加上空格,看是否能正确地查出相应的数据 - 登录功能
A。输入的数据前存在空格,是否能够正常登录
B。输入的密码是否能够加密显示
C。用户在注销之后是否能够再登录成功
正交试验法
为什么需要正交实验设计方法:
- 利用因果图来设计测试用例时, 作为输入条件的原因与输出结果之间的因果关系,有时很难从软件需求规格说明中得到。
- 往往因果关系非常庞大,以至于据此因果图而得到的测试用例数目多的惊人,给软件测试带来沉重的负担,为了有效地,合理地减少测试的工时与费用,可利用正交实验设计方法进行测试用例的设计。
定义: 正交实验设计方法是依据Galois理论,从大量的(实验)数据(测试例)中挑选适量的、有代表性的点(例),从而合理地安排实验(测试)的一种科学实验设计方法.类似的方法有:聚类分析方法,因子方法方法等
指标:通常把判断试验结果优劣的标准叫做试验的指标
因子:影响实验指标的条件称为因子。
因子的状态:影响实验因子的条件
正交表示L8(2^7)
正交试验法步骤:
实例:
场景法
定义:现在的软件都是用事件来触发流程的,事件触发时的情景并成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。
用例场景用来描述流经用例的路径,从用例开始到结束,遍历这条路径上所有基本流和备选流
基本流用直黑线表示,备选流用不同的彩色表示
经典案例: