测试用例设计万能公式:功能到安全
目录
一、测试用例详解
1、测试用例概念
什么是测试用例?
测试用例设计基本原则一:明确预期结果
测试用例要素解析
2、测试用例的重要性
为什么不写测试用例直接测试存在问题?
测试用例的核心价值
3、测试用例的编写方式演进
传统方式 vs 现代方式
二、测试用例设计的系统化方法
1、引言
2、设计测试用例的思维模式(三维思维方法)
测试用例设计的基本原则二
3、测试用例设计的万能公式(核心框架)
1. 功能测试
2. 界面测试
3. 性能测试
4. 兼容性测试
5. 易用性测试
6. 安全测试
4、扩展测试类型
1. 弱网测试
2. 安装卸载测试
5、万能公式实践应用:水杯测试用例设计
水杯测试用例示例
三、设计测试用例的方法
1、基于需求的设计方法
2、具体的设计方法
1. 等价类
2. 边界值
3. 正交法
4. 判定表法
5. 场景法
6. 错误猜测法
3、更多测试用例练习
1. 命令行程序测试用例设计
2. Web程序接口测试用例设计
3. 接口测试工具:Postman 实战
一、测试用例详解
1、测试用例概念
什么是测试用例?
测试用例(Test Case)是为了实施测试而向被测试系统提供的一组集合,这组集合包含以下核心要素:测试环境、操作步骤、测试数据、预期结果
测试用例设计基本原则一:明确预期结果
测试用例中必须包含对预期输出或结果的明确定义。这是评估测试是否通过的关键依据。设计测试用例基本是测试面试的必考题!!!反正一句话来说,方法 + 练习 = 无敌!!!
测试用例要素解析
"要素"指的是编写测试用例时每个用例必须包含的基本信息项。以下是一个完整的测试用例示例:
要素 | 内容 |
---|---|
用例编号 | test-01 |
标题 | 成功注册网易邮箱 |
测试方式 | 手工测试 |
功能模块 | 注册登录 |
重要性 | 重要 |
测试前提 | 系统运行正常,邮件服务器已开启 |
测试环境 | Windows 10 + Chrome版本103.0.5060.66(正式版本)(64位) |
测试数据 | 邮箱地址:123456789@qq.com 密码:123456 手机号:12312341234 |
测试步骤 | 1. 打开谷歌浏览器,输入网易注册地址注册网易免费邮箱 - 你的专业电子邮局 2. 输入邮箱地址、密码、手机号,获取验证码并输入正确的验证码,勾选协议 3. 点击注册按钮 |
期望结果 | 展现注册成功的页面,并且使用刚注册的账号可以正常登录并进入邮箱首页 |
2、测试用例的重要性
为什么不写测试用例直接测试存在问题?
在实际测试工作中,如果没有规范的测试用例,可能会遇到以下问题:
-
测试覆盖度问题:无法确定是否全面测试了所有功能、测试覆盖率难以量化和衡量
-
回归测试困难:新版本发布时,重复测试难以系统实施、人工回归测试容易遗漏历史功能
-
效率与质量问题:存在大量冗余测试影响测试效率、测试过程缺乏标准化,质量参差不齐
测试用例的核心价值
测试用例正是为了解决上述问题而产生的,其主要作用包括:
-
保证测试完整性 - 确保所有功能点都被覆盖
-
提高测试效率 - 避免重复和冗余测试
-
便于回归测试 - 系统化执行历史功能验证
-
明确责任边界 - 为测试工作提供依据,避免责任争议
特别提醒:当产品出现问题时,第一责任人往往会质疑"测试为什么没有测到这个问题?"完善的测试用例文档就是测试人员工作质量的最好证明。
3、测试用例的编写方式演进
传统方式 vs 现代方式
上文展示的是传统的表格形式编写测试用例的方式。在软件测试过程中,由于产品功能特性众多,仅依靠头脑风暴很难系统、完整地编写出覆盖全面的测试用例。因此,可以通过逐步编写、反复修改和补充的方式,持续完善测试用例,以提升功能覆盖度。
关于测试用例的编写方式,存在不同的风格和适用场景。过去较为常见的做法是严格按照测试用例要素(如前置条件、操作步骤、预期结果等)在 Excel 中进行编写和管理。然而,目前在实际工作中,随着敏捷开发模式的普及,大多数现代企业已经转向更高效的测试用例编写方式,使用思维导图(脑图)来组织和表达测试思路已越来越普遍。
例如,我们通常会对某件东西进行一系列常规测试,这些内容虽然不会逐条写在纸上,但每一条验证项实际上就是一个测试用例。在表达方式上,笔试时通常要求按照 Excel 表格的格式编写,强调测试用例的完整要素;而在面试中,则更适合使用思维导图的方式,以清晰的逻辑层次逐点阐述测试思路,而无需拘泥于形式上的要素罗列。
因此,在当前测试实践中,更倾向于使用思维导图来编写和管理测试用例,它有助于更高效、直观地展现测试场景与逻辑结构。思维导图/脑图方式的优点:
-
更直观地展现测试场景和用例关系
-
便于快速编写和修改
-
适合敏捷开发中的快速迭代
课程说明:后续的内容和日常用例练习都将采用思维导图/脑图的方式进行测试用例编写,以适应行业实际需求。我们可以使用xmind这个软件来绘画思维导图!!!也是非常好用的!!!
二、测试用例设计的系统化方法
1、引言
现在有⼀款产品,要求我们对“门锁”设计测试用例,假如你是测试人员,你会怎么设计呢?但最起码一点:用例的设计最重要的一点是保证功能是正确的。
当我们面对"门锁"这样的产品测试需求时,缺乏经验的测试人员往往只关注基本功能验证,能够设计出来的测试用例整体上来说数量是合格的,但是说出来的测试用例不够具体,太笼统了,无法作为测试工作的参考依据。然而在互联网企业中,上图案例给出的这种简单的测试思路远远不够。本文将系统性地介绍测试用例设计的思维方法和实用框架。
在工作场景中,测试用例的设计并非追求数量,而是更注重实现更高的功能覆盖率。而在学习过程中,测试用例的设计则恰恰相反,数量越多越好,这能充分考察学生的思维发散能力。
2、设计测试用例的思维模式(三维思维方法)
正确的测试用例设计思维应包含三个维度:
-
常规思维:按照产品正常使用流程和预期功能进行测试
-
逆向思维:考虑异常情况和非法输入
-
发散性思维:从多角度探索可能的测试场景
测试用例设计的基本原则二
-
测试用例应覆盖有效和预期的输入,也要包含无效和未预料到的输入情况
-
成功的测试不仅要验证程序"做了应该做的",还要检查程序"没有做不应该做的"(是上一条原则的必然结果)
-
计划测试工作时不应假定不会发现错误
仅靠头脑风暴设计测试用例往往不够全面,特别是在面试等高压环境下,需要有系统化的设计思路。如上面的例子,我们可以想出下面这么些测试用例:
打开思维后,设计测试用例是想到一条就说一条,如果没有正确的引导,说出来的测试用例一定是有限的且数量不容乐观的。
3、测试用例设计的万能公式(核心框架)
核心框架:功能测试 + 界面测试 + 性能测试 + 兼容性测试 + 易用性测试 + 安全测试(随着测试用例的练习,大家会逐渐熟悉并记住万能公式)
1. 功能测试
功能测试是发现程序与外部规格说明不一致的过程,通常采用黑盒测试方法。从产品功能角度出发,验证功能是否是正确的。
应对需求不明确的情况:
-
查阅相关文档理解产品目标
-
积极参与项目会议(需求讨论、设计评审等)
-
组织评审会议,确认测试范围
-
对于已上线产品,多使用并咨询产品经理
-
分析历史Bug记录,了解重点关注区域
2. 界面测试
肉眼可以看到的部分都称为界面,界面所有的元素都需要测试。对软件界面上所有内容进行全面测试:
-
整体界面:验证界面实现与设计图的一致性
-
界面元素:包括各类控件的操作验证
3. 性能测试
与功能测试的区别:功能测试检查"是否做了",性能测试检查"做得好不好"(通常为一些极端的情况,一般频率不高)
4. 兼容性测试
验证软件在不同环境下的正确运行能力:软件运行依赖于硬件系统和相应的软件环境支持。以QQ为例,它既可以在PC端运行,也支持移动端的iOS和Android系统。而移动设备又存在品牌、机型和系统版本等差异。为确保软件在各种环境下都能正常运行,测试人员需要进行全面验证。
机型选择策略:
-
优先选择产品使用统计中top级别的机型
-
选择主流浏览器和机型进行测试
-
利用后台统计数据进行决策支持
5. 易用性测试
评估产品是否具备简单易上手的属性,从新用户角度验证产品的学习曲线和使用流程(引导教程)。
6. 安全测试
常见安全问题包括:
-
隐私数据明文显示(接口响应数据也要考虑到用户数据的安全性、登录场景也需要将秘密进行加密展示、数据存储用户隐私数据是否加密)
-
越权漏洞:普通用户执行管理员操作
-
参数校验不足导致SQL注入(SQL 注入是一种发生在应用程序与数据库层的安全漏洞。其根本原因在于:程序将用户输入(参数)直接拼接在 SQL 查询语句中,而没有进行充分的有效性校验或安全处理,导致攻击者可以构造恶意输入来改变原本的 SQL 逻辑。)
SQL注入的简单示例
假设一个网站的登录功能,其后台 SQL 查询语句是这样的:
SELECT * FROM users WHERE username = '[用户输入的用户名]' AND password = '[用户输入的密码]';
正常情况:用户输入用户名 zhangsan
和密码 123456
,SQL 语句为:
SELECT * FROM users WHERE username = 'zhangsan' AND password = '123456';
这条语句会正常验证用户名和密码。
SQL注入攻击:攻击者在用户名输入框中输入:OR '1' = '1'--
此时,拼接后的 SQL 语句变为:
SELECT * FROM users WHERE username = '' OR '1'='1' -- ' AND password = 'xxx';
解释一下这个恶意输入是如何改变SQL逻辑的:
最终,这条 SQL 语句的含义变成了:选择用户表中所有满足“用户名为空 或 1等于1”的记录。由于 '1'='1'
永远为真,这意味着它会返回用户表中的所有数据。攻击者通常就能以第一个用户的身份(往往是管理员)成功登录系统,而无需知道正确的密码。
-
'
:闭合了原本的用户名引号。 -
OR '1' = '1':添加了一个永远为真的条件。
-
--
:在大多数数据库中这是单行注释符,它会将其后的所有语句(包括原来的密码检查)都注释掉。
危害:通过这种方式,攻击者不仅可以绕过身份验证,还可以执行以下操作:
-
窃取数据:读取数据库中的敏感信息,如用户信息、密码哈希、个人资料等。
-
篡改数据:修改、删除或插入数据,破坏网站内容或用户账户。
-
提升权限:获取更高的系统权限。
-
删除整个表,对业务造成毁灭性打击。
如何防范(了解)
-
使用参数化查询(预编译语句):这是最有效、最根本的解决方案。它将 SQL 代码与数据参数分开发送,数据库会明确区分指令和数据,从而从根本上杜绝了拼接带来的注入风险。
-
对输入进行严格的校验:对用户输入的类型、长度、格式等进行强校验,例如只允许邮箱字段包含特定字符。
-
使用ORM框架:现代ORM框架(如MyBatis, Hibernate)通常内置了参数化查询机制。
-
最小权限原则:为数据库连接账户分配仅能满足其需求的最小权限,避免使用 root 或 sa 等高权限账户。
总而言之,参数校验不足使得恶意输入能够“欺骗”数据库执行非预期的命令,而采用参数化查询是堵上这个安全漏洞的最佳实践。
4、扩展测试类型
1. 弱网测试
为了覆盖更多的网络场景,并且还要关注在弱网环境下的用户体验:
关键检查点:
-
页面响应时间(热启动、冷启动、页面切换等)
-
页面呈现完整性
-
超时文案和异常信息显示
-
超时重连机制
-
安全问题:DNS劫持、登录IP更换、单点登录异常
-
大流量操作风险:APK更新、文件下载等
工具推荐:要模拟弱网环境,可以使用Fiddler工具(抓包工具)进行设置:
-
配置Fiddler代理
-
启动抓包功能(支持桌面端和移动端)
-
在Fiddler中设置弱网参数(设置的数字越大,传输速率越慢)
2. 安装卸载测试
针对需要部署的软件,验证安装和卸载过程的完整性和稳定性。比如:安装包能否正常安装?安装后是否可以顺利卸载?能否重复安装多次? 安装验证:软件更新后能否成功安装? 卸载测试:
-
完整安装后卸载
-
安装中途停止后卸载
-
卸载后重新安装再卸载
-
卸载中途停止后能否继续卸载
5、万能公式实践应用:水杯测试用例设计
水杯测试用例示例
请基于上述系统化方法,为"水杯"设计完整的测试用例,要求覆盖所有测试维度,并提供具体的测试场景和预期结果。如下:
-
功能测试:盛装不同温度液体的能力、密封性测试、容量准确性验证
-
界面测试:外观设计符合要求、刻度清晰准确、颜色一致性
-
性能测试:耐高温性能、抗摔性能、保温性能
-
兼容性测试:与不同杯盖的匹配度、与杯刷的兼容性
-
易用性测试:把持舒适度、开启便捷性、清洗方便程度
-
安全测试:材料无毒检测、边缘光滑度、高温防烫设计
三、设计测试用例的方法
1、基于需求的设计方法
基于需求的设计方法是测试用例设计的核心方法之一。在实际工作中,测试人员通常需要参考需求文档或产品规格说明书来设计测试用例。测试人员在接到需求后,首先要对需求进行分析和验证。通过分析需求,测试人员可以进一步细化这些需求,识别出关键的测试点,并据此设计出相应的测试用例。
以注册邮箱账号为例,我们可以按以下步骤设计测试用例:
明确需求中的功能点:账号注册、账号登录
结合万能公式设计测试点:通过设计边界条件、数据验证等方法,形成有效的测试用例集合。
2、具体的设计方法
1. 等价类
练习:根据所学的分析方法,请完善以下未完成的测试用例。
在设计测试用例时,使用穷举法测试所有的输入数据(例如,测试每个字符长度的输入)显然不现实,尤其是当数据范围较大时。等价类划分法可以有效解决这个问题。等价类法通过将输入数据(在特殊情况下可能是输出数据)划分为多个等价类,选择每个等价类中的一个代表性数据进行测试。如果代表数据通过了测试,则可以认为整个等价类的测试也通过了,这样一来,就能用较少的测试用例实现更全面的功能覆盖,有效解决了无法穷举测试的问题。
生活中的等价类示例:在教育中,老师根据学生的表现来定制学习计划,通常会把学生分为以下几类:
-
优等生:注重知识的扩展和综合能力的提升
-
中等生:夯实基础,查缺补漏
-
差等生:先掌握重点,暂时跳过难点
等价类设计步骤:
第一步:确定有效等价类和无效等价类:
-
有效等价类: 符合需求文档中规定的合法输入数据。
-
无效等价类: 不符合需求文档规定的非法输入数据。
第二步:编写测试用例,设计具体的测试数据。
等价类的缺点是只考虑了输入域的划分,而没有考虑输入域的组合情况。因此,还需要其他的设计方法来补充。
2. 边界值
边界值包含:边界值+次边界值。边界值是指返回数据的左右临界点。在选取次边界值时,需依据边界值的有效性进行判断:
-
当边界值属于有效等价类时,次边界值应选择无效等价类中的边界点;
-
当边界值属于无效等价类时,次边界值应选择有效等价类中的边界点。
边界值分析法是对输入和输出的边界值进行测试的一种黑盒测试方法。通常,它是对等价类划分法的补充,专注于测试输入数据范围的边界值。
边界值分析法示例:假设一个输入框的长度要求为1到11个字符,测试时要检查以下边界值:
-
最小边界:1
-
最大边界:11
-
超出范围:0 和 12
边界值分析的应用:
-
输入框长度为1到11,取边界值:1、11、12、0。
-
运动员参赛项目数为1到3,取边界值:0、1、3、4。
-
查询页面显示999行,每50行一页,取边界值:0行、1行、50行、51行、999行。
通过这些边界值测试,确保了输入数据的合理性和系统的健壮性。继续将上述用例通过边界值补充完整,如下:
3. 正交法
正交试验设计(Orthogonal Experimental Design)是一种研究多因素多水平的高效实验方法。该方法基于正交性原则,从全部水平组合中选取具有代表性的试验点进行测试。通过最小化测试用例的数量来实现对输入数据的全覆盖,尤其是在需要测试多个输入参数组合时,正交法可以显著减少测试用例数量。
通过分析这部分实验结果,即可全面了解试验情况并确定最优水平组合。这种设计方法依托正交表实施,具有高效、快速且经济的特点。正交法通过组合不同的输入条件,减少了测试用例的数量,并确保了两两组合的覆盖。
例如,如果有5个选项,每个选项可以填写或不填写,按照排列组合方法可以得到32个测试用例。
正交实验设计(Orthogonal Experimental Design):正交法基于正交表,能够高效、快速且经济地设计实验。正交表示例:以L₄(2³)为例,"L"表示正交表;下标数字"4"代表4行,即需要进行4次试验;括号中的指数"3"表示3列,代表最多可安排3个因素;括号内的基数"2"表示表中仅包含两种数字(1和2),即各因素均有两个水平。
正交表由三个要素组成:因素数、水平数和行数。
-
因素:影响测试结果的条件变量,对应正交表中的列
-
水平:每个因素对应的可选取值
正交表的特点包括:
-
每列中不同数字出现的次数相等。
-
任意两列中的数字排列方式完全均衡。
通过正交法生成的测试用例能够在保证效率的同时,确保覆盖所有关键因素的组合。由于正交表设计复杂,通常借助工具生成。正交法设计测试用例的步骤如下:(详细操作过程上网查找)
1、确定因素和水平
2、使用allpairs工具生成正交表:
-
将因素和水平录入Excel
-
在allpairs目录创建文本文件(如new.txt),粘贴Excel内容后保存(注意:只能进行复制粘贴操作,不然格式会不对!!!)
-
执行命令:allpairs.exe new.txt > zhengjiao.txt
3、依据正交表编写测试用例
4、补充关键测试用例
以邮箱注册为例:
1、确定因素:姓名、电子邮箱、密码、确认密码、验证码 水平:填写/不填写
2、生成正交表: 录入Excel、创建0714.txt文件并保存内容、执行命令:allpairs.exe 0714.txt > 0714jg.txt
3、编写测试用例
4、补充重要用例
注:工具生成结果可能存在偏差,但不影响测试设计。
4. 判定表法
通过系统化的测试用例设计方法,可以有效提升测试用例的完整性与规范性。在实际需求中,常常涉及多种场景的组合,例如以下需求:
用户输入的账号中包含“admin”字符,或通过内部链接进入注册页面并点击提交注册按钮,即可获得管理员身份;否则不具备管理员身份。
从该需求可以看出,不同的条件组合会触发不同的结果。这类问题通常无法通过正交法有效覆盖,因为正交法更适用于输入条件之间相互独立、需考虑组合对应不同结果的场景。而当前需求涉及条件间的逻辑依赖关系,更适合使用判定表进行分析。
判定表:判定表是一种用于表达逻辑判断的工具,能够清晰展示所有条件组合及其对应的结果,便于系统化地导出测试用例。形如:
使用判定表法设计测试用例的步骤
-
识别输入条件与输出结果
-
明确输入与输出之间的逻辑关系
-
绘制判定表
-
根据判定表编写测试用例
实例演练:管理员注册场景
我们根据上述步骤,对该需求进行测试用例设计:
1. 识别输入与输出条件
输入条件:
-
a:账号中包含 “admin”
-
b:通过内部链接进入注册页面
-
c:点击注册按钮
输出结果:
-
1:具备管理员身份
-
2:不具备管理员身份
2. 建立条件与结果之间的逻辑关系
根据需求,满足以下任一情况即为管理员身份:
-
账号中包含 “admin” 并点击注册按钮(a + c)
-
通过内部链接进入并点击注册按钮(b + c)
其余情况均不具备管理员身份。
3. 绘制判定表
4. 根据判定表编写测试用例
根据上表,可设计出如下测试用例:
-
账号包含 “admin”,非内部链接进入,点击注册 → 管理员
-
账号包含 “admin”,内部链接进入,不点击注册 → 非管理员
-
账号不包含 “admin”,内部链接进入,点击注册 → 管理员
-
账号包含 “admin”,内部链接进入,点击注册 → 管理员
-
账号包含 “admin”,非内部链接进入,不点击注册 → 非管理员
-
账号不包含 “admin”,非内部链接进入,点击注册 → 非管理员
-
账号不包含 “admin”,非内部链接进入,不点击注册 → 非管理员
5. 场景法
在现代事件触发型软件中,事件的触发情景构成了“场景”,而同一事件不同的触发顺序和处理结果则形成了“事件流”。场景法正是通过模拟这些真实或假设的情景,来描述系统功能点或业务流程,从而更有效地进行测试用例设计的方法。该方法的核心在于:模拟特定场景边界下发生的事件,通过事件触发某个动作,并观察其最终结果,以此检验系统行为是否符合预期,并发现潜在的需求或设计问题。
核心概念:基本流与备选流
场景法主要围绕两个核心概念构建:
-
基本流:代表最直接、最顺利的业务流程,即“成功路径”。它描述了用户在执行某个操作时,没有任何异常情况发生,从开始到结束的理想过程。
-
备选流:代表在执行基本流过程中,可能出现的各种分支、异常或意外情况。这些情况可能源于用户的不当操作、系统异常或业务规则的限制。
测试设计通常从分析基本流开始,然后系统地识别所有可能的备选流。通过遍历所有基本流与备选流的组合,即可构成覆盖各种情况的完整测试场景。
场景主要可分为四种类型:
-
正常的用例场景:即基本流。
-
备选的用例场景:由备选流构成的合理分支流程。
-
异常的用例场景:由系统异常、故障等触发的流程。
-
假定推测的场景:基于假设或未来可能发生的情况设计的流程。
如上面的注册邮箱的例子:
基本流测试用例:点击注册入口、同意用户协议、输入正确的注册信息、点击注册按钮、验证账号激活成功
备用流测试用例1:点击注册入口、拒绝用户协议、返回后重新点击注册入口、同意用户协议、输入正确的注册信息、点击注册按钮、验证账号激活成功
备用流测试用例2:点击注册入口、拒绝用户协议、返回后再次点击注册入口、再次拒绝用户协议、输入错误的注册信息、更正为正确的注册信息、点击注册按钮、验证账号激活成功
生活化案例:逛街买衣服
为了更直观地理解,我们以“逛街买衣服”为例,展示场景法的应用:
步骤 | 基本流(理想路径) | 可能出现的备选流(意外情况) |
---|---|---|
1. 出发 | 决定去逛街 | 临时有事,重新规划时间(备选流) |
2. 抵达 | 前往服装店 | 店铺关门,寻找其他店铺(备选流) |
3. 挑选 | 选择衣服 | 没有合身的款式,继续寻找(备选流) |
4. 购买 | 付款购买 | 价格不合适,重新议价或放弃(备选流) |
这个案例生动地描绘了如何从一个常规流程(基本流)中,分析出各种可能的中断或分支(备选流)。
场景法的价值
-
生动直观:以故事线的方式描绘事件触发情景,使测试用例更易于理解和执行。
-
聚焦业务:其典型应用是将各个孤立的功能点通过业务流串联起来,帮助测试人员建立整体业务观,避免陷入功能细节而忽视业务流程要点。
实战演练:邮箱注册场景设计
我们以“邮箱账号注册”为例,使用场景法设计测试用例。
步骤一:确定基本流
输入正确账号密码 -> 点击注册 -> 系统发送确认邮件 -> 用户在24小时内确认邮件 -> 注册成功。
步骤二:确定备选流
A1:账号密码输入异常
-
A1.1:账号密码均为空。
-
A1.2:只输入账号,密码为空(或反之)。
-
A1.3:输入已注册的账号。
A2:网络异常
-
A2.1:点击注册时网络中断,发送请求失败。
A3:邮件发送/确认失败
-
A3.1:系统发送邮件失败。
-
A3.2:用户未收到邮件(邮件丢失)。
-
A3.3:用户超时(超过24小时)才确认。
-
A3.4:用户点击了过期或非最新的确认链接。
步骤三 & 四:根据流程组合编写测试用例
-
基本流测试:输入正确的账号密码,点击注册,系统成功发送确认邮件,并在24小时内点击确认链接,最终注册成功。
-
备选流 A1.1:不输入账号和密码,点击注册,系统提示“请输入账号和密码”。
-
备选流 A1.2:只输入账号,不输入密码,点击注册,系统提示“请输入密码”。
-
备选流 A1.3:输入已注册的账号和任意密码,点击注册,系统提示“该账号已被注册”。
-
备选流 A2.1:在点击注册按钮时,断开局域网络,系统应提示“网络连接失败,请重试”。
-
备选流 A3.1:系统尝试发送邮件时,邮件服务出现故障,系统应记录错误日志并向用户显示“注册确认邮件发送失败,请稍后重试注册流程”。
-
备选流 A3.3:用户在收到确认邮件后,等待超过24小时才点击链接,系统提示“确认链接已过期,请重新注册”。
6. 错误猜测法
方法定义
错误猜测法是一种基于测试人员对被测软件设计的深入理解、过往测试经验以及个人直觉,推测软件中可能存在的缺陷,从而针对性地设计测试用例的软件测试方法。
核心思想与特点
经验驱动:此方法高度依赖测试人员的专业素养,包括:
-
对需求规格和设计实现细节的精准把握。
-
在以往测试项目中积累的、关于常见错误高发区的经验。
-
在熟悉系统后产生的、对潜在薄弱环节的敏锐直觉。
敏捷高效:错误猜测法与当前流行的“探索式测试”在思想上高度一致,都强调测试者的思维能动性而非僵化的脚本。在敏捷开发等快速迭代模式中,这种方法往往能实现很高的投入产出比,被广泛应用于各类测试场景。
生活化案例:识人与买瓜
这种方法类似于我们日常生活中基于对他人的了解做出预测的行为。
-
一提到“武大郎”,我们脑海中会立刻浮现“憨厚、老实”等印象。
-
一提到“潘金莲”,则会联想到一些负面的历史评价。
基于对“张三”这个人的性格了解,我们去买他的西瓜时,就会自然地运用“错误猜测”:
-
用例1:鉴于“张三不实诚”,我们需要重点检查他是否缺斤少两(对应:数据准确性缺陷)。
-
用例2:鉴于“张三粗心”,我们需要留意他搬运的西瓜是否有压坏(对应:数据完整性或处理逻辑缺陷)。
-
用例3:鉴于“张三人小气”,我们需要注意沟通方式,避免因小事引发冲突(对应:系统容错性或用户体验缺陷)。
方法的局限性
错误猜测法的主要缺点在于其难以系统化和标准化,测试效果的优劣过度依赖测试人员的个人能力和状态。如果测试人员经验不足或对系统理解不深,很容易产生测试盲区。
实战演练:邮箱注册的错误猜测
基于对注册功能的常见问题理解,我们可以针对“邮箱账号注册”功能进行错误猜测,设计测试用例:
-
输入校验:用户名校验中,是否妥善处理了特殊字符(如
<
,&
,'
)和首尾空格? -
密码强度:密码校验机制是否正确区分了大小写?例如,密码
Hello123
与hello123
是否被视为不同? -
数据规范:姓名(如果有)输入框是否允许或正确处理了特殊字符(如少数民族姓名中的点
·
)? -
安全传输:在网络传输过程中,密码是否以明文形式发送,而未进行加密?这属于严重的安全漏洞。
-
其他猜测:
-
注册成功后,是否会出现页面跳转失败或重复跳转的问题?
-
在点击注册按钮的瞬间,如果快速连续点击多次,系统是否会创建出多个重复账户?
-
应试提示:
-
笔试中,若要求使用错误猜测法设计用例,需按照完整的测试用例格式编写,包含用例编号、标题、前置条件、操作步骤、预期结果等必要要素。
-
面试时,通常只需以思维导图或要点列举的方式,清晰地说出你猜测的测试点即可。
课堂练习:为“登录功能”设计测试用例
请按照以下步骤,为“用户登录功能”系统化地设计测试用例:
-
明确需求:仔细阅读登录功能的需求文档,明确其所有规定行为(如:支持手机号/邮箱登录、有忘记密码功能、需要验证码等)。
-
组合应用设计方法:结合“万能公式”(即:从 UI、功能、性能、安全、兼容性、易用性 等多维度思考)和所学的测试用例设计方法(如等价类划分、边界值分析、场景法、错误猜测法等)来设计用例。
-
执行与记录:按照设计好的测试用例对系统进行测试。
-
总结与分享:记录测试过程、发现的缺陷与心得体会,并尝试编写一篇测试技术博客。
3、更多测试用例练习
在掌握了测试用例设计的基本方法后,本节将通过不同类型的实际场景,深化对测试设计的理解与应用。
1. 命令行程序测试用例设计
以系统自带的 zip
/unzip
压缩命令为例,设计全面的测试用例。
测试维度 | 测试用例设计要点 |
---|---|
功能测试 |
|
性能测试 |
|
兼容性测试 |
|
易用性测试 |
|
安全性测试 |
|
2. Web程序接口测试用例设计
要在网页中打开开发者工具,有以下几种常用方法(任选其一即可):
-
在页面空白处右键点击,选择"检查"选项
-
使用快捷键组合:Ctrl+Shift+I(Windows/Linux)或Command+Option+I(Mac)
以博客系统的博客详情页接口为例,设计测试用例。(了解即可)
测试维度 | 测试用例设计要点 |
---|---|
请求方法 |
|
参数校验 |
|
数据格式 |
|
性能测试 |
|
3. 接口测试工具:Postman 实战
Postman 支持以游客身份或登录账号两种方式使用。不过登录后能体验完整功能,因此建议安装后立即注册账号(注册流程简单,按指引操作即可)。
命令行工具(如 curl
)虽可测试接口,但效率较低。在实际工作中,我们通常使用专业的接口测试工具,如 Postman,以提升测试质量和效率。
Postman 简介:Postman 是一款流行的API开发与测试工具,提供了友好的图形化界面来发送HTTP请求、检查响应和管理测试用例。
使用 Postman 发送请求
核心组件:
-
请求方法:选择 GET, POST 等。
-
请求URL:填写完整的接口地址。
-
参数:在 “Params” 标签页添加URL参数(如
blogId
)。 -
请求头:在 “Headers” 标签页添加必要的头信息(如
Content-Type
,Authorization
)。 -
请求体:在 “Body” 标签页选择格式并填写数据(用于POST/PUT请求)。
添加请求的两种方式:
-
手动创建:在Postman中新建请求,并填写上述所有信息。
-
一键导入:从浏览器开发者工具中复制一个请求的cURL命令,在Postman中点击 “Import” -> “Raw text”,粘贴即可自动生成请求。
接口管理:为了避免重复劳动,可以将常用的接口保存到 Collections(集合) 中。
-
发送请求后,点击 “Save” 按钮。
-
为此请求命名,并选择保存到现有的或新建的集合文件夹中。
-
之后,所有保存的接口都会在侧边栏的集合中清晰展示,方便下次直接调用和执行。