软件测试
约 883 字大约 3 分钟
1. 概述
软件测试是软件质量保证的关键活动,通过系统化的测试过程发现软件缺陷,确保软件质量。
2. 测试分类
2.1 测试阶段划分
- 单元测试 :测试最小的可测试单元
- 集成测试 :测试多个模块之间的接口
- 系统测试 :测试整个系统的功能和性能
- 验收测试 :与用户进行交互,验证系统是否满足需求
2.2 测试方法划分
- 动态测试 :执行程序,验证功能和性能不执行程序,仅分析代码结构和逻辑
- 白盒测试:基于代码结构进行测试,控制流测试、数据流测试、程序变异测试。
- 黑盒测试:不考虑内部结构,仅关注功能和性能,集成测试。
- 灰盒测试:结合内部结构和外部行为进行测试,边界值分析。
- 静态测试 :不执行程序,仅分析代码结构和逻辑
- 桌前检查:在测试前,检查代码是否符合规范。
- 代码审查:审查代码结构和逻辑。
- 代码走查:检查代码的执行过程。
2.3 测试目的
- 功能测试:验证软件是否满足需求规格说明书。
- 性能测试:验证软件在各种负载下的性能表现。
- 负载测试:验证软件在高负载下的性能表现。
- 压力测试:系统的瓶颈或不能接受的性能点。(上限)
- 强度测试:系统资源特别低的情况下,测试软件的极限性能。(下限)
- 并发测试:同时在线的最大用户数。
- 可靠性测试:MTTF、MTTR、MTBF。
- 负载均衡测试:验证软件在分布式环境下的性能表现。
- 安全性测试:验证软件是否存在安全漏洞。
- 兼容性测试:验证软件在不同平台和设备上的兼容性。
- 可用性测试:验证软件在各种使用场景下的可用性。
软件可靠性计算:
$$
\(串联系统的可靠性): R = R_{1} * R_{2} * ... *R_{n}
$$
$$
\text(并联系统的可靠性): R = 1 - (1 - R_{1}) * (1 - R_{2}) *... * (1 - R_{n})
$$
3. 测试流程
测试计划
确定测试范围
制定测试策略
分配测试资源
测试设计
设计测试用例
准备测试数据
设计测试脚本
测试执行
执行测试用例
记录测试结果
跟踪缺陷修复
测试评估
分析测试结果
评估测试覆盖率
生成测试报告
4. 测试工具
- 单元测试框架 :JUnit, TestNG, PyTest
- 性能测试工具 :JMeter, LoadRunner
- 自动化测试工具 :Selenium, Appium
- 缺陷管理工具 :JIRA, Bugzilla
- 测试管理工具 :TestLink, qTest
5. 测试方法
- 回归测试 :确保新修改不影响现有功能
- 冒烟测试 :快速验证主要功能
- 探索性测试 :根据测试人员经验进行测试
- 负载测试 :测试系统在负载下的表现
- 压力测试 :测试系统的极限承受能力
6. 测试报告
- 测试计划
- 测试用例
- 测试报告
- 缺陷报告
- 测试总结
测试标准
- GB/T 15532-2008 计算机软件测试规范
- GB/T 28827-2012 软件工程 软件生存周期过程 测试
- GB/T 25000.51-2016 系统与软件工程 系统与软件质量要求和评价
- GB/T 31490-2015 软件工程 软件测试文档
- GB/T 21567-2008 软件测试人员资质要求