测试发展的核心是开发人员驱动的自动化测试实践。自动化测试可以防止缺陷逃逸。在开发周期中,一个缺陷被捕获的时间越晚,成本越高,这个成本呈指数增长自动化测试提升了变更的信心和能力。
编写测试的行为也改变了系统的设计,测试可以告诉你关于设计选择的很多信息。系统与数据库的耦合是否过紧?API是否支持所需的用例?系统能处理边界用例吗?这将使得软件更加模块化,具有更大的灵活性。
一个简单的测试,通常包括四个部分。1、一个你正在测试的单一行为,一般来说是一个你正在调用的方法或API。2、一个特定的输入,可能是一些需要传给API的值。3、一个可观察到的输出或行为。4、一个受控环境,例如一个单独隔离的进程。
测试并不是事后才考虑的事情。专注于质量和测试是我们工作的一部分。未将质量融入我们的产品和服务,将不可避免导致糟糕的结果。我们将测试作为我们工程文化的核心。
简单地说,自动化测试包含三个活动:编写测试、运行测试和对测试失败做出响应。一个自动化测试是一小段代码,通常是一个函数或方法。它调用你要测试的大型系统的某个独立部分。
测试的好处包括:更少的调试,增强变更的信心,作为活文档,简化评审,驱动职责分离模块化设计,带来快速高质量的发布。
编写尽可能小粒度的测试,在速度、资源利用率和稳定性方面做出一定保证。所有测试都力求封闭性,测试应包含设置、执行和环境回收所必须的所有信息。单元测试是窄测试范围,集成测试是中型范围,功能测试、端到端测试或系统测试是大范围测试。
采用开发人员驱动的自动化测试是最具变革性的软件工程实践之一,使我们能用更大的团队构建更大的系统。自动化测试是实现软件变更的基础,要进行大规模测试,必须实现自动化测试。