你一定想知道的软件测试用例设计方法总结
Posted 软件测试老莫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你一定想知道的软件测试用例设计方法总结相关的知识,希望对你有一定的参考价值。
目录
前言
软件测试用例设计是软件测试中非常重要的一个环节,它决定了测试的质量和效率。采用科学合理的测试用例设计方法,能够有效地发现软件中的缺陷,提高软件质量。本文将介绍几种常用的软件测试用例设计方法,并分析它们的特点和适用场景。
等价类划分法
等价类划分法是一种基于输入值分组的测试设计方法。它将所有可能的输入值划分为若干个等价类,只需从每个等价类中选择一个代表性输入值进行测试即可。这样可以大大减少测试用例的数量,并且能够覆盖到所有可能的输入情况。
例如,我们需要测试一个注册页面,其中用户名和密码都有一定的长度限制。根据等价类划分法,我们可以将用户名和密码的长度划分为以下几个等价类:
- 长度小于最小值
- 长度等于最小值
- 长度在最小值和最大值之间
- 长度等于最大值
- 长度大于最大值
然后,我们只需要从每个等价类中选择一个代表输入值进行测试即可。
边界值分析法
边界值分析法是一种基于输入参数的测试设计方法。它通过对输入参数的最小值、最大值和临界值进行测试,以检测软件在边界处是否存在错误。
例如,我们需要测试一个计算器的加法模块,其中输入参数是两个数字。通过边界值分析法,我们可以将输入参数的范围划分为以下几个部分:
- 第一个数小于最小值
- 第一个数等于最小值
- 第一个数在最小值和最大值之间
- 第一个数等于最大值
- 第一个数大于最大值
类似地,我们还可以对第二个数进行类似的划分。然后,我们只需从每个部分中选择一个代表性的输入值进行测试即可。
决策表设计法
决策表设计法是一种基于判定条件的测试设计方法。它将输入条件、判定条件和输出条件组成一个决策表,从而得到所有可能的测试情况。决策表设计法适用于复杂的业务流程和多条件判断的情况下。
例如,我们需要测试一个网上商城的订单处理流程,其中包含了很多条件判断。通过决策表设计法,我们可以将输入条件、判定条件和输出条件组成一个决策表,如下表所示:
输入条件 | 判定条件 | 输出条件 |
---|---|---|
客户等级 | 总价大于1000元 | 打折10% |
客户等级 | 总价大于500元且小于等于1000元 | 打折5% |
客户等级 | 总价小于等于500元 | 不打折 |
支付方式 | 在线支付且订单金额大于500元 | 享受优惠 |
发货地点 | 离客户家庭地址近 | 加速发货 |
是否为VIP客户 | 是 | 免邮费 |
然后,我们只需按照决策表中的组合进行测试即可。
其他
除了以上几种常见的测试用例设计方法外,还有其他一些方法也值得我们去了解和掌握。例如随机测试法、用户场景测试法、边界对称性测试等。
总之,在软件测试过程中,测试用例设计方法的选择对测试结果的准确性和有效性有着重要的影响。因此,测试人员需要针对不同的应用场景和测试需求选择合适的测试用例设计方法,并通过有效的测试用例设计来提高测试覆盖度、降低测试成本、提高软件质量。
在实际测试过程中,还需要注意以下几点:
1.测试用例需要具有代表性:测试用例需要能够充分反映用户的需求和使用场景,覆盖软件的核心功能和特殊情况,以保证测试的全面性和准确性。
2.测试用例需要具有可读性:测试用例需要简明易懂,避免出现繁琐复杂的过程和冗长的数据。
3.测试用例需要具有可重复性:测试用例需要能够重复执行,以便检查测试结果的正确性和稳定性。
4.测试用例需要具有可维护性:测试用例需要方便维护和管理,随着软件需求变更或者错误修复,需要及时更新测试用例。
5.测试用例需要具有高效性:测试用例需要能够在短时间内完成测试,并且能够覆盖到系统可能出现的所有情况,以提高测试效率和质量。
当然,关于测试用例设计方法还有一些其他值得注意的方面:
-
静态测试用例设计方法:静态测试用例设计方法主要侧重于代码和文档的分析,常见的静态测试用例设计方法包括结构化分析、数据流分析、控制流分析等。
-
动态测试用例设计方法:动态测试用例设计方法主要通过程序的运行来进行测试,常见的动态测试用例设计方法包括随机测试、边界对称性测试、健壮性测试等。
-
测试用例设计工具:目前市场上有很多测试用例设计工具可供选择,这些工具能够帮助测试人员更快速地设计测试用例,提高测试效率和覆盖度。例如,TestLink、SpiraTest、HP Quality Center等。
-
测试用例设计过程中应注意的问题:在测试用例设计过程中,需要注意测试用例的可重复性、可读性、可维护性、覆盖面和准确性等问题。同时,测试用例也需要经常更新和维护,以适应软件需求变更和错误修复。
-
测试用例设计方法的综合应用:不同的测试用例设计方法之间并不是相互独立的,测试人员可以根据实际情况综合使用不同的方法,以达到更好的测试效果。
总结
总的来说,测试用例设计方法是测试工作中非常重要的一环。通过选择合适的测试用例设计方法和工具,测试人员可以提高测试效率、覆盖面和准确性,以达到保证软件质量的目的。
黑盒测试用例设计总结
最常见黑盒测试方法包括:边界值、等价类、错误推测法、场景法、因果图法、判定表组成法、正交实验设计。(注:黑盒测试仅需知道系统的【输入】和【输出】,不需要知道代码是怎么写的。所以代码部分就不赘述了)
一、边界值测试
经实践总结:大量的软件缺陷发生在输入域和输出域的边界上。所以在设计测试用例的时候,应该重视边界。
例1:只有一个输入条件时,可以这么选取测试用例。(以坐标轴举例。以红点表示测试用例)
例2:当有两个输入条件的时候,可以这么选取测试用例。(以红点表示测试用例)
小结:
边界值测试是一种最基本的黑盒测试方法,它是“等价类划分”这种测试方法的良好补充。但该方法会有较大的冗余和漏洞。边界值测试对布尔型无效(因为布尔型不是“true”就是“false”,不存在边界值的概念)。当然,边界值测试并非黑盒测试独有,它也可以应用在白盒测试(比如数组边界的测试、对循环次数边界的测试……)。
二、等价类划分
划分等价类
01 要做到穷尽测试是不可能的,所以在设计测试用例时往往要先划分等价类再选取“人大代表”。划分的子集应该满足如下因素:
(1)每个子集内部所有的数据都是等价的;
(2)子集之间互不相交;
(3)所有子集的并集是整个输入域或输出域;
PS:
(1)【有效等价类】是相对于规格说明合理的、正确的、有意义的输入数据构成的集合。
(2)【无效等价类】是相对于规格说明不合理的、错误的、无意义的输入数据构成的集合。举例说明。
例1:如网站注册用户名的时候,输入框要求“用户名由字母开头,后跟字母或数字的任意组合,且长度<=8”。
例2:每个学生可选修1-3门课程;
缺陷相关性假设
02 针对缺陷相关性假设,可将等价类测试分为【弱等价类测试】和【强等价类测试】。在现实情况中,由于缺陷的可能情况非常多,一个子集中的数据对某种缺陷是等价的,但对另外一种缺陷可能又是不等价的。
①弱一般等价类(WN)测试:考虑单缺陷假设;测试用例使用每个等价类中的一个值。
②强一般等价类(SN)测试:考虑多缺陷假设;测试用例集合为等价类笛卡儿积。
例1:弱等价类
弱等价类是考虑某个单一缺陷情况下的等价情况,子集里所有数据在这种缺陷假设下是等价的,并且划分成的几个等价类能够覆盖整个测试空间的单一缺陷。比如以下一段程序:
我们可以将数据划分为两个等价类,0~10为1个等价类,大于10的数据为1个等价类,在考虑“>”号误写成“<”号这种缺陷的情况下,这两个等价集中的数据都是等价的,比如0~10这个等价类中,使用0或使用10来进行测试都能发现缺陷。这两个等价类中各自抽取一个测试数据进行测试,都能代表其他数据揭示出“>”号误写成“<”号这种缺陷来,因此整个测试空间都被覆盖了。
例2:强等价类
强等价类是在多个缺陷假设前提下,各个等价类中的可测数据在单个或多个缺陷假设下是等价的,并且划分的各个等价子集中各自取一个测试数据可以覆盖整个测试空间的多个缺陷情况。
再考虑前面弱等价类中的例子程序,出错的可能性有哪些呢?
除了大于号会错写成小于号外,实际上还有可能写成大于等于号,10有可能写成1或100等大于10或小于10的数。(PS;为方便描述以错写成1和100为例)
①考虑0~10这个集合,在误写成中间一列条件中情况下,里面的数据并不等价,比如误写成x>1的情况下,使用1做测试和使用2做测试揭示缺陷是不同的,使用1做测试发现不了缺陷,但使用2测试就能发现缺陷。
②在判断条件误写成x>=10条件下,10和0~9中的任一数据也不等价,并且使用大于10的数据也无法揭示出条件错写成x>=10这个缺陷,因此整个测试空间的多个缺陷无法被已划分的两个等价类来覆盖,10需要单独划分成一个等价类。
③这样将数据划分成三个等价类0~9、10、大于10的数据,再看看这三个等价类是否可以覆盖表中各种出错情况,显然在x>100和x>=100两种情况下,大于10的数据集合中的数据是不等价的,使用大于100的数据不能揭示出缺陷,但使用大于10小于100的数据却能揭示出缺陷,因此需要对大于10的数据再划分等价类,实际上只要将边界值11划一个单独的等价类就可以了。
④这样总共得到四个等价类0~9、10、11、大于11的数据,从这四个等价类中各取一个数据的话就可以将以上列出的所有可能的缺陷情况都揭示出来,但是各个等价类并不是对所有缺陷都等价的,这种划分的等价类由于可以将各种缺陷情况覆盖到,把它叫做强等价类。
小结:
等价类测试可以处理布尔型和逻辑型的问题。建议在划分等价类后对每个等价类进行编号,这样可看起来会更清晰。
三、因果图
基于因果图的测试方法,要考虑如下问题:
(1)规格说明书有哪些原因?
(2)规格说明书有哪些结果?
(3)规格说明书中各种原因之间的关系怎么样?
(4)规格说明书中各种结果之间的关系怎么样?
(5)规格说明书中原因和结果之间的约束条件怎么样?
(6)如何从规格说明书中的原因和结果设计测试用例?
01 因果图
【a】恒等; 若c1为1,则e1也为1。若c1为0,则e1也为0;
【b】非:若c1是1,则e1是0。若c1为0,则e1是1;
【c】或:若c1与c2中有一个是1或者两个都为1,则e1是1。若c1和c2都为0,则e1是0;
【d】与:当且仅当c1和c2都是1,则e1为1,否则e1为0。
E约束(异;异或):a,b最多有一个可能为1,不能同时为1。
I约束(或;包含);a,b,c中至少有一个必须为1,不能同时为0。
O约束(惟一);a和b必须有一个且仅有一个为1。
R约束(要求);a是1时,b必须是1,即a为1时,b不能为0。
M约束;对输出条件的约束,若结果a为1,则结果b必须为0。
举例:
某个软件的规格说明书中规定;第一个字符必须是A或B,第二个字符必须是一个数字字符,在此情况下进行文件的修改。但如果第一个字符不正确,则给出信息L;如果第二个字符不正确,则给出信息M。
可按照如下步骤设计测试用例:
(1)根据软件规格说明书。列出原因和结果
(2)找出原因和结果之间的关系,原因和原因之间的约束关系
(3)将因果图转化为判定表
(4)根据判断表设计测试用例
原因: 结果:
C1:第一个字符是A; E1:给出信息L;
C2:第一个字符是B; E2:修改文件;
C3:第二个字符是一个数字字符。 E3:给出信息M;
转化成决策表
小结:
因果图可以用于描述输入与输出的相互关系。但是其绘制过程比较繁琐。因果图可以转化成决策表。建议直接绘制决策表。
四、决策表
举例:
已知a、b、c三边,判断是否能构成三角形?如果是三角形的话,是什么哪种三角形?
解答(决策表的建立步骤):
1、列出所有的条件桩和动作桩;
2、填入条件项;
3、填入动作项,制定初始判定表;
4、简化、合并相似规则或者相同动作。
小结:
决策表测试仅适合对输入域展开分析,不适合对输出域展开测试。
五、错误推测法
01 来源
错误推测法凭借的是测试人员的直觉和经验,推测系统中可能出现的各种缺陷。常常是列举出系统中所有【可能的缺陷和容易发生缺陷】的特殊情况,并根据它们来设计测试用例。
举例:测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况:
小结:
优点:充分发挥个人的经验和潜能,命中率高
缺点:覆盖率难以保证;过多的依赖于个人的经验。
六、边界值测试
软件的工作流程往往对应着现实生活的场景。应该从更高些的视角来把握系统的业务流程,了解功能模块。在熟悉流程的基础上才能讨论局部细节的测试设计。场景法的核心是事件流和场景。
举例:
有一个在线购物的实例,用户进入一个在线购物网站进行购物,选购物品后,进行在线购买,这时需要使用帐号登录,登录成功后,进行付钱交易,交易成功后,生成订购单,完成整个购物过程。
解答:
step1:确定基本流和备选流;
step2:根据基本流和备选流来确定场景;
step3:设计用例。对于每一个场景都需要确定测试用例。可以采用矩阵或决策表来确定和管理测试用例。下面显示了一种通用格式,其中各行代表各个测试用例,而各列则代表测试用例的信息。
step4:设计用例设计数据,把数据填入上面的用例表中。
(PS:测试用例只是购物的一部分测试用例,应该还可以继续补充以达到比较好的覆盖。)
七、正交实验设计
以上是关于你一定想知道的软件测试用例设计方法总结的主要内容,如果未能解决你的问题,请参考以下文章