测试结构的分层 说起测试结构,为了更好地发现问题、验证需求,我们将测试按照结构分为这些层次: 端到端测试(UI测试),接口测试(service/api测试),单元测试(Unittest) ,针对这三种常见的测试分层类型,一般有如下的三种模型: 冰淇淋模型、金字塔模型、橄榄模型 1、冰淇淋模型 冰淇淋模型中,UI测试为主,接口和单元测试都相对较少,如下图结构所示 这种模型的特点为 单元测试很少; 有一定的服务级的接口测试; 绝大多数测试用例使用UI进行测试保证端到端测试的完备性; 持续集成:较难。 由于单元测试和接口测试有限,自动化覆盖度较弱,稳定周期长,持续集成的实现难度较高。 测试左移:不足。 UI测试为主,意味着系统必须充分开发完成并且正确部署之后才能进行测试,测试的开始时间相对滞后,面临着测试时间不充分的风险。 代码改动的影响很难第一时间得到发现和评估,影响范围不清晰,对应的测试无法较好地保证。 自动化能力:较弱。 自动化测试率有限,测试周期相对较长,回归成本高。 测试充分程度:异常场景偏弱。 很多异常UI无法覆盖的地方测试时相对难以构造,有测试不充分的风险。 虽然缺点很多,但是很多团队可能一开始都是这么做的,希望大家能够逐渐转变。 2、金字塔模型 金字塔模型中,单元测试为主,UI测试相对较少,如下图结构所示 测试金字塔模型是目前业界倡导的理想模型,特点如下 单元测试充分; 接口级的测试较多; ui级的测试少,通常只是用户验证 对于测试金字塔,越往下靠越容易自动化,越靠下成本越低,越靠下效率越高。 该模型对开发人员的测试能力要求很高,质量控制基本成为开发的本职工作。 持续集成:容易。 由于单元测试和接口测试为主,自动化覆盖度度高,稳定周期短,利于持续集成。而且单元测试和接口测试运行速度快,回归测试很快。 测试左移:充分。 开发阶段即可暴露大部分问题,代码改动的影响第一时间就会被发现。 自动化能力:非常高。 同时,对团队的开发、测试来说能力要求也很高。 测试充分程度:中等。 虽然底层覆盖度较高,但是对于端到端测试不足,对于UI问题不容易及时发现,用户体验不能较好地保证。对于用户真实使用的场景、流程不容易完全覆盖到位。 3、橄榄球模型 橄榄球模型兼顾了UI和单元测试的量,接口测试为主,橄榄球模型综合了上面两种模型的优缺点,如下图结构所示 其特点如下: 单元测试和UI测试适中,保持平衡; 测试的重心放在接口级的测试上,提倡高度自动化; 持续集成:较为容易。 测试左移:较为充分。 自动化能力:较高。 测试充分程度:中等。 因为橄榄球模型综合了上述的优缺点,将分层做了一定程度的性价比平衡,可以作为目前的最佳实践来参考。 下面整理了这几种模型的优缺点和适应场景