一直以来,我都听到过各式各样的测试——单元测试、黑盒测试、压力测试等等,但是很难对所有的测试方式有一个总体的认知。
在经过大量的谷歌之后,我终于把各种种类的测试弄清白了,下面针对每一种测试做一个简单的一句话介绍,更详细的介绍可以自行搜索。
按测试阶段分类§
- 单元测试:针对单个函数、类进行测试
- 集成测试:将各单元组合之后进行测试,用来验证各个组件之间能否互相配合,正常工作
- 系统测试:针对整个系统进行全面的测试,涵盖功能和非功能(兼容性、性能等)方面
- 端到端测试:与系统测试类似,模仿完全真实的用户环境,如网络通信、数据库交互等,也会验证其他关联系统。通常会手动测试,很难自动化
- 验收测试:验证交付的产品是否符合预期的各项要求,测试内容通常是系统测试的子集
- alpha 测试:验收测试的一种,由内部用户在测试环境进行测试
- beta 测试:验收测试的一种,由外部用户在正式环境下进行测试
是否查看源代码§
- 黑盒测试:不关心内部细节,只要输入和输出符合要求即可
- 白盒测试:验证代码中的每条语句,每个分支都能正确运行
- 分支测试:白盒测试的一种,在单元测试期间进行,通过遍历每个分支进行彻底的测试
- 灰盒测试:既考虑产品设计要求,又考虑代码的实现细节
是否运行程序§
- 静态测试:不运行程序,仅通过语法分析来检查程序的正确性。代表:ESLint
- 动态测试:通过运行程序,检查运行结果与预期结果的差异
是否验证产品功能§
- 功能测试:验证产品功能是否符合预期
- 非功能测试:可用性、兼容性、性能、负载、压力、可伸缩性、安全性等
- 可用性测试:验证新用户是否可以轻松理解如何使用产品
- 可访问性测试:残疾人能否正常使用产品
- 兼容性测试:验证在不同版本的终端上是否能正确运行
- 边界值测试:检查输入为边界值时程序能否正确运行
- 负载测试:考察当前软硬件环境下系统所能承受的最大负荷
- 压力测试:在一定的负载下系统长时间运行的稳定性
- 性能测试:检查系统是否满足性能要求
- 体积测试:当遇到大量数据时是否会影响系统性能
- 安全测试:检查系统是否存在安全漏洞
其他§
- 猴子测试:无需理解程序,由随机的输入进行测试
- 突变测试:修改一小段源代码,验证现有测试用例能否识别此缺陷
- 恢复测试:验证系统能否从灾难(断电、断网等)中恢复
- 冒烟测试:对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性
- 回归测试:验证代码更改是否不会影响产品的现有功能
还有很多种测试,由于比较偏门所以我没有列出来。
我参考了大量这个网站的内容,感兴趣的可以看看。