大多数开发人员不知道如何测试
每个开发人员都知道我们应该编写单元测试,以防止将缺陷部署到生产中。
大多数开发人员不知道的是每个单元测试的基本要素。我无法开始计算我看到单元测试失败的次数,完全不知道开发人员试图测试什么功能,更不用说它出了什么问题或为什么重要。
在我最近的一个项目中,我们让一大片单元测试进入测试套件,但完全没有描述测试的目的。我们有一个很棒的团队,所以我放松了。结果?只有作者才能真正理解的大量单元测试。
幸运的是,我们完全重新设计了API,我们将把整个套件扔掉并从头开始 - 这将是我修复列表中的优先级#1。
不要让这件事发生在你身上。
为什么进行测试?
您的测试是防范软件缺陷的第一道防线。您的测试比linting和静态分析更重要(它只能找到错误的子类,而不是实际程序逻辑的问题)。测试与实现本身一样重要(重要的是代码满足要求 - 如果实现得不好,它的实现方式根本不重要)。
单元测试结合了许多功能,使它们成为应用程序成功的秘密武器:
- 设计辅助:首先编写测试可以让您更清晰地了解理想的API设计。
- 功能文档(面向开发人员):测试描述在代码中包含每个实现的功能要求。
- 测试开发人员的理解:开发人员是否足够理解问题,以便在代码中阐明所有关键组件的要求?
- 质量保证:手动QA容易出错。根据我的经验,开发人员在更改重构,添加新功能或删除功能后,无法记住需要测试的所有功能。
- 持续交付援助:自动化质量保证提供了自动防止破坏的构建部署到生产的机会。
单元测试不需要扭曲或操纵来满足所有这些广泛的目标。相反,单元测试的基本性质是满足所有这些需求。这些好处都是良好编写的具有良好覆盖率的测试套件的副作用。
TDD(测试驱动开发)
有证据说:
- TDD可以降低错误密度。
- TDD可以鼓励更多模块化设计(提高软件灵活性/团队速度)。
- TDD可以降低代码复杂性。
科学说:大量的经验证据表明TDD有效**。
先写测试
Mic