流浪小猫的博客

测试的分类

· xcatliu · Programmer ·

一直以来,我都听到过各式各样的测试——单元测试、黑盒测试、压力测试等等,但是很难对所有的测试方式有一个总体的认知。

在经过大量的谷歌之后,我终于把各种种类的测试弄清白了,下面针对每一种测试做一个简单的一句话介绍,更详细的介绍可以自行搜索。

按测试阶段分类

  • 单元测试:针对单个函数、类进行测试
  • 集成测试:将各单元组合之后进行测试,用来验证各个组件之间能否互相配合,正常工作
  • 系统测试:针对整个系统进行全面的测试,涵盖功能和非功能(兼容性、性能等)方面
    • 端到端测试:与系统测试类似,模仿完全真实的用户环境,如网络通信、数据库交互等,也会验证其他关联系统。通常会手动测试,很难自动化
  • 验收测试:验证交付的产品是否符合预期的各项要求,测试内容通常是系统测试的子集
    • alpha 测试:验收测试的一种,由内部用户在测试环境进行测试
    • beta 测试:验收测试的一种,由外部用户在正式环境下进行测试

是否查看源代码

  • 黑盒测试:不关心内部细节,只要输入和输出符合要求即可
  • 白盒测试:验证代码中的每条语句,每个分支都能正确运行
    • 分支测试:白盒测试的一种,在单元测试期间进行,通过遍历每个分支进行彻底的测试
  • 灰盒测试:既考虑产品设计要求,又考虑代码的实现细节

是否运行程序

  • 静态测试:不运行程序,仅通过语法分析来检查程序的正确性。代表:ESLint
  • 动态测试:通过运行程序,检查运行结果与预期结果的差异

是否验证产品功能

  • 功能测试:验证产品功能是否符合预期
  • 非功能测试:可用性、兼容性、性能、负载、压力、可伸缩性、安全性等
    • 可用性测试:验证新用户是否可以轻松理解如何使用产品
    • 可访问性测试:残疾人能否正常使用产品
    • 兼容性测试:验证在不同版本的终端上是否能正确运行
    • 边界值测试:检查输入为边界值时程序能否正确运行
    • 负载测试:考察当前软硬件环境下系统所能承受的最大负荷
    • 压力测试:在一定的负载下系统长时间运行的稳定性
    • 性能测试:检查系统是否满足性能要求
    • 体积测试:当遇到大量数据时是否会影响系统性能
    • 安全测试:检查系统是否存在安全漏洞

其他

  • 猴子测试:无需理解程序,由随机的输入进行测试
  • 突变测试:修改一小段源代码,验证现有测试用例能否识别此缺陷
  • 恢复测试:验证系统能否从灾难(断电、断网等)中恢复
  • 冒烟测试:对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性
  • 回归测试:验证代码更改是否不会影响产品的现有功能

还有很多种测试,由于比较偏门所以我没有列出来。

我参考了大量这个网站的内容,感兴趣的可以看看。

本文遵循 CC BY-ND-ND 3.0 协议,转载请注明原作者,禁止商用,禁止演绎。


© 2012 - 2019 xcatliu
Hexo 强力驱动 · 主题 Milk