unit-testing - 单元测试和验收测试是否足够?

标签 unit-testing automated-tests integration-testing acceptance-testing

如果我对每个类和/或成员函数进行单元测试,并对每个用户故事进行验收测试,我是否有足够的测试来确保项目按预期运行?

例如,如果我有一个功能的单元测试和验收测试,我还需要集成测试还是单元测试和验收测试应该涵盖相同的基础?测试类型之间是否存在重叠?

我在这里谈论自动化测试。我知道仍然需要手动测试来实现易用性等。

最佳答案

我建议阅读 2nd edition of Code Complete 中的第 20 - 22 章.它很好地涵盖了软件质量。

这是一些关键点的快速分割(所有功劳归功于麦康奈尔,2004)

Chapter 20 - 软件质量格局:

  • 没有任何一种缺陷检测技术本身是完全有效的
  • 越早发现缺陷,它与其他代码的关联就越少,它造成的损害就越小

  • Chapter 21 - 协同 build :
  • 协作开发实践往往比测试发现更高百分比的缺陷并且更有效地发现它们
  • 协作开发实践倾向于发现与测试不同类型的错误,这意味着您需要同时使用审查和测试来确保您的软件质量
  • 结对编程的成本通常与检查相同,并产生相似的质量代码

  • Chapter 22 - 开发人员测试:
  • 自动化测试通常很有用,对于回归测试必不可少
  • 改进测试过程的最佳方法是定期测试,对其进行测量,并使用您学到的知识来改进它
  • 在代码之前编写测试用例与在代码之后编写测试用例花费的时间和精力相同,但它缩短了缺陷检测-调试-纠正周期(测试驱动开发)

  • 至于如何制定单元测试,您应该考虑基础测试、数据流分析、边界分析等。所有这些都在书中详细解释(其中还包括许多其他引用资料以供进一步阅读)。

    也许这不完全是你要问的,但我会说自动化测试绝对不是一种策略。您还应该考虑结对编程、正式审查(或非正式审查,取决于项目的大小)和测试脚手架以及自动化测试(单元测试、回归测试等)等。

    关于unit-testing - 单元测试和验收测试是否足够?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/877818/

    相关文章:

    iphone - 构建后如何自动运行我的 iPhone 应用程序?

    php - 测试多个文件夹

    google-chrome - Chrome iphone 仿真 - Testcafe

    android - 我可以为 Google Play UI 测试定义场景吗?

    elasticsearch - 从 ESIntegTestCase 抛出 NullPointerException

    typescript - Jest 模拟节点模块不适用于 typescript

    java - 模拟没有 roboelectric 的 android.os.BaseBundle

    testing - 对于像atom/vscode这样的可执行 Electron 应用程序,我们在.testcafe-electron-rc的 "mainWindowUrl"属性中指定什么?

    Gradle 集成测试构建但未运行

    ios - 适用于 iOS 的 KIF 框架 : Can it simulate touch-and-hold gesture?