1. 测试的基本概念
1.1 测试用例
测试用例是在一次实际测试中使用的数据和步骤的组合。
例如在登录QQ时,输入正确的QQ号和错误的密码,点击登录,这是一个测试用例;再次输入正确的QQ号和正确的密码,点击登录,这又是一个测试用例。通过不同的输入数据和操作步骤组合,来检验软件功能是否符合预期。
1.2 测试的经济学原理
在软件测试中,应尽可能使用较少的测试用例去覆盖尽可能多的情况。穷举法虽然能全面测试,但由于软件系统的复杂性,穷举所有可能的输入和操作组合往往不现实,成本过高且效率低下。因此,需要采用合理的测试用例设计方法,在保证测试效果的前提下,提高测试效率。
1.3 测试覆盖度
测试覆盖度是指按照可能的分类对软件功能、输入数据等进行覆盖的程度。通过合理划分测试范围和分类,确保测试用例能够覆盖软件的各个功能点、不同的输入情况以及各种可能的操作流程,从而提高测试的全面性和有效性。
1.4 测试悖论
存在测不尽悖论,即不可能找出软件中所有的缺陷。在测试过程中,我们所做的工作都是无限接近找出所有缺陷,但由于时间、成本等因素的限制,无法做到完全覆盖。可以用公式(y = x + C)来表示,其中(y)是提测版本所固有的缺陷数,(x)是没有发现的缺陷数,(C)是测试发现的缺陷数。随着测试的进行,(C)会逐渐增加,但(x)始终存在,永远无法使(x)为(0)。
1.5 鱼塘法则
鱼塘法则是一种类比测试的方法。比如先抓100条鱼并打上标记,再扔回塘子,静待一段时间后,分别从鱼塘的不同位置去抓鱼,数带标记的鱼占总数的比例。在测试中,这可以类比为对软件进行抽样测试,通过对部分样本的测试结果来推断整体的质量情况。标记的鱼就像是被测试的部分功能或数据,从不同位置抓鱼则代表从不同角度进行测试,以此来评估软件的整体质量。
2. 等价类划分法
2.1 概念
2.1.1 等价类
等价类是按照输入数据的效果相近或相同进行划分的类型。然后从这些分类中选择有代表性的数据作为测试数据。例如,在用户输入密码时,要求密码必须满足复杂度要求:长度8位以上16位以下,包含大小写字母和数字。根据这个要求,可以将输入数据划分为不同的等价类。
2.1.2 有效等价类
有效等价类是满足要求的等价类。在上述密码输入的例子中,长度在8 - 16位之间,且包含大小写字母和数字的密码属于有效等价类,如“Abcd1234”(长度8位,包含大小写字母和数字)。
2.1.3 无效等价类
无效等价类是不满足要求的等价类。例如,密码长度小于8位(如“Abcd123”)、大于16位(如“Abcd1234567890123”)、缺少大写字母、缺少小写字母、缺少数字或包含特殊符号(如“abcdA12#¥”)等情况都属于无效等价类。
2.2 作用
使用等价类划分法可以降低测试用例的数量,同时保持较高的覆盖率。通过将输入数据划分为有效和无效等价类,从每个等价类中选取代表性的数据进行测试,能够在减少测试用例数量的情况下,仍然覆盖各种可能的输入情况,提高测试效率。
2.3 适用范围
适用于提供输入功能的组件,且只针对单个的输入域。例如,在登录功能中的用户名输入框、密码输入框,注册功能中的手机号码输入框、验证码输入框等,都可以使用等价类划分法来设计测试用例。
2.4 使用步骤
2.4.1 确认等价类
首先确定输入项有哪些,然后从输入项中找出条件限制,针对这些条件限制进行分类。比如在邮箱注册功能中,输入项是email地址,其条件限制为必须符合格式(A@B.C),其中(A)长度3到20位,任意字符;(B)长度1到12位,字母或者数字;(C)必须是(com)、(cn)、(net)、(org)、(edu)选一个。根据这些条件限制,可以划分出不同的等价类。
2.4.2 画出等价类划分表
把确认好的有效类和无效类都填入到表中,清晰地展示不同的等价类情况。例如:
2.4.3 根据等价类划分表编写用例
使用尽可能少的用例去覆盖所有的有效类。对于无效类,通常一个用例覆盖一个无效情况。例如,对于邮箱注册功能:
2.5 等价类划分的规则
2.5.1 取值范围或个数规则
在输入条件规定了取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类。如果输入条件规定了一个取值范围(例如,“数量可以是1到999”),那么有效等价类是(1 < 数量 < 999),无效等价类是(数量 < 1)和(数量 > 999);如果输入条件规定了取值的个数(例如,“汽车可登记一至六名车主”),有效等价类是登记1 - 6名车主,无效等价类是没有车主或车主多于六个。
2.5.2 输入值集合规则
在规定了输入数据的一组值中(假定有(n)个值),并且程序要对每个输入值分别处理的情况下,可以确定(n)个有效等价类和一个无效等价类。如果输入条件规定了一个输入值的集合,而且有理由认为程序会对每个值进行不同处理(例如,“交通工具的类型必须是公共汽车、卡车、出租车、火车或摩托车”),那么为每个输入值确定一个有效等价类(如公共汽车、卡车、出租车、火车、摩托车)和一个无效等价类(如拖车)。如果存在输入条件规定了“必须是”的情况(例如,“标识符的第一个字符必须是字母”),则确定一个有效等价类(首字符是字母)和一个无效等价类(首字符不是字母)。
2.5.3 遵守规则的情况
在规定输入数据必须遵守的规则的情况下,可以确定一个有效等价类和若干个无效等价类。例如,在密码复杂度规则中,满足长度和字符类型要求的是有效等价类,不满足长度要求、缺少特定字符类型等情况是无效等价类。
2.5.4 特定条件下的等价类确定
在输入条件规定了输入值的集合或规定了“必须如何”的条件下,可以确定一个有效等价类和一个无效等价类。比如,规定文件格式必须是(pdf),那么有效等价类是文件格式为(pdf),无效等价类是文件格式不为(pdf)。
2.5.5 进一步细分等价类
在确定已划分的等价类中各元素在程序处理中的方式不同的情况下,则应将该等价类进一步地划分为更小的等价类。例如,测试加法器,要求输入(-99 ~ 99)之间的整数,由于整数在计算机底层存储时正整数和负整数算法不同,所以将有效等价类细分为(-99 ~ (-1))负整数、(0 - 99)正整数分别进行测试(一般对有效等价类数据应用,无效等价类数据一般不需要正、负分别测)。
2.6 优缺点
2.6.1 优点
减少了大量的用例,通过合理划分等价类,选取代表性数据进行测试,避免了对大量重复情况的测试;
保证了比较高的覆盖度,能够覆盖各种可能的输入情况;
设计的步骤清楚简单,易于理解和操作。
2.6.2 缺点
只关注分类的情况,忽略逻辑和特殊情况。例如,在密码复杂度测试中,可能忽略密码与已注册密码相同、密码包含用户生日等特殊逻辑情况。可以通过边界值分析法等其他方法进行弥补。
2.7 随堂练习
注册功能:用户需要输入手机号码和动态验证码完成注册,手机号码要符合三大运营商的要求,验证码需要和短信发送的验证码一致,如果信息正确,提示注册成功,如果手机号码错误,则提示:手机号码有误,如果是验证码错误,提示:验证码无效。
- 确认等价类:手机号码的有效等价类为符合三大运营商号段规则的号码,无效等价类为不符合号段规则的号码;验证码的有效等价类为与短信发送一致的验证码,无效等价类为与短信发送不一致的验证码。
- 画出等价类划分表(示例):
2.8 功能测试的最终对象
功能测试的最终对象是代码实现逻辑。无论是登录功能(涉及用户名、密码、验证码等),正确输入进入主界面,错误输入给出相应提示;还是注册功能(涉及用户名、密码、确认密码、验证码等),正确输入提示注册成功,错误输入给出相应提示,测试都是为了验证代码在各种输入情况下的执行逻辑是否正确,是否符合预期功能。
3. 边界值分析
3.1 概念
边界值是指当输入数据是一个有序集合或者是一个范围的时候,处于集合或者范围边界上的值。
- 开区间((x,y)):取值不包含(x)和(y)。
- 闭区间([x,y]):取值包含(x)和(y)。
- 半开半闭区间:如((x,y])包含(y)但不包含(x),([x,y))包含(x)但不包含(y)。
- 上点:边界上的点,条件里规定是什么,上点就是什么。例如区间((2,5)),上点就是(2)和(5)。
- 离点:开区间的离点,是反方向取一个位置。例如区间((2,5)),离点就是(3)和(4);对于(x <= 3)或(x>=20),离点就是(4)和(19) 。
- 内点:范围内除上点和离点之外的任意一点。
3.2 怎么取
取值的时候,上点和离点都要选取。例如,对于区间([1,10]),上点是(1)和(10),离点在开区间角度考虑,对于((1,10)),离点是(2)和(9)。如果是实数范围,还需要确定精度,比如精确到(0.001)。假设(a)是实数,边界描述是(a>0)(开放边界),上点是(0),离点是(0.001);如果边界描述是(a>=0)(封闭边界),上点仍然是(0),离点是(-0.001)。
3.3 适用范围
- 输入域条件中有有序集合或范围的时候,例如输入年龄范围、文本框输入字符长度范围等。
- 计算机内部的一些数据类型或配置条件,如内存地址范围、文件大小限制等。
3.4 使用步骤
- 先划分等价类,确定输入数据的有效和无效等价类。
- 设计等价类划分表,将等价类情况清晰列出。
- 根据适用范围的要求填写边界值,选取上点、离点和内点作为测试数据。
3.5 边界值分析法使用条件
- 输入条件明确了一个值的取值范围,或是规定了值的个数。例如,输入金额范围是(0.01 - 9999.99)元,或者规定输入的商品数量是(1 - 100)件。
- 输入条件明确了一个有序集合。比如,在选择排序功能中,输入的待排序数组是一个有序集合。
3.6 边界值分析的原则
- 如果输入(输出)条件规定了取值范围,或是规定了值的个数,则应该以该范围的边界内及边界附近的值作为测试用例。例如,输入年龄范围是(18 - 60)岁,测试用例可以选取(18)、(19)、(59)、(60)以及边界外附近的值如(17)、(61)。
- 如果输入(输出)条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。例如,规定输入的文件数量是(1 - 5)个,测试数据可以选取(1)、(0)、(2)、(5)、(6)。
- 如果程序规格说明中提到的输入或输出是一个有序的集合,应该注意选取有序集合的第一个和最后一个元素作为测试用例。比如,在对一个有序列表进行查找功能测试时,选取列表的第一个元素和最后一个元素进行查找测试。
- 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。例如,对于一个数组,选取数组的第一个元素和最后一个元素进行测试。
3.7 边界点的定义
- 上点:边界上的点,如果域的边界是封闭的,上点就在域范围内;如果域的边界是开放的,上点就在域范围外。例如(a=[2,5)),上点是(2)和(5) 。
- 离点:就是离上点最近的一个点,如果域的边界是封闭的,离点就在域范围外,如果域的边界是开放的,离点就在域范围内。例如(a=[2,5)),离点是(1)和(5)(这里(5)在开区间角度作为离点)。
- 内点:顾名思义,就是在域范围内的任意一个点。
3.8边界值分析设计测试用例的步骤
- 分析输入参数的类型:从测试规格说明中仔细剖析输入参数的类型,明确其是数值型、字符型、日期型等。比如在一个计算商品总价的功能中,商品数量输入框的参数类型为数值型,而商品名称输入框的参数类型则为字符型。确定参数类型有助于后续准确划分等价类和选取边界值。
- 等价类划分(可选) :依据输入参数的特点,运用等价类划分方法进行等价类的划分。对于数值型参数,如规定商品数量取值范围是1 - 100,可划分为有效等价类(1 <= 数量 <= 100)和无效等价类(数量 < 1、数量 > 100)。对于字符型参数,若要求用户名长度为6 - 20位,有效等价类为长度在6 - 20位的字符串,无效等价类则为长度小于6位或大于20位的字符串 。这一步并非强制,若输入参数简单明确,也可直接进行下一步。
- 确定边界:运用域测试分析方法,精准确定域范围的边界,找出上点、离点与内点。以商品数量取值范围1 - 100为例,上点是1和100,离点是0和101(开区间视角下),内点可选取50。若涉及实数范围,如价格精确到0.01元,价格取值范围是0.01 - 999.99元,上点为0.01和999.99,离点为0.00和1000.00(精确到0.01) 。
- 相关性分析(可选) :当存在多个输入域时,需要深入分析这些输入域边界值的组合情况。例如在一个登录功能中,同时存在用户名和密码两个输入域,不仅要分别考虑用户名和密码各自的边界值情况,还需考虑不同边界值组合下的登录情况,如用户名取边界值时密码也取边界值、用户名正常密码取边界值等组合,以确保全面测试各种可能情况。
- 形成测试项:综合选择上点、离点与内点,或者这些点的组合来形成测试项。对于商品数量和价格的例子,可形成测试项如(数量 = 1,价格 = 0.01)、(数量 = 0,价格 = 999.99)、(数量 = 50,价格 = 500.00)等。这些测试项用于编写具体的测试用例,以验证系统在不同边界值及组合情况下的正确性。
3.9. 边界值分析法的优缺点
- 优点
-
- 聚焦边界问题:专注于输入的边界状况,能精准定位边界上存在的问题。例如在测试文件上传功能时,文件大小限制为1 - 100MB,通过边界值分析选取1MB、100MB以及接近边界的0.99MB、100.01MB进行测试,能有效发现文件大小边界处理不当导致的上传失败或异常问题。
- 高效发现缺陷:使用较少的用例就能查找到大量隐藏在边界处的bug。相比穷举测试,大大提高了测试效率,节省测试时间和资源。在测试文本框输入长度限制时,仅需测试最小长度、最大长度、最小长度 - 1、最大长度 + 1等几个边界值,就能发现多数与长度相关的缺陷。
- 缺点
-
- 关注范围局限:仅关注输入的边界情况,对输入域的中间部分以及其他非边界相关的情况关注不足。例如在测试一个数学计算功能时,只测试边界值可能会遗漏中间数值计算过程中出现的逻辑错误。
- 无法独立使用:由于其局限性,不能单独作为全面的测试用例设计方法,需要与其他方法如等价类划分法、因果图法等结合使用,才能保证测试的全面性和准确性。
4.0. 课程小结
- 常见边界检验类型及取值思路:通常软件测试涵盖多种边界检验类型,包括数字、字符、位置、重量、大小、速度、方位、尺寸、空间等。相应地,在测试时应从最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最长、空/满等方面考虑边界值,并以此作为测试数据。
- 文本输入案例:假设一个文本输入区域允许输入1 - 255个字符,1个和255个字符属于有效等价类边界值,输入0个和256个字符作为无效等价类边界值。通过测试这些边界值,能检验系统对文本长度的处理是否正确,如是否会出现截断、提示错误等预期行为。
- 数据值位数案例:若某软件的数据输入域要求输入5位的数据值,可将10000作为最小值、99999作为最大值,同时选取小于5位(如9999)和大于5位(如100000)的数值作为边界条件。这有助于发现系统对数据位数验证及处理的潜在问题。
- 存储容量案例:在用U盘存储数据时,使用比剩余磁盘空间大一点(如几KB)的文件作为边界条件。这可以测试系统在处理磁盘空间不足时的表现,如是否能正确提示空间不足、是否会导致数据丢失等情况。
- 内部边界值条件:在多数情况下,边界值条件基于应用程序的功能设计确定,可从软件规格说明或常识中获取,也是最终用户较易发现问题的地方。然而,测试用例设计过程中,存在一些用户难以察觉但属于检验范畴的边界条件,即内部边界值条件或子边界值条件。
- 数值的边界值检验:计算机基于二进制工作,软件的数值运算存在范围限制。例如在32位系统中,有符号整数的取值范围是-2147483648 - 2147483647,测试时需考虑接近或超出该范围的数值,以确保软件在数值处理上的正确性,避免出现溢出等错误。
- 字符的边界值检验:字符在计算机软件中是重要元素,ASCII和Unicode是常见编码方式。了解常用字符的ASCII码值,如空(null)的ASCII码值为0,空格(sp ce)为32,A为65,a为97等 ,有助于在测试中验证字符处理功能,如输入特殊字符、边界字符时系统的响应是否正确。
4. 流程分析法
4.1课程目标
- 深入理解场景法的核心概念,掌握其基本原理和应用场景。
- 能够熟练运用场景法编写高质量的测试用例,准确覆盖各种业务流程。
- 根据需求说明,熟练绘制业务流程图,清晰展现系统的业务逻辑和流程走向。
- 全面了解场景法的优点和缺点,在实际测试中合理运用并规避风险。
4.2课程实验
- 为woniusales系统编写测试用例,通过实际操作加深对场景法的理解和应用能力。
4.3课堂引入
- 提出问题:前面学习的等价类和边界值方法在单个功能测试用例设计中效果良好,但对于涉及多个步骤和复杂业务流程的需求,如A通过银行账户向B转账500元、小王在某东上购买手机后因屏幕有黄斑进行换货等场景,该如何编写测试用例呢?引出场景法的学习。
4.4授课进程
4.4.1场景法的定义
流程分析法又称场景分析法,是从白盒测试的路径覆盖分析法借鉴而来的重要黑盒测试用例设计方法。在白盒测试中,路径指函数代码的分支组合,路径覆盖法需构造足够用例覆盖所有代码路径。在黑盒测试里,将软件系统的流程视为路径,用路径分析方法设计测试用例。这种方法有两大优势:一是降低测试用例设计难度,只要梳理清楚业务流程,无需丰富测试经验也能设计出优质用例;二是在测试时间紧张时,可根据流程针对性选择测试用例,避免盲目依赖经验取舍。不过,该方法不校验单个功能节点的正确性,因此在使用前需借助其他方法确保单功能的准确性。
4.4.2流程分类
场景由基本流和备选流组成,且场景中的活动还可由一系列相关场景构成。
- 基本流:是经过用例的最简路径,无任何差错,程序从开始顺利执行到结束。例如在用户登录功能中,输入正确的用户名、密码和验证码后成功登录,这就是基本流。
- 备选流:从基本流或备选流出发,在特定情况下发生,中间经历其他可能性后,重新回到基本流或直接结束用例。如在登录功能中,输入错误密码后提示重新登录,这就是一个备选流。
- 异常流:在实现业务流程时,因错误操作或异常输入导致业务流程未完成。比如ATM机取款时,插入银行卡后连续输入三次错误密码,银行卡被吞,这就是异常流。
4.4.3流程分析法设计测试用例的步骤
-
- 分析需求,画出流程图:明确需求后,绘制业务流程图。流程图中,椭圆形代表流程的开始或结束;长方形表示流程中用户的操作或系统的行为;菱形用于表示系统进行的条件判断;子流程长方形代表进入子流程;飘带用于展示流程中系统的提示;文档图表示流程中输入或输出的文档。例如在用户登录功能中,用户输入用户名、密码和验证码是操作行为,用长方形表示;系统验证用户信息是否正确是条件判断,用菱形表示。
- 绘制流程图注意事项:绘制流程图时,若判定条件为多个条件“与”的关系,则放在一个菱形里;若为多个条件“或”的关系,需一个条件一个菱形图,避免因条件合并而遗漏判定,减少用例分支。
- 根据业务流程图编写测试用例:按照一个流程分支一条用例的原则,流程分支的数量等于菱形的个数加1。以用户登录功能为例,若有一个菱形用于判断用户信息是否正确,那么流程分支有基本流(用户信息正确登录成功)和备选流(用户信息错误提示重新登录),对应编写两条测试用例。
4.4.4景法的优点和缺点
- 优点:能快速覆盖用户使用场景,有效确认用户操作流程是否通畅。因此在冒烟测试中,场景法是主要的测试方法,可快速发现影响业务流程的关键问题。例如在新开发的电商购物流程测试中,通过场景法模拟用户从浏览商品、加入购物车、下单、支付到收货的整个流程,能迅速发现流程中存在的阻塞点。
- 缺点:场景法仅关注场景是否能顺利进行,容易忽略大量异常输入或无效类情况,可能导致缺陷遗漏。比如在购物流程中,场景法可能未考虑用户输入特殊字符作为商品数量时系统的处理情况。
4.4.5应用举例
需求描述为用户向ATM提款机插入银行卡,若银行卡合法,ATM界面提示用户输入提款密码;若插入无效银行卡,ATM界面提示“您使用的银行卡无效!”,3秒钟后自动退出该银行卡,之后可使用其他有效银行卡正常取款。根据此需求,可绘制业务流程图并编写测试用例,如测试插入有效银行卡、插入无效银行卡等场景。
4.4.6常见疑问解答
在使用场景法设计用例时,可通过同行评审来确定是否存在遗漏。同行评审能集合多人的经验和视角,发现用例设计中可能忽略的问题,提高用例的完整性和准确性。
4.4.7随堂练习
中学教学软件提供一个功能,用户可输入三个数,系统校验这三个数。若为正数,判断能否构成三角形,否则提示输入有误;若能构成三角形,进一步判断是否为等边三角形、等腰三角形或一般三角形,并给出相应提示。根据此功能描述,绘制业务流程图并编写测试用例,涵盖输入非正数、构成不同类型三角形等各种情况。
5. 错误猜测法
基于经验和直觉推测程序中可能存在的各种错误,从而针对性去设计测试用例:该方法高度依赖测试工程师对产品业务的熟悉程度、对历史问题的了解以及项目经验。例如,熟悉电商系统的测试工程师,根据以往经验,会猜测在促销活动期间,商品价格计算模块可能出现因优惠规则复杂导致的计算错误,从而针对这一推测设计相关测试用例。
5.1有哪些经验可以借鉴
- 边界值:参考边界值情况,如在测试文件上传功能时,除了考虑文件大小的边界值,还可推测在文件大小接近边界时,可能出现上传中断或服务器响应异常的情况。
- 极限值:考虑极限值场景,例如在测试一个性能指标时,将系统负载达到极限,推测系统可能出现崩溃、响应缓慢等问题,进而设计相应测试用例。
- 特殊取值:关注特殊取值,像单引号、尖括号<>等特殊字符,在输入框中输入这些字符可能导致SQL注入、XSS攻击或系统解析错误等问题,以此为依据设计测试用例。
- 年月日取值:针对涉及日期的功能,考虑特殊的年月日取值,如闰年的2月29日、跨年的时间节点等,推测系统在处理这些特殊日期时可能出现的错误。
- 工作当中曾经出现过的问题:回顾项目中曾经出现过的类似问题,如之前在某个版本中用户注册功能出现验证码不区分大小写的问题,在后续版本测试时,就可针对验证码大小写敏感性设计测试用例。
5.2优点
- 发挥主观能动性:充分发挥人的直觉和经验,快速定位可能存在问题的区域,设计出具有针对性的测试用例。
- 团队协作优势:在团队测试中,成员可以集思广益,分享各自的经验和想法,丰富测试用例的设计思路。
- 高效切入测试:方便使用,能够快速切入测试工作,在时间紧迫或对系统了解有限的情况下,能快速发现一些明显的问题。
5.3缺点
- 难以评估覆盖度:由于缺乏系统性,无法准确评估用例的覆盖度,可能遗漏重要的测试点。
- 存在遗漏风险:容易遗漏未知区域的问题,对于一些未曾遇到过的情况,难以通过经验推测出可能存在的错误。
- 主观性强且不可复制:方法带有较强的主观性,不同测试工程师的经验和直觉不同,设计出的测试用例差异较大,难以复制和标准化。因此,错误猜测法只能作为一种补充方法,与其他测试用例设计方法结合使用。
6. 正交实验法
6.1概念
基于正交表,从大量试验数据中挑选出适量、有代表性的点进行试验,这些点具备“均匀分散,整齐可比”的特性,能够用较少的试验次数获得较为全面的信息,从而有效分析多个因素对试验指标的影响。
6.2输入范围
适用于多因素多水平的测试场景。当软件系统受多个因素(如操作系统版本、浏览器类型、网络带宽、用户并发数等)共同影响,且每个因素有多种取值(水平)时,使用正交实验法可以大幅减少测试组合数量,同时保证测试结果的有效性。
6.3使用步骤
- 确定因素和水平:明确影响测试结果的所有因素,并确定每个因素的取值(水平)。例如在测试一个网页在不同环境下的加载速度时,因素可能包括浏览器类型(Chrome、Firefox、Safari)、网络类型(4G、WiFi、5G)、页面内容复杂度(简单、中等、复杂),每个因素都有三个水平。
- 选择正交表:根据因素和水平的数量,选取合适的正交表。正交表有多种规格,如L4(2³)、L9(3⁴)等,其中L表示正交表,数字表示试验次数,括号内底数表示水平数,指数表示因素数。选择时要确保正交表能容纳所有因素且试验次数尽可能少。
- 设计测试用例:将因素和水平对应填入正交表,得到具体的测试用例组合。例如根据选定的正交表,将浏览器类型、网络类型和页面内容复杂度的不同取值组合成测试用例。
- 执行测试与分析结果:按照设计好的测试用例执行测试,记录测试结果。通过对结果的分析,判断各个因素对测试指标(如网页加载速度)的影响程度,找出最优的因素组合。
6.4优点
- 高效性:显著减少测试用例数量,在保证测试覆盖度的同时,节省大量测试时间和资源。相比于全面测试所有因素组合,正交实验法能以较少的试验次数获得相似的信息。
- 科学性:基于数学原理设计正交表,选取的测试点分布均匀,具有很强的科学性,能够有效反映各因素对测试结果的影响。
6.5缺点
- 专业性要求高:需要测试人员熟悉正交表的选择和使用方法,掌握一定的数学知识,对测试人员的专业素养要求较高。
- 因素交互作用分析受限:虽然能分析单个因素的影响,但对于因素之间复杂的交互作用,分析能力相对有限,可能无法完全揭示因素间的协同效应。
6.4工具
PICT(需要可以上网查一下)
7.状态迁移法
7.1概念
聚焦于系统状态及其转换过程,通过分析系统在不同状态下的行为以及状态之间的迁移关系,来设计测试用例以验证系统状态转换的正确性和稳定性。
7.2输入范围
适用于具有多种状态且状态转换较为复杂的系统。例如,订单管理系统中订单有新建、待支付、已支付、已发货、已完成、已取消等状态;设备控制系统中设备有开机、待机、运行、故障、关机等状态,这些系统都适合使用状态迁移法进行测试。
7.3使用步骤
- 确定系统状态:全面梳理系统的所有可能状态,明确每个状态的含义和特征。例如在订单管理系统中,详细定义每个订单状态的具体含义,如“新建”表示订单刚创建未进行任何支付操作,“已发货”表示商家已将商品发出。
- 绘制状态迁移图:以图形化的方式展示系统状态之间的迁移关系,包括触发状态迁移的事件(如用户操作、系统事件等)和迁移方向。例如,在订单管理系统中,用户点击“支付”按钮,订单从“新建”状态迁移到“待支付”状态;支付成功后,订单从“待支付”状态迁移到“已支付”状态。
- 设计测试用例:根据状态迁移图,选择不同的状态迁移路径来设计测试用例。要确保覆盖所有主要的状态迁移路径,包括正常流程和异常流程。例如,设计从“新建”到“已取消”、“已支付”到“已完成”等各种路径的测试用例。
-
- 执行测试与验证:按照测试用例执行测试,观察系统在状态迁移过程中的行为是否符合预期,验证系统状态的正确性和稳定性。检查系统在状态迁移时的数据处理、界面显示等方面是否正常。
7.4优点
-
- 针对性强:针对系统状态转换进行测试,能够有效发现因状态管理不当导致的问题,如状态混乱、非法状态转换等,对保证系统的稳定性和可靠性具有重要意义。
- 直观清晰:状态迁移图直观展示了系统状态和迁移关系,便于测试人员理解系统行为,也有助于与开发人员、其他相关人员进行沟通和交流。
7.5缺点
- 状态复杂时维护困难:当系统状态众多且迁移关系复杂时,状态迁移图会变得庞大复杂,绘制和维护成本较高,同时也增加了测试用例设计和管理的难度。
- 对非状态相关问题覆盖不足:主要关注状态转换,对系统功能中与状态无关的部分(如计算逻辑、数据存储等)测试覆盖度较低,需要结合其他测试方法进行全面测试。
8.判定表法
8.1概念
以表格形式描述输入条件的组合以及对应的输出结果,将复杂的逻辑关系清晰呈现,通过分析输入条件的各种组合情况来设计测试用例。
8.2输入范围
适用于具有多个输入条件且输入条件之间存在多种组合关系,输出结果由这些输入组合决定的场景。例如在一个权限管理系统中,用户的角色(管理员、普通用户、访客)、操作类型(添加、删除、修改)和资源类型(文件、文件夹、数据库记录)等多个输入条件共同决定用户是否具有相应的操作权限,这种情况适合使用判定表法。
8.3使用步骤
- 确定输入条件和输出结果:明确系统的所有输入条件和对应的输出结果。例如在权限管理系统中,输入条件是用户角色、操作类型和资源类型,输出结果是是否允许操作。
- 列出所有可能的输入组合:根据输入条件的取值,列出所有可能的组合情况。如果有n个输入条件,每个条件有m1、m2、…、mn个取值,那么总的组合数为m1×m2×…×mn。
- 确定每个输入组合对应的输出结果:针对每一种输入组合,根据系统的业务规则确定其对应的输出结果。例如,管理员对所有资源类型都有添加、删除、修改的权限,普通用户对部分资源类型只有查看权限等。
- 绘制判定表:将输入条件、输入组合和输出结果以表格形式呈现,形成判定表。判定表通常包括条件桩(输入条件)、条件项(输入条件的取值组合)、动作桩(输出结果)和动作项(对应输入组合的输出结果)。
- 简化判定表(可选) :如果存在一些输入组合对应的输出结果相同,可以对判定表进行简化合并,减少测试用例数量。
- 设计测试用例:根据判定表中的每一行(一个输入组合及其对应的输出结果)设计一个测试用例。
8.4优点
- 逻辑清晰:能够清晰地展示输入条件和输出结果之间的逻辑关系,使复杂的业务规则一目了然,便于理解和分析。
- 全面性好:通过列举所有输入组合,保证测试用例能够覆盖各种可能的情况,避免遗漏重要的测试点,提高测试的全面性。
8.5缺点
- 规模较大时复杂:当输入条件较多时,判定表会变得非常庞大,导致表格难以阅读和维护,设计测试用例的工作量也会显著增加。
- 对条件关联性考虑有限:主要关注输入条件的组合与输出结果的对应关系,对于输入条件之间复杂的关联性(如条件之间的先后顺序、相互制约关系等)分析不够深入,可能需要结合其他方法进一步完善测试。
9.因果图法
9.1概念
一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它将输入条件之间的因果关系以及输入条件与输出结果之间的因果关系用图形表示出来,进而转化为判定表,再依据判定表设计测试用例。
9.2输入范围
适用于输入条件之间存在多种逻辑关系(如与、或、非等),且这些关系对输出结果有影响的场景。例如在一个登录功能中,用户名是否正确、密码是否正确、验证码是否正确这三个输入条件之间存在逻辑关系,共同决定登录是否成功,这种情况适合因果图法。
9.3使用步骤
- 分析因果关系:明确输入条件和输出结果,分析输入条件之间的因果关系(如用户名正确且密码正确且验证码正确才能登录成功,这里就是“与”关系)以及输入条件与输出结果之间的因果关系。
- 绘制因果图:使用特定的图形符号(如恒等、与、或、非等)来表示因果关系。例如,用“与”门表示多个输入条件同时满足时输出结果才成立;用“或”门表示只要有一个输入条件满足输出结果就成立。
- 将因果图转换为判定表:根据因果图,列出所有可能的输入组合及其对应的输出结果,形成判定表。在转换过程中,要确保因果关系在判定表中得到正确体现。
- 设计测试用例:基于判定表,为每一行(一个输入组合及其对应的输出结果)设计一个测试用例。
9.4优点
- 精准定位问题:通过分析因果关系,能够准确找出输入条件组合与输出结果之间的联系,有效发现因输入条件逻辑关系错误导致的问题,提高测试的准确性。
- 弥补其他方法不足:在处理输入条件之间复杂逻辑关系方面具有优势,能够弥补等价类划分法、边界值分析法等在处理逻辑关系上的不足,使测试用例设计更加全面和深入。
9.5缺点
- 学习成本高:因果图的绘制和理解需要一定的学习成本,测试人员需要掌握相关的图形符号和分析方法,对测试人员的专业能力要求较高。
- 复杂场景处理困难:当输入条件较多且逻辑关系复杂时,因果图会变得非常复杂,绘制和转换为判定表的过程容易出错,增加了测试用例设计的难度和工作量。
10.用例设计方法总结
学习了等价类、边界值、流程分析法、状态迁移法、正交实验法、错误猜测法、判定表法、因果图法:
- 等价类、边界值:这两种方法主要针对输入域,通常结合使用。等价类划分将输入数据按照有效和无效进行分类,边界值分析则关注输入域的边界情况。二者共同实现对输入域的横向覆盖,能有效发现输入数据相关的问题,但对于业务流程的覆盖不足。
- 流程分析法:侧重于业务流程或算法,在功能测试中,尤其适用于验证系统的业务流程是否正确。通过分析基本流、备选流和异常流,绘制流程图并编写测试用例,实现对业务流程的纵向覆盖。不过,该方法对单个功能节点的校验不够细致,需结合其他方法使用。
- 正交实验法:适用于测试对象具有多个因素且每个因素有多个水平,并且希望通过较少的测试次数获得较为全面的测试结果的场景。通过正交表选取具有代表性的因素组合进行测试,可提高测试效率,但对测试人员的专业知识要求较高。
- 状态迁移法:适用于被测对象状态较多且状态之间迁移复杂的系统。通过分析系统的状态和状态迁移路径,设计测试用例来验证状态转换的正确性,确保系统在各种状态下的稳定性和可靠性。
- 错误猜测法:依据测试工程师的经验和直觉设计测试用例,能快速发现一些常见的问题。但由于其主观性强、无法评估覆盖度,只能作为其他测试方法的补充,辅助完善测试用例集。
备注:来源对蜗牛学院的测试开发学习的笔记,仅供学习参考,有问题欢迎交流,如果有用请点赞收藏+关注,谢谢!
若有收获,就点个赞吧