我们应该开始进行敏捷测试的哪个阶段(SCRUM)?


9

我的一些背景知识-在敏捷环境中,我使用SCRUM(1-2周冲刺)是手动测试人员将近2年。因此,我想在使用Selenium WebDriver(带有Java)的工作中引入自动化测试。

我的问题是在什么时候应该手动测试功能以及什么时候应该转换它们以进行自动化测试?

我一直在阅读并获得不同的方法,例如:

  1. 当开始新的Sprint时,将用户故事转换为上一个Sprint的自动化脚本,或者;
  2. 在相同的Sprint中转换用户故事。

任何建议将不胜感激。先感谢您。


4
请不要在两个不同的堆栈交换站点上交叉发布相同的问题。请删除其中之一。
R Sahu

Answers:


13

测试自动化(以及所有其他测试)应该是完成定义的一部分。这是为了制造可能可运输的产品。如果未经测试,可以发货吗?

测试也应该是整个团队的方法,因此测试自动化不是测试人员的责任。开始考虑在此过程中尽快进行测试

测试自动化在敏捷中是如此重要,因为:

组织敏捷性受技术敏捷性的约束

换句话说,当您对产品进行更改的速度很慢时,无论您如何构建团队,组织或采用哪种框架都没关系,您对更改的响应就会很慢。

https://less.works/less/technical-excellence/index.html

如果将测试推迟到另一次迭代,您将始终处于落后状态。由于难以重构和安全保护产品的外部行为,因此很难更改产品的方向。进行任何重复性的手动测试是使您减速,自动化的关键!

许多测试人员会告诉您,在产品界面稳定之前,您不应该开始进行端到端测试。不要等,而要充分利用PageObjects并确保您的测试可维护,并使开发人员有责任创建和修复它们。


我不同意第一个“应该”。完成的定义是Scrum团队需要自己解决的问题。如果团队认为自动化测试很重要,那么他们会将其包括在定义中。但是,过程本身并没有说必须,甚至没有。这完全取决于团队,没有正确,错误或首选的答案。
aroth

@aroth我同意您的看法,但是在几乎所有情况下,如果您要构建更大的软件产品,都希望向国防部添加测试。因此,我认为最好告诉人们您应该这样做,至少要认真考虑一下。作为测试人员,我相信最后由一个单独的团队进行测试是Wagile的第一步。但是,是的,在某些情况下甚至可能甚至不需要测试。
Niels van Reijmersdal,

2

关键是,除非为该故事编写了自动化测试,否则不要将其标记为完整。

因此,当您正在为上一个冲刺中完成的任务编写测试时,似乎1已经消失了。如果测试失败怎么办?


因此,如果在一个新冲刺的第一个星期中没有该冲刺的用户故事处于可以进行回归测试的状态,那么您建议OP应该回家而不采取任何措施?对我来说听起来不太高效;-)
布朗

测试人员应该在第一周就质疑规范“嗯,作为用户,我希望网页上有背景音乐。”发现不完整故事中的错误,通常会造成麻烦。开发人员可以说直到编写测试计划后才能开始
Ewan

@DocBrown:在新冲刺的第一个星期中,测试人员要做很多工作。他们需要通过与产品所有者和开发人员合作来了解开发人员正在构建什么。他们需要与开发人员合作,以确保代码可测试。他们可以开始制定自动化测试计划。他们甚至可以开始编写一些测试。如果您有一个适当的测试框架,可以以较高的抽象水平编写测试,则可以在代码准备就绪之前编写它们。
布莱恩·奥克利

1

理想情况下,您应该在编写代码的同一冲刺中编写自动化测试。在编写自动化测试之前,不应将代码视为“完成”,并且必须在冲刺结束时将代码置于“完成”状态。

您应该在冲刺的第一天开始该过程,方法是与开发人员一起了解代码,并帮助他们理解您作为测试人员的需求。例如,如果您要构建网页,则可以帮助他们理解为与之交互的每个页面元素添加唯一标识符的需求。

请记住,在Scrum中,您的工作不是编写测试。您的工作是与团队合作完成冲刺目标。这意味着沟通和协作,这应该在冲刺的早期就进行。您可以在准备好测试代码之前就开始着手进行测试设计和测试计划。


0

如果要自动测试,则最好先创建测试。这将帮助您定义期望的行为,并激发您像客户端那样思考,最终应使您的软件更易用。实施该功能时,您将立即从测试中受益。


1
这不适用于Selenium等UI测试工具。您需要一个工作稳定的 UI才能创建测试。
布朗

@DocBrown:我认为这不一定是正确的。如果您为我提供了一个新网页的规范,则可以在编写页面之前开始(也许完成!)编写自动测试。您只需要与开发人员合作,以便双方就页面结构是什么,元素ID是什么等达成共识。
布莱恩·奥克利

0

您可以执行任一操作,但是通常您希望将回归测试与自动化测试作为目标。那意味着我将做手工,直到您确定它足够牢固以成为回归测试为止。对于某些功能,这可能处于冲刺中,而对于其他功能,这可能处于冲刺中。


0

正如另一个答案中所述,测试发生时应作为完成定义的一部分。但是,我确实不同意其中的一些答案,因此我想扩展自己所遇到的经验。

在真正的敏捷环境中,每个人都能做所有事情。不会有人100%致力于测试,您也会开发技能来帮助完成一些基本的UI工作或其他工作。但是,我们很少生活在理想的世界中。

我建议做一些混合方法。对于您的“完成的定义”,我想说手动测试应该是工作被编码在其中的Sprint的一部分。您知道它可以工作,并且在Sprint结束之前可以立即报告(可能已修复)任何错误,因此您可以计划下一个一。通过专注于手动测试,您将熟悉代码应该执行的操作。在下一个Sprint的开始阶段,您可能不需要做很多事情,则可以设置自动化测试,该测试可以作为构建过程的一部分运行,以防止回归错误。


我从未见过在第一天就无法完成当前冲刺目标的冲刺。编写自动化测试需要协作和计划,并且应该在冲刺第一天的第一个小时开始。
Bryan Oakley
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.