在敏捷开发中,谁应该编写测试用例?

时间:2008-10-11 23:06:05

标签: testing project-management agile testcase

我们的团队有一个任务系统,我们发布分配给每个开发人员的小型增量任务。

每个任务都是在自己的分支中开发的,然后在合并到主干之前对每个分支进行测试。

我的问题是:任务完成后,谁应该定义应该在此任务上完成的测试用例

理想情况下,我认为任务的开发人员本身最适合这项工作,但我认为开发人员认为这是浪费他们的时间,或者他们根本不喜欢这样做。

我不喜欢让我的QA人员这样做的原因是因为我不喜欢他们创造自己的作品的想法。例如,他们可能会遗漏那些测试过多的工作,他们可能不知道所需的技术细节。

但同样,开发人员做测试用例的部分原因是,他们可能会遗漏他们认为会破坏的事情。 (甚至下意识地也许)

作为项目经理,我最终自己编写了每个任务的测试用例,但我的时间已经征税了,我想改变它。

建议?

编辑:根据测试用例,我指的是在应该合并到主干之前应该对分支执行的各个QA任务的描述。 (黑匣子)

16 个答案:

答案 0 :(得分:16)

团队。

如果客户遇到缺陷,则 团队的 错误,因此 团队 应该是编写测试用例以确保缺陷无法到达客户。

  1. 项目经理(PM)应该比团队中的任何人更好地理解域名。他们的领域知识至关重要,以便拥有对域有意义的测试用例。他们需要提供示例输入并回答有关无效输入期望的问题。他们至少需要提供“快乐路径”测试用例。

  2. 开发人员会知道代码。您建议开发人员可能最适合该任务,但您正在寻找黑盒测试用例。开发人员提出的任何测试都是白盒测试。这是开发人员创建测试用例的好处 - 他们知道代码中的接缝在哪里。

    优秀的开发人员也将向PM提出问题“当......会发生什么?” - 每个都是一个测试用例。如果答案很复杂“如果 a 然后 x ,但是如果 b 那么 y ,除了星期四” - 有多个测试用例。

  3. 测试人员(QA)知道如何测试软件。测试人员可能会提出PM和开发人员不会想到的测试用例 - 这就是测试人员的原因。

答案 1 :(得分:7)

我认为项目经理或业务分析师应该编写这些测试用例 然后他们应该将他们交给QA人员进行充实和测试。

这样,您就可以确保规范之间没有漏洞,以及实际测试和交付的内容。

开发人员肯定不会这样做,因为他们将测试他们的单元测试。 所以这是浪费时间。

此外,这些测试会发现开发人员永远不会发现的错误,因为这些错误可能是由于规范中的误解,或者通过代码的功能或路线没有经过深思熟虑和正确实现。

如果您发现自己没有足够的时间进行此操作,请雇用其他人,或者提升某人担任此角色,因为这是提供优质产品的关键。

答案 2 :(得分:4)

我们尝试将开发人员与QA人员配对,效果非常好。他们通常“保持彼此诚实”,并且由于开发人员有单元测试来处理代码,他/她已经非常熟悉这些变化。质量保证人员不是从黑盒子那边来的。两人都要对完整性负责。正在进行的审查过程的一部分有助于捕捉单元测试的缺点,因此没有太多的事件让我知道有人故意避免编写X测试,因为它可能会证明存在问题。

我喜欢在某些情况下的配对想法,并认为它运作良好。可能并不总是有效,但让来自不同地区的玩家互动有助于避免经常发生的“抛出墙壁”的心态。

无论如何,希望对你有所帮助。

答案 3 :(得分:4)

从过去的经验来看,我们非常幸运地定义了不同级别的测试来测试稍微不同的东西:

第1层:在代码/类级别,开发人员应该编写原子单元测试。目的是尽可能地测试各个类和方法。这些测试应该由开发人员在编写代码时运行,可能是在将代码存档到源代码控制之前,以及通过连续集成服务器(自动)进行编码(如果正在使用)。

第二层:在组件集成级别,再次让开发人员创建单元测试,但是测试组件之间的集成。目的不是测试单个类和组件,而是测试它们如何相互交互。这些测试应由集成工程师手动运行,或由连续集成服务器自动运行(如果正在使用)。

第3层:在应用程序级别,让QA团队运行系统测试。这些测试用例应基于产品经理提供的业务假设或需求文档。基本上,测试就好像你是最终用户一样,做最终用户应该做的事情,正如所要求的那样。这些测试用例应由质量保证团队和产品经理编写,他们(可能)知道客户想要什么,以及他们希望如何使用该应用程序。

我觉得这提供了相当好的覆盖率。当然,理想情况下,在向QA团队发送构建的应用程序之前,应运行上述第1层和第2层。 当然,你可以根据自己的商业模式进行调整,但这在我上一份工作中表现得非常好。如果其中一个单元测试在构建/集成过程中失败,我们的连续集成服务器会向开发团队发送一封电子邮件,以免有人忘记运行测试并将破解的代码提交到源存档中。

答案 4 :(得分:2)

“开发人员认为这是浪费他们的时间,或者他们根本不喜欢这样做”然后奖励他们。让他们创建测试用例需要哪些社交工程?

QA可以查看代码和测试用例并发出“没有足够的覆盖范围 - 需要更多案例”的发音。如果是这样,那么立即拥有“足够”覆盖范围的程序员将成为Big Kahuna。

所以,我的问题是:任务完成后,谁应该为此任务定义“足够”的测试用例的目标?一旦你知道“足够”,就可以让程序员负责填写“足够”,QA负责确保“足够”的测试完成。

太难定义“足够”?有趣。这可能是首先与程序员发生冲突的根本原因。他们可能觉得这是浪费他们的时间,因为他们已经“足够”,现在有人说这不够“。”

答案 5 :(得分:2)

质量检查人员应与“客户”一起定义每个任务的测试用例[我们真的在这里混合术语],开发人员应该编写它们。第一!

答案 6 :(得分:1)

  

我不喜欢让我的QA人员这样做的原因是因为我不喜欢他们创造自己的作品的想法。例如,他们可能会遗漏那些测试过多的工作,他们可能不知道所需的技术细节。

哎呀,你需要更多地信任你的QA部门,或者更好的部门。我的意思是,想象一下你曾经说过“我不喜欢让我的开发人员开发软件。我不喜欢他们创造自己的工作的想法。”

作为开发人员,我知道编写自己的测试存在风险。这并不是说我不这样做(我这样做,特别是如果我做TDD)但我对测试覆盖率没有幻想。开发人员将编写测试表明他们的代码完成了他们认为的功能。没有太多人会编写适用于实际商业案例的测试。

测试是一项技能,希望您的质量保证部门,或者至少是该部门的领导者,都精通该技能。

答案 7 :(得分:1)

选择(不只是随机选择)一个或两个测试人员,让他们编写测试用例。评论。如果使用任务的开发人员查看任务的测试用例,那么它也很有用。鼓励测试人员建议对测试装置进行改进和补充 - 有时人们害怕修复老板所做的事情。这样你就可以找到擅长测试设计的人。

让测试人员了解技术细节 - 我认为敏捷团队中的每个人都应该具有对代码的读取权限以及可用的任何文档。我认识的大多数测试人员都可以读取(和编写)代码,因此他们可能会发现单元测试很有用,甚至可能扩展它们。如果他们需要了解某些内容,请确保测试设计人员从开发人员那里获得有用的答案。

答案 8 :(得分:1)

我的建议是在合并代码之前让其他人查看测试用例以确保质量。当然,这可能意味着开发人员正在忽视另一个开发人员的工作,但第二组眼睛可能会捕捉到最初未被捕获的东西。初始测试用例可以由任何开发人员,分析师或经理完成,而不是测试人员。

质量保证不应该编写测试用例,因为它们可能是未定义预期结果的情况,如果每一方都认为他们的解释是,那么在QA和开发之间可能很难有人进行裁判。正确对象,真爱。这是我多次见过的事情,并希望它不会经常发生。

答案 9 :(得分:1)

我松散地将我的测试分解为“开发人员”测试和“客户”测试,后者将是“验收测试”。前者是开发人员编写的测试,用于验证其代码是否正确执行。后者是某人其他而不是开发人员编写的测试,以确保该行为符合规范。开发人员必须从不编写接受测试,因为他们正在测试的软件的创建假定他们做了正确的事情。因此,他们的验收测试可能会断言开发人员已经知道的是真实的。

验收测试应该由规范驱动,如果它们是由开发人员编写的,它们将受到代码驱动,因此受当前行为驱动,而不是期望的行为。

答案 10 :(得分:1)

敏捷佳能是您应该(至少)进行两层测试:开发人员测试和客户测试。

开发人员测试由编写生产代码的人编写,最好使用测试驱动开发。它们有助于提出一个良好的解耦设计,并确保代码正在执行开发人员认为它正在做的事情 - 即使在重构之后。

客户测试由客户或客户代理指定。事实上,它们是系统的规范,应该以商业人员可以理解的可执行(完全自动化)的方式编写。通常情况下,团队会在QA人员的帮助下为客户找到方法甚至他们。这应该在功能开发时 - 甚至在此之前发生。

理想情况下,QA在合并之前执行的唯一任务是按下按钮以运行所有自动化测试,并执行一些额外的探索性(=无脚本)测试。 您也希望在合并后再次运行这些测试,以确保集成更改不会破坏某些内容。

答案 11 :(得分:1)

测试用例首先在故事卡中开始。

测试的目的是将缺陷驱动到左侧(在软件开发过程的早期,当它们更便宜且更快地修复时)。

每张故事卡应包含验收标准。产品负责人与解决方案分析师配对,以定义每个故事的验收标准。此标准用于确定故事卡的用途是否已满足。

故事卡验收标准将确定开发人员在进行测试驱动开发时需要编写哪些自动化单元测试。它还将推动由自动化测试人员实现的自动化功能测试(如果使用FIT等工具,可能还需要开发人员支持)。

同样重要的是,验收标准将推动自动化性能测试,并可在开发人员分析应用程序分析时使用。

最后,用户验收测试将由故事卡中的验收标准确定,并且应由业务合作伙伴和/或用户设计。按照这个过程,您可能会发现零缺陷。

答案 12 :(得分:1)

除了较小的团队之外,我很少听说或看到项目经理编写测试用例。在任何大型,复杂的软件应用程序中都必须有一个真正知道应用程序的分析师。我作为PM在一家抵押贷款公司工作 - 我是否了解次级贷款,利率等等?也许是在表面层面,但真正的专家需要确保这些事情有效。我的工作是保持团队健康,保护敏捷原则,并为我的团队寻找新的工作机会。

答案 13 :(得分:0)

系统分析员应该检查所有测试用例及其与用例的正确关系。 此外,分析师应该执行最终的UAT,也可以基于测试用例。 因此,分析师和质量人员正在进行同行评审。

质量正在审核用例,同时他正在构建测试用例,分析师在编写测试用例并在执行UAT时对其进行审核。

答案 14 :(得分:0)

当然BA是领域专家,而不是从技术角度来看。 BA了解要求,测试用例应映射到要求。开发人员不应该是编写测试用例的人来测试他们的代码。质量保证可以根据要求编写详细的测试步骤。但是,撰写要求的人应该决定需要测试的内容。实际编写测试用例的人,只要测试用例可以追溯到需求,我就不会太在意。我认为BA指导测试方向或范围是有意义的,而QA会编写细粒度的测试计划。

答案 15 :(得分:0)

我们需要从“它是如何完成或应该完成的心态”演变而来,它正在失败并且不断失败。解决测试计划/案例编写问题的最佳方法是,测试用例应该写在瀑布中的需求doc或敏捷的用户故事中,因为正在编写这些reqs /用户故事。这样就毫无疑问需要测试什么,QA和UAT团队可以执行测试用例并将时间集中在实际测试和缺陷解决方案上。