1.3 可测试性设计

随着云原生技术的加速普及与快速发展,软件系统的规模不断扩大,复杂性也不断提高。与此相对应,在软件研发过程中,为测试而设计(design for testing)、为部署而设计(design for deployment)、为监控而设计(design for monitor)、为扩展而设计(design for scale)和为失效而设计(design for failure)正变得越来越重要,甚至成为衡量软件组织核心研发能力的主要标尺。

本节重点探讨“为测试而设计”的理念,以软件的可测试性(testability)为主线,向大家阐述软件可测试性的方方面面,以及软件组织在这个方向上的一些最佳实践与探索。

软件的可测试性对软件的研发和质量保障有着至关重要的作用,是实现高质量、高效率软件交付的基础。可测试性差,会直接增加测试成本,让测试结果验证变得困难,进而导致工程师不愿意做测试,或者使测试活动延迟发生,这些都违背了持续测试、尽早以低成本发现问题的原则。为此,我们有必要对可测试性进行一次深入浅出的探讨,主要内容包含以下5个方面:

可测试性的定义;

可测试性差引发的问题;

可测试性的3个核心观点;

可测试性的4个维度;

不同级别的可测试性与工程实践。