较大型测试有以下特征。
它们可能会慢。大型测试默认时长是15分钟或1小时,也可能几小时甚至几天。
它们可能是非封闭的。大型测试可能会与其他测试和流量共享资源。
它们可能是非确定性的。其他测试或用户状态可能对它进行干扰。
单元测试可以给你对单个函数、对象和模块的信心。大型测试使你对整个系统可以按预期运行有更大的信心。
较大型测试存在的主要原因是为了解决保真度问题。保真度是测试反映被测系统真实行为的属性。生产环境天然本身就是最高保真度等级的测试环境。提高保真度,意味着成本的增加,以及在生产环境下故障风险的增加。
单元测试中的常见问题:
不忠于原版的替身,没有真实的配置文件,负载时出现问题,无法测试意外的行为和输入,真空效应。
单元测试可靠、快速、可扩展。大型测试违反所有这些约束。
大型测试由下面的工作流构成:获得被测系统,喂必要的测试数据,使用被测系统执行某个操作,验证行为。
大型测试的类型包括:一个或多个二进制文件的功能测试、浏览器和设备测试、性能负载和压力测试、部署配置测试、探索性测试、AB差异测试、用户验收测试、探针和金丝雀分析、灾难恢复和混沌工程、用户评估。
大型测试的开发者工作流:编写大型测试、运行大型测试、维护大型测试。
大型测试需要确保测试与被测系统的保真度相匹配,解决单元测试无法充分覆盖的问题。大型测试更加复杂,运行速度较慢,需确保被良好维护,并在必要时运行。识别系统风险的综合测试策略和解决这些风险的较大型测试是必须的。
较大型测试覆盖了单元测试无法覆盖的范围。大型测试由被测系统、数据、操作和验证组成。一个好的设计包括一个可以识别风险的测试策略,以及可以缓解这些风险的较大型测试。必须对较大型测试做出额外的努力,以防止它们在开发人员工作流中产生摩擦。