我正在研究一个包含4个开发人员和3个QAers的项目。

我试图鼓励其他开发人员为他们添加的每个新功能编写测试,并且我们建立了一个套件大约50个Selenium UI测试。我毫不怀疑这可以提高产品质量,但是开发人员已成为使测试正常工作的奴隶,而且我认为我们对Selenium的了解还不足以真正有效地使用它。

我认为在下一个项目中,我将通过测试的自动化,并为QA人员构建一个自动化的回归套件。其中之一在使用Firefox的Selenium插件之前已经取得了成功,因此技能和意愿确实存在。这是正确的决定吗?

评论

从您接受的答案来看,您的质量检查人员似乎没有能力自行开发测试。其他组织(例如我们的组织)专门负责编码的人员来开发自动化测试,因此开发人员可以专注于应用程序,而不必成为Selenium的专家。我们的开发人员喜欢这种方式。解决方案显而易见:聘请有能力的程序员编写自动化测试。

#1 楼

扩展和维护自动化测试会花费时间,但是如果您的团队是更新测试的奴隶,那么您做错了。 :)

创建自动测试覆盖率的最大原因之一是创建了一个快速的反馈周期循环。
让测试团队修复测试之后会减慢该过程,并且总是滞后
测试存在很高的风险,因为测试始终是经过深思熟虑的,并且不受开发人员的信任。

我建议使用BDD框架。我以前的团队将Cucumber和Selenium合并到一个测试框架中。
当开发人员检入新代码时,当前的测试应该不会中断。另外,您还希望获得新功能的新覆盖范围。
在连续的集成周期中安排测试,以确保测试不会中断。


测试人员编写测试用例
开发人员可以使它们自动化

课程测试人员也可以使它们自动化,并且开发人员可以在更多情况下扩展测试,但是请记住,您需要优秀的开发人员来创建可维护的测试框架。

在实现更复杂的测试用例时,要同时使用两全其美和配对程序(1个开发人员+ 1个qa)。

评论


我同意,除了开发人员无需使测试案例自动化,需要经过培训的人员或具有生成自动化框架经验的人员。开发人员可以提供帮助,并且应该在可能的时候对代码进行检查,但是不仅仅是自动化测试,质量检查还应该能够找到有能力的人员

– MichaelF
2014年7月3日在12:13

同意,但是以我的经验,大多数“测试工程师”都是次要的编码神。为此,我深信开发人员应协助建立自动化测试框架。同样是因为这使得开发人员更容易采用,无论是技术上还是心理上。

– Niels van Reijmersdal
2014年7月3日在12:29

Niels,您的方法将要求开发人员成为/继续更新Selenium中的专家技能。以我的经验,开发人员很难保留他们需要负责的工具和单元测试。这只是心理带宽恕我直言的问题。系统集成等测试是不同的动物,具有不同的目标和假设。我们的开发人员很高兴我们有足够的称职的测试自动化程序员,因此他们不必编写集成测试。

–Peter M.-代表莫妮卡(Monica)
2014年7月9日在16:55



正确。作为对敏捷方法论的忠实拥护者,我认为团队应该是跨职能的,在小型团队(最多6个成员)中,团队成员应该具有共同的技能。拥有主要技能是测试工程的团队成员是一大优势。但是所有PBI的每次迭代都应满足“完成的定义”,在我的书中包括自动测试范围。在较小的团队中,您不能依靠一两个测试人员拥有所有自动化测试的所有权。世界不是黑白的,不是银弹。很好,认为这种分离对您的团队有效:)

– Niels van Reijmersdal
2014年7月9日在18:08



#2 楼

为什么选择要么?与测试人员一起工作,提供开发人员可以编写的测试思路和专业知识。我也将回避对GUI自动化的重视,并让开发人员在单元/系统级别上工作,除非他们已经这样做了

#3 楼

在这种情况下,我将采用以下方法:




单元测试-从单元测试中传播生活的日光。任何类型的业务逻辑自动化都应由单元测试处理,其他任何旨在检查单个代码单元功能的自动化测试也应由单元测试处理。这是开发人员级别的代码,但是如果您希望单元测试有用,那么测试人员的指导是必不可少的。

API /集成测试-从开发人员的角度来看,这些工作与单元测试大致相同,但它们会测试稍大一点的代码块。同样,由开发人员使用测试人员输入的代码进行编码,以决定如何进行良好的测试。

“无头”端到端测试-这些测试比完整的GUI测试轻巧,但不会发现组件和验证代码方面的问题。也并非在所有情况下都可行。它们介于API级和完全GUI级自动化之间。

端到端测试-这些通常是您的GUI级自动化测试。它们可以由开发人员使用测试人员输入进行编码,也可以由测试人员使用开发人员输入进行编码。

作为一般规则,您希望大多数自动化都处于单元测试级别,因为它是最快,最轻量的级别,并且设置大多数构建环境来运行单元相对不那么容易对每个编译/构建进行测试。在完成一个GUI级别的测试所需的时间内,可以运行成千上万的单元测试。

第二大测试应该是API /集成级别的测试。它们比单元测试慢,但可能仍可以在每个版本中运行。根据它们的设计方式,它们可能需要也可能不需要运行可执行文件。

出于多种原因,任何形式的端到端测试都应该是最小的组:


它们比单元级和API级测试慢几个数量级。
与较低级别的测试相比,它们更有可能报告误报(通常,您在自动化中需要链接的部分越多,您获得错误的可能性就越不是由错误引起的)
与单元级和API级别的测试相比,维护起来更加困难(因为它们处理的是更多的复杂性)。他们会一起进行自动化测试吗?谁去做事取决于谁最适合哪个任务,但目标仍然相同。

评论


我们的质量检查从手动测试人员开始。然后,经理意识到,当需要开发人员增加一些东西来简化测试时,开发具有更高的优先级。因此,他创建了自己的小组,由敬业的“测试自动化工程师”组成,他们与开发人员一起工作,但要向他报告,以根据质量检查优先级解决问题。 @Niels van Reijmersdal所描述的情况是理论上的,可以在多达5至8个开发人员和QA的小型团队中工作。根据我的经验(超过15个开发人员),开发团队的经理首先要解决自己的优先事项,因此需要单独的质量检查团队。

–Peter M.-代表莫妮卡(Monica)
2014年7月9日17:00



#4 楼

这取决于您可以负担的资源类型。做得很好的测试自动化不是兼职。如果您的团队中没有足够的Toolsmith来处理Automation Framework,您将需要帮助,或者期望它花费很长时间,或者期望它在重新确定优先级时付出努力以保持其进展。尽管大多数测试人员不会花费大量时间进行编码和学习编码,但许多测试人员却会这样做,他们可以帮助您提供帮助,并增强您的团队可能需要的东西。我不是开发人员,但我确实知道如何制作测试框架并使之正常运行,并根据需要提供开发人员的意见。毕竟许多开发人员在某个时候都不知道如何编码,他们还需要学习如何进行编码。这也是许多测试人员需要进行的一项技能,因为思维过程有所不同,但是您通常可以利用编码技能和实践以及测试技能和实践来构建一个非常有效的框架。

如果您想要框架可以满足您的要求,质量检查需要拥有它。质量检查需要运行它,质量检查需要指导它。您也应该从开发人员那里得到认可,一些代码审查(毕竟这是代码)将一次又一次地不仅在测试方面而且在框架方面都很好。使它健壮,最重要的是使它有用。其他团队也应该能够运行它,甚至开发人员也应该有一种方法可以在他们的环境中进行一些本地化的冒烟测试,以便获得他们的认可,并向他们展示框架的有用性-让他们尽早发现问题。我使用的最后一个框架(使用SpecFlow的BDD Web驱动程序)可以由QA,DEV和BA来使用-我只需要向他们展示如何运行它。我不是开发人员,但是我做很多自动化工作。

最好让开发人员在单元测试和框架中工作,但请记住他们的目标是开发解决方案,您的职责是证明他们的解决方案可以解决问题。

尽管浏览器附加组件很有用,但是请看诸如WebDriver for Selenium之类的东西和另一个如Cucumber或SpecFlow之类的工具。构建一个框架,该框架将允许您运行一组测试或少数几个测试,因此您可以根据需要涵盖回归,功能和其他测试。您还希望报告来自您的测试,您应该能够查看历史的通过/失败测试,​​以便知道它们是否有效,仅在特定时间失败或表明您的通过率越来越高-管理层将如此!任何工具都需要花费时间来学习,您只需要将该时间用于团队,并为他们提供改进资源。

#5 楼

我认为让质量检查工程师开发测试自动化是正确的决定。开发人员不是测试人员,也不具备创建良好的GUI测试用例的专业知识。

但是,如果需要,您可以让开发人员参与测试自动化的开发。他们具有有关编程的有用知识,可以帮助您设置测试自动化框架的基础结构。如果您有麻烦或不知道该如何发展,请向他们询问。

评论


我没有拒绝,但正如开发人员不是测试人员一样,围绕测试人员的另一种方式不是开发人员。没有开发人员的远见卓识,测试人员不应编写自动化测试代码。我看到过具有糟糕的编码技能的测试人员会构建怪异的(不可维护的)自动化但定义明确的测试用例。你们都需要:)

– Niels van Reijmersdal
2014年7月3日,11:53



@NielsvanReijmersdal有些人从事自动化框架,可以遵循开发方法和实践并仅作为测试人员工作。我见过开发人员的单元测试技能很差,而测试人员的测试框架也很不错,在这些领域中有很多交叉之处,因此并不是一成不变的。

– MichaelF
2014年7月3日在12:11

@NielsvanReijmersdal我回答中的“测试人员”一词包括测试人员可能具有的所有可能角色,以及测试自动化工程师。术语“开发人员”是指从事软件测试的人员。开发人员的重点应该放在开发和单元测试上,而不是GUI测试上。也许这还不清楚。希望现在清楚了。

– Twaldigas
2014年7月3日,12:26



+1。似乎周围的许多“开发人员优先”人员都认为测试人员是低技能或没有技能的开发人员。好吧,当然,如果他们没有技能,就不能指望他们进行适当的结构化测试。测试只是程序-它们只是使用您的应用程序来模拟用户交互。胜任的测试工程师将编写结构良好的测试。如果不称职的测试人员将编写测试,则结果可想而知。但这是由于他们的技能低下,而不是因为他们是超人的测试工程师。

–Peter M.-代表莫妮卡(Monica)
2014年7月9日在17:13