一、概述
1、测试技能分类
1.1按阶段划分
- 单元测试:源代码
- 集成测试:接口
- 系统测试:对整个系统进行功能、兼容、安全、性能的测试
- 验收测试
- 内测
- 公测
1.2按代码可见度划分
- 黑盒测试:在完全不接触源码的情况下进行测试,例如:系统测试
- 灰盒测试:在接触部分源码的情况下测试,例如:接口测试
- 白盒测试:在完全接触源码的情况下,根据源码进行测试,例如:单元测试
拓展:测试策略
- 冒烟测试:对该版本最基本的功能进行测试,保证基本的功能和流程能走通。(一般是以成功那条业务线来做冒烟测试)
2、质量模型
对一个产品进行测试时,需要考虑以下方面:
功能、性能、兼容、易用、安全
3、测试流程
- 需求分析
- 测试计划
- 用例设计
- 用例执行
- 缺陷管理
- 测试报告
4、测试用例
4.1什么是测试用例
用例指的是用户使用产品时的案例,测试用例就是执行测试时,测试人员仿照用户使用的案例
4.2测试用例的作用
测试用例时实施测试时的标准,测试用例编写完成后,后续只需将精力放在测试的执行上即可。只要测试用例能覆盖全部的测试点,就能够防止漏测。
4.3测试用例编写格式
- 用例编号
- 用例标题
- 项目/模块
- 前置条件
- 优先级
- P0:核心功能测试用例(冒烟测试),确定此版本是否可测的测试用例,此部分测试用例如果fail会阻碍大部分其他测试用例的验证。
- P1:高优先级测试用例,最常执行以保证功能性是稳定的;基本功能测试,和重要的错误、边界测试
- P2:中优先级测试用例,更全面地验证功能的各个方面,异常测试,边界、中断、断网、容错、UI等测试用例
- P3:低优先级测试用例,不常常被执行,性能、压力、兼容性、稳定性、安全、可用性等等。
- 测试步骤
- 测试数据
- 预期结果
二、设计测试用例
2.1等价类法
**测试场景:**需要大量数据输入,但无法穷举的情况
将输入值的多条件依次划分为有效类等价类和无效等价类,每个等价类中取一个值,然后自由组合
例如:输入的密码要求6-18个字符,包含数字、字母、下划线且必须以字母开头
将条件分为三部分:
- 6-18个字符
- 包含数字、字母、下划线
- 以字母开头
再分别划分有效等价类和无效等价类:
有效等价类 | 无效等价类 |
---|---|
6-18个字符(1) | 少于6个字符(2) 多余18个字符(3) 空(4) |
包含数字、字母、下划线(5) | 除了数字、字母、下划线以外的特殊字符(6) |
以字母开头(7) | 以数字开头(8) 以下划线开头(9) |
将这些条件自由组合,且每个组合中最多有一个无效等价类
目的是保证精准测试某个测试点
测试用例 | 条件组合 |
---|---|
n123_456 | 正确格式 |
n12_3 | 2 5 7 |
n123_1111111111111 | 3 5 7 |
null | 4 5 7 |
n123_456@#¥ | 1 6 7 |
123_456n | 1 5 8 |
_n123456 | 1 5 9 |
2.2边界值法
**针对场景:**在范围判断的情景中,对边界值进行测试
相关概念:
- 上点:边界上的点(正好等于)
- 离点:距离上点最近的点(刚好大于,刚好小于)
- 内点:范围内的点
边界值法与等价类法的区别:
与等价类划分法相比,边界值分析法更专注于输入或输出范围的边界值。等价类划分法将输入或输出划分为多个等价类,然后从每个等价类中选取一个或多个代表值进行测试。而边界值分析法则直接针对这些等价类的边界进行测试,确保对边界条件的全面覆盖。
边界值是等价类划分的一种,但是它不等于等价类划分。一般二者结合使用
例:对刚才的例子中6-18个字符的要求进行补充:
有效等价类 | 无效等价类 |
---|---|
10个字符(内点) 6个字符(上点) 18个字符(上点) 7个字符(离点) 17个字符(离点) | 少于6个字符(2):5个字符(离点) 多余18个字符(3):19个字符(离点) 空(4) |
边界值的优化:开内闭外
经过上面的例子发现有很多个冗余,我们可以通过开内闭外的方法优化一下数量
开内闭外:
- 如果条件要求是开区间,则保留内部的离点,去掉外面的离点
- 如果条件要求是闭区间,则保留外面的离点,去掉内部的离点
2.3判定表法
**针对场景:**多条件依赖
例:在某个情景中,要求:
- 如果金额大于500元,且未过期,则发出批准单和提货单
- 如果金额大于500元,但已过期,则不发出批准单和提货单
- 如果金额不大于500元,则无论是否过期,都发出批准单和提货单
- 无论金额大小,只要过期,都要发出通知单
若想覆盖所以测试点,就要按照判定表法列出所有条件的每一个取值,并根据给出的条件写出正确操作
金额 | 是否过期 | 正确操作 |
---|---|---|
大于500 | 是 | 通知单 |
大于500 | 否 | 批准单、提货单 |
小于500 | 是 | 批准单、提货单、通知单 |
小于500 | 否 | 批准单、提货单 |
三、缺陷管理
3.1缺陷认定标准
-
多/少功能
-
功能错误
-
隐形功能缺失:产品文档没有明确提出但是应该有的功能
例如:登陆成功后应该自动跳转到主页
-
易用性建议、是否好用(测试人员主观观点)
3.2缺陷管理流程
- 提交缺陷
- 分派缺陷
- 处理缺陷(由开发人员负责)
- 回归测试
- 关闭缺陷
3.3缺陷管理工具
Excel/禅道
3.4缺陷的相关信息
- 缺陷ID
- 缺陷标题:测试步骤描述+预期+实际
- 状态
- 新建
- 打开
- 关闭:缺陷已经处理完成
- 拒绝:开发人员认为这不是缺陷/缺陷无法复现
- 延期
- 优先级:参考用例优先级
- 模块:改缺陷位于哪个功能模块
- 缺陷描述
- 前置
- 步骤
- 预期
- 实际
- 附件/备注:日志或者截图来辅助说明
四、接口测试
4.1接口测试基础理论
**概念:**对系统或组件之间的接口进行测试。校验传递的数据正确性和逻辑依赖关系的正确性。
**测试方法:**模拟客户端想服务器发送请求,但是不是从前端页面,而是借助工具直接向接口发送请求,这样可以绕开前端页面的限制,更好地测试后端,发现一些通过操作页面发现不了的问题。
测试手段:
- 专门的测试工具:
- postman
- fiddler
- Jmeter
- 代码实现自动化测试:python + requests + pytest
4.2接口测试流程
- 需求分析,产出需求文档
- 开发人员撰写接口文档
- 编写接口测试用例
- 执行测试用例
- 提交、跟踪缺陷
- 提交测试报告
- 自动化持续集成
4.3接口测试的测试点
接口的测试又可以细分为对接口的功能测试、对接口的性能测试、对接口的安全测试
4.3.1接口功能测试
单功能接口测试
- 功能测试的一个业务模块,对应一个接口
- 借助工具、代码,绕开前端界面,组织接口所需要的数据,展开接口测试
业务场景功能测试:在确保单功能使用正常后,按用户的实际使用场景,设计接口业务场景
- 即把多个单功能串接起来
- 例:登陆–添加员工–查询员工–修改员工–分页查询员工–删除员工
4.3.2接口性能测试
- 响应时长
- 兼容性
- 并发性
- 服务器资源利用率(CPU、磁盘IO、内存等)
4.3.3接口安全测试
- 攻击安全:由安全工程师负责,与测试人员无关
- 业务安全
- 敏感数据加密处理
- SQL注入
- ……
4.4接口测试与功能测试设计的异同
与功能测试相同的点:针对每个数据框/参数,分别设置正向/反向的参数值
与功能测试不同的点:功能测试受到前端页面的限制,但是接口测试中参数的名称、数量不受限制,所以对参数本身也可以进行测试
- 正向参数:必选参、可选参、全部参数
- 反向参数:多参/少参/无参/错误参数(即自己乱写的参数)
4.5接口测试用例要素
相较于功能测试,接口测试具有统一的操作步骤(借助接口测试工具或者自动化代码);且”测试数据“这一部分更加复杂,除了参数值,还要有相关的http/https请求参数(请求头、请求行、url等)
两者共有的部分:
- 用例编号
- 用例标题
- 模块
- 优先级
- 前置条件
- 预期结果
接口测试用例特有的要素
- 请求方法
- URL
- 请求头
- 请求体(请求数据)