测试

测试是证明变更前后系统的某些领域相等性的手段,测试的数量直接取决于系统的可靠性要求。

软件测试可以分为传统测试和生产测试两大类,传统测试用来在开发过程中评估软件的正确性,而生产测试则用来评估已部署的软件是否正常。

传统测试可以分为三类:

  • 单元测试:成本最小、最简单的测试,用来评估一个独立的软件单元的正确性
  • 集成测试:借助依赖注入(比如Dagger等)评估组件功能的正确性
  • 系统测试:在未部署的系统运行的大型测试,所有依赖都要装载到系统中
    • 冒烟测试:对系统基本功能的简单测试,如果不通过,其他昂贵的测试就不用进行了
    • 性能测试:验证系统的性能
    • 回归测试:验证系统的功能,确保之前出现的bug不会重现

生产测试也称为黑盒测试,运行在已经部署的生产环境里,包括

  • 配置测试,验证配置文件的正确性
  • 压力测试,验证服务的性能边界
  • 金丝雀测试,这其实是增量发布的一部分,在原有系统基础上,更新一小部分的服务到新版本,随后保持一定的孵化期,如果没有未预料的问题发生,则继续发布流程,直到更新所有服务器

其他考虑

  • 针对灾难的测试,验证灾难恢复工具的正确性
  • 允许测试失败以降低平均修复时间(MTTR)
  • 生产环境探针提供生产服务的反馈
Feisky wechat
微信公众号订阅