软件测试基础知识
什么是软件测试?
软件测试是一种系统性的活动,旨在评估软件产品的质量。其主要目的是发现软件中的缺陷和问题,确保软件在发布和使用时能够达到预期的质量标准。
软件测试的目的是?
1.验证软件实现与需求一致;
2.发现缺陷,提高质量;
3.评估质量(版本的质量情况,能否发布)
软件开发模式: 瀑布、敏捷、DevOps
测试流程(瀑布模式)
测试策略 - 测试设计 - 测试执行 - 测试评估
测试策略
5W1H法(Why,What,When,Where,Who,How)
- What(测试什么?) 明确要测试的软件功能
- Why(为什么要测试?) 确定测试的目标
- Who(谁来测试?) 确定测试人员
- When(何时进行测试?) 制定测试的时间表
- Where(在哪里测试?) 确定测试环境
- How(如何测试?) 确定测试方法和工具
测试设计
1.分析需求
明确测试内容和目标,制定测试计划;
参与需求评审,减少设计阶段的缺陷;
2.设计测试方案
根据需求设计测试方案,包括:
- 测试环境:操作系统、数据库、组网结构;
- 测试工具;
- 测试功能点及场景;
- 是否需要性能测试、安全测试等;
3.编写测试用例
根据测试方案的场景,编写具体可执行的用例;
测试用例:
- 测试目的
- 预制条件
- 测试步骤
- 预期结果
测试执行
4.迭代测试
发现的缺陷修复后重写出包,重复测试;
根据实际情况新增删减用例;
5.验收测试
最后一轮出包,用例全部通过;
性能测试、安全扫描通过;
产品文档资料等验证;
测试评估
6.测试报告
输出测试报告、性能测试报告、安全扫描结果等。
测试报告内容包括
- 测试产品版本
- 测试环境信息
- 测试结论
- 关键风险
- 缺陷分析
- 测试缺陷率 = 发现的缺陷总数 / 测试用例总数 * 100%
- 覆盖率分析
- 代码覆盖率 = 被测试代码行数 / 总代码行数 * 100%
- 功能覆盖率 = 已测试功能点数 / 总功能点数 * 100%
- 遗留问题
测试分类
按测试阶段分类: 单元测试-集成测试-系统测试-验收测试
按测试类型分类: 功能测试-性能测试-安全测试-可靠性测试等
按测试方法分类: 黑盒测试-白盒测试
黑盒测试
1.等价类划分
有效等价类、无效等价类
2.边界值分析
- 上点:就是边界上的点,不管是开区间还是闭区间。
- 内点:就是在域范围内的任意一点。
- 离点:就是离上点最近的一个点。
如果边界是封闭的,那么离点就是域范围外离上点最近的点。例如取值范围闭区间`[2,8],离点是1和9。
如果边界是开放的,那么离点就是域范围内离上点最近的点。例如取值范围开区间(2,8),离点是3和7。
3.场景分析法
将场景一一拆分,逐条覆盖
4.因果图-判定表法
根据输入条件的组合与输入条件的相互制约关系。
- 根据需求说明,分析因和果,画出因果图
- 将因果图转换为判定表
- 将判定表的每一列设计成一个测试用例
5.正交实验设计法
通过有限的测试用例覆盖尽可能多的软件功能和输入组合。
- 确定因素和水平: 假设3个因素(A,B,C),每个因素有两个水平(1,2)
- 选择正交表: L4(23)正交表的含义是:4个测试用例可以覆盖所有3个因素的2个水平组合,确保每个因素的每个水平出现的次数相等
- 填写正交表: 每行记录就是一条测试用例
白盒测试
- 语句覆盖
每个可执行语句至少被测试一次。 - 判定覆盖(分支覆盖)
每个判断语句的真假值至少被测试一次,即每个分支都要至少走一次。 - 条件覆盖(真假值覆盖)
判断语句中的每个条件的真假值至少被测试一次。 - 判定条件覆盖
判断语句中的每个条件的真假值至少被测试一次,同时,所有判断的可能结果至少执行一次。即条件覆盖+判定覆盖 - 条件组合覆盖
每个条件的各种组合至少被测试一次。 - 路径覆盖
覆盖程序中的所有可能的执行路径。
其他测试
兼容性测试: 软件兼容、硬件兼容、内部兼容、外部兼容
可服务性测试: 可部署、可维护、易用性、全球化
资料测试: 一致性、易用性
参考资料: