软件测试基础:定义、目的、内容、特点与原则
软件测试基础:定义、目的、内容、特点与原则
软件测试是软件开发过程中不可或缺的重要环节,它贯穿于整个软件生命周期,从需求分析到产品上线后的质量监控。本文将系统地介绍软件测试的定义、目的、内容、特点和原则,帮助读者全面了解软件测试的基础知识。
1、软件测试的定义
1.1 一句话
为了发现程序中错误而执行程序的过程。
1.2 官方定义
a. 用来促进鉴定软件的正确性、完整性、安全性和质量的过程。
b. 是一种实际输出与预期输出之间的审核或者比较过程。
c. 是以评价一个程序或者系统属性为目标的任何一种活动。测试是对软件质量的度量。
d. 使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
1.3 经典定义
在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
2、软件测试的目的
1. 短期(当下)
- 检验产品是否符合用户需求;
- 发现程序存在的代码或业务逻辑错误;
- 发现程序存在的代码错误;
- 提升用户的体验。
2. 长远看
- 避免重复出错;
- 测试提效;
- 产品质量提升。
3、软件测试的内容
贯穿于整个软件生命周期,在开发的不同阶段,测试不同内容。
1. 需求阶段
分析与评审需求规格说明书(即需求文档)的合理性、可行性等;
分析与评审产品原型(同上)。
2. 设计阶段
分析与评审UE、UI设计图(交互、界面)
分析与评审前后端开发设计方案(数据、逻辑等)
3. 测试阶段
测试计划、测试方案设计、测试用例设计;
测试执行:功能测试(即黑盒测试)、接口测试、性能测试、白盒测试(又名结构测试/逻辑驱动测试)、安全测试……
测试报告输出。
4. 交付/上线前
验收测试
5. 交付/上线后
线上质量监控
……
4、软件测试的特点
1. 侧重事后检测
通过测试提测的软件,验证是否符合需求。
2. 着眼于软件
走查开发文档、代码,运行软件,找出问题,报告质量。
3. 必须假设软件存在问题
奔着搞崩系统去,发现系统的问题,从而解决问题。
4. 找出更多的问题
测试找出问题越多,用户遇到的问题就会越少。
5、软件测试遵循的原则
1. 尽早介入
需求分析阶段即应介入。
2. 源于需求
所有的测试都应追溯到用户需求。
3. 程序员回避
程序员除了单元测试,应该避免检查自己的程序。
因为程序员对于自己的作品、思维具有局限性,无法保证测试质量。
交给第三方或者专业测试,运用各种测试技术,利用丰富的测试经验和对bug的敏感,去提高软件的质量。
4. 制定严格的测试计划
准备测试所需人力物力资源,把控测试进度,降低 项目风险。
5. 用例需完备
设计测试用例时应考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下还要制造极端状态和意外状态。
6. 二八原则
测试中,80%的错误很可能起源于20%的模块中。
举例说明:
泊松分布,一种离散概率分布。
主要用于描述单位时间(或空间)内,随机事件发生次数的概率分布,如服务请求次数、候客人数、机器故障数等。
世界80%的金钱掌握在20%的人手中,网站/系统全天访问量的80%会集中在20%的时间段内完成……
7. 严谨
对错误结果要进行确认,不能发现异常就直接提bug。
严格要求,则提bug需从前到后排查后,尽量找到出错源头并附排查过程图文,辅助开发定位与解决问题。
8. 适可而止
测试无穷尽,完全测试是不可能的,测试需要终止。(衡量成本)
9. 文档存留
妥善保存测试过程中的所有文档。
软件测试仅仅只是软件质量保障的重要手段,想要真正的提高软件产品的质量,需要通过持续不断的过程改进。