软件测试之用例设计,入门必备
Posted One Tester
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件测试之用例设计,入门必备相关的知识,希望对你有一定的参考价值。
一名测试工程师的学习之路,所有博客链接已存放在该链接下:一个Tester
目录
一、前言
测试用例的编写是测试日常工作中必不可少的事情,而如何设计一份好的测试用例呢?一般测试用例的设计包括以下几个关键点:
前提条件
:测试环境的需求或者某个前置场景需求。例如网购商品并支付的前置条件肯定是需要登录的。测试步骤
:一步步的操作。这里的步骤一定是需要按照编写的步骤可以重现的情况。测试数据
:使用的数据;例如我现在需要登录,肯定是需要写登录使用的用户名和密码,而用户名和密码就是测试数据。预期结果
:根据需求而言,预期的结果。当实际结果与预期结果不一致,则这个用例就是执行失败。
二、用例设计方法
在测试用例设计过程中,常用到的几种测试用例设计方法如下:等价类划分法、边界值法、因果图-判定表设计法
。
2.1、等价类划分法
等价类划分法
:将程序的输入域划分为若干部分,然后从每个部分中选取少数代表性数据当做测试用例,每一类的代表性数据在测试中的作用就等价于这一类中的其他值。从而在某一类中的一个例子发现了错误,就等价于类中其他例子也有同样的错误。反之,如果某一个类中的一个例子没有发现错误,则这个类中的其他例子也不会查出错误。
例如:现在需求为测试一个两位数的加法计算器的计算结果是否正确。其中输入的数值在-99到99之间,大于99或者小于-99的输入应该被拒绝,并显示错误信息。
如果这个需求不采取等价类划分法,而是根据需求依次分别给加法运算的的两个参数输入指定范围的值,对应的测试结果就应该如下:
第一个参数的值 | 第二个参数的值 | 两数相加的值 |
---|---|---|
1 | 1 | 2 |
1 | -1 | 0 |
1 | -2 | -1 |
1 | 2 | 3 |
... ... | ... ... | ... ... |
按照上面这种穷举测试的方法,就会有太多的情况需要进行测试。而不采取穷举测试的话,在进行1+1、1+2的测试之后,是否还有必要测试1+3呢?所以这里就出现了等价类划分法。
等价类划分法的原则如下:
-
如果输入条件规定了
取值的范围或值的个数
,则可确定一个有效等价类和两个无效等价类。 -
如果一个输入条件说明了一个
“必须成立”
的情况,则可划分为一个有效等价类和一个无效等价类。 -
如果输入条件
规定了输入数据的一组可能的值
,而且程序是用不同的方式处理每一个值,则可为每一种值划分一个有效等价类,并划分一个无效等价类。 -
如果我们确知,已划分的某个等价类中的各元素(例子)在程序中的处理方式是不同的,则应据此等价类进一步
划分为更小的等价类
。
根据上面这几个划分的原则,用实际情况可以描述为如下:
1:例如 此处的两位数计算器,取值范围为-99到99,所以就对应两个无效等价类(大于99和小于-99),一个有效等价类(输入的值在-99到99之间)。
2.:第二种必须成立的情况,从开发代码的角度来想,就相当于有一个布尔类型的数值,只可能是true或者false,所以就只有两个等价类。
3:第三种情况,就以考试分数为例,小于60分为不及格,60-70为及格,70-80为中,80-89为良,90-100为优。这里就会根据不同的值划分为一个有效等价类。
在确立好等价类之后,建立等价类表,列出所有划分出的等价类。在基于等价类划分的用例设计中,需要让每一个无效等价类都有唯一的一个测试用例,让每一个有效等价类都有用例(也就是一个用例可以包含多个有效等价类)
。根据等价类划分的原则中的1和4,从而可以设计出下面的几个等价类:
序号 | 功能项 | 有效等价类 | 编号 | 无效等价类 | 编号 |
---|---|---|---|---|---|
1 | 两位数加法 | -99≤加数取值≤0 | 2 | 加数取值<-99 | 1 |
0≤加数取值≤99 | 3 | 加数取值>99 | 4 |
测试用例编号 | 输入数值 | 所属等价类 | 预期输出 |
---|---|---|---|
1 | 50+2 | 3 | 正确输出:52 |
2 | -63+(-20) | 2 | 正确输出:-83 |
3 | -30+10 | 2,3 | 正确输出:-20 |
4 | -130 | 1 | 错误信息 |
5 | 125 | 4 | 错误信息 |
2.2、边界值法
边界值法
:是一种补充等价类划分法的测试用例设计技术,它不是选择等价类的任意元素,而是选择等价类边界的测试用例 。
还是用上面两位数加法的测试而言,可能也会出现以下情况:输入的数值分别为-99和98后,预期是能计算成功的,但是实际可能会出现提示输入值有误,这里就是因为边界值没有得到好的测试。根据边界值法,我们就会新增以下几条用例:
测试用例编号 | 输入数值 | 被测边界 | 预期输出 |
---|---|---|---|
1 | -100 | -99 | 错误信息 |
2 | -99+(-99) | 正确输出:-198 | |
3 | -98+(-98) | 正确输出:-196 | |
4 | 98+98 | 99 | 正确输出:196 |
5 | 99+99 | 正确输出:198 | |
6 | 100 | 错误信息 |
- 如果输入条件规定了取值范围,应以该范围的边界内及刚刚超过范围的边界外的值作为测试用例。例如以a和b为边界,测试用例应当包含a和b及略大于a和略大于b的值。
2.3、因果图与判定表
前面的等价划分法和边界值分析法都是着重考虑输入条件,但是没有考虑条件的各种组合、输入条件之间的相互制约关系。但是如果测试时必须考虑输入条件的各种组合,那么条件组合的数目将是天文数字。所以需要采用一种适合多种条件的组合、产生多个相应动作的测试方法,这就需要利用因果图
设计方式来考虑。
因果图
:基于上面这种思想,一些程序的功能可以用决策表(判定表)
的形式来表示,并根据输入条件的组合情况规定相应的操作。因此,可以考虑为决策表中的每一例设计一个测试用例,以便测试程序在输入条件的某种组合下的输出是否正确。
而一般判定表包含以下四部分:
条件桩
:列出了问题的所有条件,通常认为列出得条件的次序无关紧要。动作桩
:列出了问题规定可能采取的操作,这些操作的排列顺序没有约束。条件项
:列出针对它左列条件的取值,在所有可能情况下的真假值。动作项
:列出在条件项的各种取值情况下应该采取的动作。
还是以两位数加法计算器为例,使用因果图-判定表的方法进行用例设计:
- 分析出输入条件和输出条件
输入1
条件1: | 0≤X≤99 |
条件2: | -99≤X<0 |
条件3: | X<-99 |
条件4: | X>99 |
条件1: | 0≤X≤99 |
条件2: | -99≤X<0 |
条件3: | X<-99 |
条件4: | X>99 |
输出
正确计算 |
错误计算 |
-
分析条件互斥
输入1的条件1、2、3、4之间互斥,输入2的条件1、2、3、4互斥,输入1与输入2之间不存在互斥。输出结果正确与错误互斥。 -
分析、简化并画出判定表
输入1 | ||||||||
---|---|---|---|---|---|---|---|---|
条件1 | T | T | - | - | - | - | - | - |
条件2 | - | - | T | T | - | - | - | - |
条件3 | - | - | - | - | T | T | - | - |
条件4 | - | - | - | - | - | T | - | - |
输入2 | ||||||||
条件1 | T | - | T | - | - | - | - | - |
条件2 | - | T | - | T | - | - | - | - |
条件3 | - | - | - | - | - | - | T | - |
条件4 | - | - | - | - | - | - | - | T |
输出 | ||||||||
正确计算 | X | X | X | X | - | - | - | - |
错误提示 | - | - | - | - | X | X | X | X |
- 得到测试用例
测试用例编号 | 输入数值 | 预期输出 |
---|---|---|
1 | 98+98 | 正确输出:196 |
2 | 99+(-99) | 正确输出:0 |
3 | -98+(50) | 正确输出:-48 |
4 | -34+(-45) | 正确输出:-79 |
5 | -100 | 错误信息/td> |
6 | 100 | 错误信息 |
7 | 20+(-123) | 错误信息 |
8 | 20+(123) | 错误信息 |
以上是关于软件测试之用例设计,入门必备的主要内容,如果未能解决你的问题,请参考以下文章