Testing 我应该什么时候/多久测试一次?

Testing 我应该什么时候/多久测试一次?,testing,Testing,作为一个新手开发人员,我正进入我的第一个专业项目的节奏,我正试图尽快养成良好的习惯。然而,我发现我经常忘记测试,推迟测试,或者在构建结束时做一大堆测试,而不是一次一个 我的问题是,在处理大型项目时,您喜欢进入什么样的节奏,以及测试适合于什么样的节奏。在您签入代码之前。当我为自己整理一些东西时,我会在最后进行测试。糟糕的做法,但这些通常都是小东西,我会用几次,就这样 在一个更大的项目中,我在编写类之前编写测试,并在对该类进行每次更改之后运行测试。好吧,如果你想跟随TDD的人,在开始编写代码之前。;

作为一个新手开发人员,我正进入我的第一个专业项目的节奏,我正试图尽快养成良好的习惯。然而,我发现我经常忘记测试,推迟测试,或者在构建结束时做一大堆测试,而不是一次一个


我的问题是,在处理大型项目时,您喜欢进入什么样的节奏,以及测试适合于什么样的节奏。

在您签入代码之前。

当我为自己整理一些东西时,我会在最后进行测试。糟糕的做法,但这些通常都是小东西,我会用几次,就这样


在一个更大的项目中,我在编写类之前编写测试,并在对该类进行每次更改之后运行测试。

好吧,如果你想跟随TDD的人,在开始编写代码之前。;)

我和你的处境非常相似。我想更多地投入到测试中,但我目前的处境是,我们正在努力“将代码输出”,而不是“将代码输出到正确的位置”,这让我感到害怕。因此,我正在慢慢地尝试在我的开发周期中集成测试过程

目前,我在编写代码时进行测试,试图在编写代码时破坏代码。我发现很难进入TDD思维模式。。这需要时间,但这是我想要的工作方式

编辑: 我想我应该对此进行进一步的阐述,这是我的基本“工作流程”

  • 计划我想从代码中得到什么, 可能的物体设计,不管怎样
  • 创建我的第一个类,在顶部大纲中添加一条巨大的注释 我对班级的“愿景”是什么
  • 概述基本测试场景。。这些基本上是 成为单元测试
  • 创建我的第一个方法。。还写了一篇简短的评论来解释 它的预期工作方式
  • 编写一个自动化测试,看看它是否达到我的预期
  • 对每个方法重复步骤4-6(注意,自动测试在F5上运行的巨大列表中)
  • 然后,我创建了一些健壮的测试来在工作环境中模拟类,显然解决了任何问题
  • 如果在此之后发现了任何新的bug,那么我将返回并编写新的测试,确保它失败(这也是bug的概念证明),然后修复它

  • 我希望这有帮助。。欢迎评论如何改进这一点,正如我所说,这是我关心的问题。

    我经常测试。在我完成一个函数内部的循环之后,我运行程序并点击循环顶部的断点,然后运行它。这一切都只是为了确保流程完全按照我的要求进行

    然后,一旦一个函数完成,您就可以对它进行整体测试。您可能希望在调用函数之前设置一个断点,并检查调试器以确保其正常工作


    我想我会说:“经常测试。”

    我最近才将单元测试添加到我的常规工作流程中,但我编写单元测试:

    • 表达每个新代码模块的需求(在我编写接口之后,但在编写实现之前)
    • 每次我想“最好……等我做完”
    • 当出现故障时,量化错误并证明我已经修复了它
    • 当我编写显式分配或释放内存的代码时——我讨厌寻找内存泄漏

    我在大多数构建上运行测试,并且总是在运行代码之前进行测试。

    从单元测试开始。具体来说,请查看TDD,测试驱动开发。TDD背后的概念是首先编写单元测试,然后编写代码。如果测试失败,则返回并重新编写代码。如果它通过了,你就转到下一个

    我对TDD采用混合方法。我不喜欢什么都不做就写测试,所以我通常先写一些代码,然后把单元测试放进去。这是一个反复的过程,一个你从未真正完成过的过程。更改代码,运行测试。如果出现任何故障,请修复并重复

    另一种类型的测试是集成测试,它将在流程的后面出现,通常可能由QA测试团队完成。在任何情况下,集成测试都解决了作为一个整体测试各部分的需要。它是您关心的测试工作产品。这是一个更难处理的b/c,它通常涉及到自动测试工具(例如Robot)

    另外,看看CruiseControl.NET这样的产品,它可以进行连续构建。CC.NET是一个很好的b/c版本,它将在每次构建时运行单元测试,并在出现任何故障时立即通知您。

    首先,而且经常如此。 如果我正在为系统创建一些新功能,我将首先定义接口,然后为这些接口编写单元测试。要想编写什么样的测试,就要考虑接口的API和它提供的功能,拿出一支笔和纸,想一想潜在的错误条件,或者证明它正在做正确的工作。如果这太难了,那么很可能您的API不够好。 关于测试,请查看是否可以避免编写测试多个特定对象的“集成”测试,并将它们作为“单元”测试

    然后创建接口的默认实现(不做任何事情,返回垃圾值,但不抛出异常),将其插入测试以确保测试失败(这将测试您的测试是否工作!:)。然后写入功能并重新运行测试。 这种机制并不完美,但会覆盖许多简单的编码错误,并为您提供运行新功能的机会,而无需将其插入整个应用程序

    接下来,您需要在主应用程序中结合现有功能对其进行测试。 这是测试更困难的地方,如果可能的话,应该部分外包给好的QA测试人员,因为他们有打破东西的诀窍。艾尔