【软件测试】测试用例设计方法

1. 等价类划分法

1.1. 等价类划分法的定义

等价类划分法是把所有可能的输入数据,即程序的输入数据集合划分成若干个子集(即等价类),然后从每一个等价类中选取少量具有代表性的数据作为测试用例,如下图所示。

img

测试某等价类的代表值就等效于对于这一类其他值的测试。比如我在输入域1中选取一个输入,然后进行测试,对于输入域1中的其他输入都是等效的。

等价类划分法将不能穷举的测试数据进行合理分类,使用较少的若干个数据代表更为广泛的数据输入。

1.2. 有效等价类和无效等价类

在使用等价类划分法设计测试用例时,不但要考虑有效等价类划分,同时也要考虑无效等价类划分。

**有效等价类一般是指完全满足产品规则说明的输入数据,即有效的、有意义的输入数据所构成的集合。**利用有效等价类可以检验程序是否满足规则说明所规定的功能性要求。

无效等价类与有效等价类相反,即不满足程序输入要求或无效的输入数据构成的集合。

例如,计算器程序只能处理数值计算,包括正负数的加减乘除计算等,当输入字符数据就相当于输入了无效数据。当从键盘上输入数值时,计算器正常接收输入并正确显示该数值;当从键盘上输入字符时,计算器不接收这些无效输入,若利用复制功能将字符或字符串粘贴到计算器的输入框中时,计算器会显示“无效输入”,如下图所示。

img

使用无效等价类,可以测试程序的容错性——对异常情况的处理。在程序设计中,不但要保证有效的输入能产生正确的输出,而且要保证系统有一定的容错处理能力,在发生错误或输入无效数据的时候,系统应能自我保护而不至于发生崩溃,并应给出响应的错误提示。

1.3. 等价类划分法实例分析

在应用程序中,经常要求输入电话号码,我国的固定电话号码一般由两部分组成:

  1. 地区码:以0开头的3位或4位数字;
  2. 电话号码:以非0、非1开头的7位或8位数字。

应用程序应接收一切符合上述规定的电话号码,但应拒绝不符合上面规定的号码。

首先根据地区码和电话号码的要求划分等价类,确定有效等价类和无效等价类,为每个等价类规定一个唯一的编号,如下表所示。

输入数据有效等价类无效等价类
地区码①以0开头的3位地区码②以0开头的4位地区码③以0开头的小于3位的数字串④以0开头的大于4位的数字串⑤以非0开头的数字串⑥以0开头的含有非数字的字符串
电话号码⑦以非0、非1开头的7位号码⑧以非0、非1开头的8位号码⑨以0开头的数字串⑩以1开头的数字串⑪以非0、非1开头的小于7位数字串⑫以非0、非1开头的大于8位数字串⑬以非0、非1开头的含有非法字符7位或8位数字串

设计一个测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,此项工作重复进行,直到所有的有效等价类均被覆盖为止。例如,地区码随机取一个有效等价类,电话号码随机取一个有效等价类,合起来生成第一条测试用例。接下来,从地区码和电话号码中取尚未覆盖的其他有效等价类,合起来生成第二条测试用例,如下表所示。

测试用例输入数据/覆盖的有效等价类
040 6123456 覆盖①、⑦
0571 92345678 覆盖②、⑧

设计一个新的测试用例,使其只覆盖一个无效等价类,此项工作重复进行,直到所有的无效等价类均被覆盖。例如,电话号码随机取一个有效等价类,地区码则覆盖一个无效等价类,合起来构成一个无效输入数据。重复此步骤直至等价类划分表中所有的无效等价类均被覆盖。最终生成的测试用例如下。

测试用例输入数据/覆盖的有效等价类输入数据/覆盖的无效等价类
040 6123456 覆盖①、⑦0571 92345678 覆盖②、⑧04 61234567 覆盖③05011 61234567 覆盖④40 92345678 覆盖⑤025x 6123456 覆盖⑥
040 06123456 覆盖⑨0571 1123456 覆盖⑩040 612345 覆盖⑪0571 912345678 覆盖⑫0571 9123456zx 覆盖⑬

2. 边界值分析法

2.1. 边界值分析法的定义

边界值分析法是针对输入数据的边界条件进行分析以确定边界值,然后设计出对应边界值的测试用例。在测试用例的设计中,不仅要取边界值作为测试数据,而且要选取刚刚大于和刚刚小于边界值的数据作为测试数据。例如,{1, 100}的数据区间,不仅要测试边界值1和100,还要测试0、2、99、101等值,虽然0和101是无效数据,但应使用这些无效数据去测试系统是否能判断出无效数据,并给予提示或其他的容错处理。

在进行等价类分析时,往往要先确定边界。如果不能确定边界,就很难定义等价类所在的区域。只有边界值确定下来,才能划分出有效等价类和无效等价类。边界确定清楚了,等价类就自然产生了。所以说,边界值分析法是对等价类划分法的补充。

2.2. 边界点

这里简单的介绍一下边界点。

  1. 上点:边界上的点
  2. 内点:边界内的点
  3. 离点:边界值附近的一个点(闭区间区间外距离上点最近的点,开区间区间内距离上点最近的点)

用两个例子来说明上面的概念。

img

img

2.3. 边界值法实例分析

某保险网站的前台计算保费的页面中要求输入被保险人的年龄,根据不同的年龄使用不同的保险费率计算标准。保费计算方式为:保费 = 保险额 X 保险费率。其中,115岁,保险费率为10%;1620岁,保险费率为15%;2150岁,保险费率为20%;5170岁,保险费率为25%。

综上所述,该程序的等价类划分结果如下所示。

年龄保险费率年龄保险费率
x < 0无效输入20 < x <= 5020%
1 <= x <= 1510%50 < x <= 7025%
15 < x <= 2015%x > 70无效输入

3. 判定表法

判定表是一种表达逻辑判断的方法。

其中判定表的关系有如下几种。

  1. 与:所有的条件必须满足,如果一个条件不满足,此时结果为假。
  2. 或:满足其中一个条件结果就为真,如果条件全部为假,结果就为假。
  3. 恒等:条件为真,结果一定为真。
  4. 非:条件为假,结果才为真。

3.1. 如何用判定表法设计测试用例

  1. 分析所有可能的输入和可能的输出。
  2. 找出输入和输出之间的对应关系。
  3. 设计判定表。
  4. 把判定表对应到每一个测试用例。

3.2. 判定表法实例分析

如下图是公交一卡通自动充值模拟系统

img

需求如下所示。

  1. 系统只接收50元或100元纸币,一次充值只能使用一张纸币,一次充值金额只能为50元或100元。
  2. 若输入50元纸币,并选择充值50元,完成充值后退卡,提示充值成功。
  3. 若输入50元纸币,并选择充值100元,提示输入金额不足,并退回50元。
  4. 若输入100元纸币,并选择充值50元,完成充值后退卡,提示充值成功,找零50元。
  5. 若输入100元纸币,并选择充值100元,完成充值后退卡,提示充值成功。
  6. 若输入纸币后在规定时间内不选择充值按钮,退回输入的纸币,并提示错误。
  7. 若选择充值按钮后不输入纸币,提示错误。

下面给出公交一卡通自动充值系统的测试用例设计过程。

  1. 条件之间的制约及组合关系

根据上述描述,输入条件为:

  • 投币50元(1)
  • 投币100元(2)
  • 选择充值50元(3)
  • 选择充值100元(4)

输出结果为:

  • 完成充值、退卡(a)
  • 提示充值成功(b)
  • 找零(c)
  • 提示错误(d)
  1. 明确所有条件之间的制约关系以及组合关系

  2. 写出判定表

12345678
输入投币50元YYY
投币100元YYY
选择充值50元YYY
选择充值100元YYY
输出a. 完成充值、退卡YYY
b. 提示充值成功YYY
c. 找零YYYY
d. 错误提示YYYYY
  1. 根据判定表写出测试用例
编号用例说明预期结果
1投币50元,选择充值50元正确充值50元,提示充值成功后退卡
2投币50元,选择充值100元系统提示错误并退回50元
3投币100元,选择充值50元正确充值50元,提示充值成功后退卡,并找回50元
4投币100元,选择充值100元正确充值100元,提示充值成功后退卡
5投币50元系统提示错误并退回50元
6投币100元系统提示错误并退回100元
7选择充值50元系统提示错误
8选择充值100元系统提示错误

4. 正交表法

4.1. 什么是正交表

正交表是一种用于设计实验的统计工具,它通过排列和组合不同的因素和水平,以便在最小的试验次数下得出最大的信息。正交表能够帮助研究人员确定影响实验结果的关键因素,以及它们之间的相互作用。通过使用正交表,研究人员可以更有效地进行实验设计,节省时间和资源,并获得更可靠的结果。

4.2. 正交表的性质

  1. 每一列中各数字出现的次数都一样多
  2. 任何两列中的各有序数对出现的次数都一样多。

img其中1,2,3在每一列中出现的次数都是相同的。

img这幅图对应的就是性质2。

4.3. 如何通过正交表设计测试用例

首先先了解两个重要的概念。

  1. 因素:输入变量
  2. 水平:每一个输入变量的取值

其次是通过正交表设计测试用例的步骤。

  1. 充分理解需求
  2. 确定因素,确定水平
  3. 画正交表
  4. 补充正交表
  5. 将正交表转换成测试用例

假设这样的一个需求,一个注册的功能,需求是姓名,邮箱,密码,确认密码,验证码必须全部输入后,才能注册。如下面的简图。

img

可以明确的是,

  1. 因素:姓名,邮箱,密码,确认密码,验证码
  2. 水平:填写/不填写

这里我使用allpairs来画正交表,步骤如下。

  1. 将因素和水平放到Excel表格中。

img

  1. 将Excel表格内容直接复制到txt文本中。

img

  1. CMD进入到allpairs安装路径下面

img

  1. 生成正交表

imgimg

后面pairings列忽略不管,其中~代表的是,可以是填写或不填写。根据上面生成的正交表就可以编写测试用例了。这里我就不写了,有兴趣的同学可以自行写一写看一看。

5. 水杯测试用例设计

这里用思维导图的方式来看下实体的测试用例该如何设计。

img

6. 软件模块测试用例的设计

这里以微信发朋友圈的例子来设计测试用例

img

这一篇博客主要讲了测试用例的设计方法,以及给出了实体和软件该从哪些方面进行测试的方向,希望对大家能有所帮助。

  • 37
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值