什么是测试金字塔
测试金字塔是将软件测试分为三个不同类别的概念。这有助于开发人员和 QA 专业人员确保更高的质量,减少查找错误根本原因所需的时间,并构建更可靠的测试套件。
如下图所示。测试金字塔从上到下包含三部分:
- UI/Exploratory Tests(UI/探索性测试)
- Integration Tests(集成测试)
- Unit Tests(单元测试)
沿着金字塔从上到下自动化程度越来越高,同时随着自动化程度的增高这些测试也会越来越快。在金字塔上走的越高测试越少。
区别于耗时且手动的端到端探测性测试,单元测试具有小而孤立的特点,因此在实际开发中,团队应该有更多的单元测试。
测试金字塔基础:单元测试
单元测试的范围很小,它们确保独立的代码单元按应有的方式工作。单元测试应该测试一个变量,而不是依赖任何外部依赖项。
在这一层,测试由开发触发,测试在提交前提交后执行。
使用的设备
对于单元测试建议使用模拟器和仿真器这类虚拟设备,他们可以提供必要的反馈和调试日志信息,同时他们还具有更快、更具成本效益的测试优势。
中间阶层:集成测试
在金字塔的中间,您可以跨多个系统集成进行测试。与单元测试不同,这些测试是 CI 触发的。在此阶段,您需要涵盖更多功能并进行更多测试类型。
使用的设备
集成测试是真实设备与虚拟设备混用的阶段,因此,在两者之间取得适当的平衡至关重要。
至于到底使用什么类型的设备我们需要根据测试的类型区别对待。例如,验收测试,可以在虚拟设备上完成。但其他诸如性能测试、安全测试和某些可访问性功能,无法在虚拟设备上进行。
金字塔顶端:UI和探索性测试
这些测试通常比前两个测试更复杂,且具有更多的依关系。尽管团队可以通过自动化加速UI测试,但探测性测试通常是手动的,需要花费更多的时间。
使用的设备
金字塔的顶端会到达生产监控。此时必须在真实设备上进行测试。
由于真实用户报告的是真实设备上的缺陷,因此端到端测试以及探索性测试需要真实设备更接近地模仿用户设备上的应用程序。