我的一些背景知识-在敏捷环境中,我使用SCRUM(1-2周冲刺)是手动测试人员将近2年。因此,我想在使用Selenium WebDriver(带有Java)的工作中引入自动化测试。
我的问题是在什么时候应该手动测试功能以及什么时候应该转换它们以进行自动化测试?
我一直在阅读并获得不同的方法,例如:
- 当开始新的Sprint时,将用户故事转换为上一个Sprint的自动化脚本,或者;
- 在相同的Sprint中转换用户故事。
任何建议将不胜感激。先感谢您。
我的一些背景知识-在敏捷环境中,我使用SCRUM(1-2周冲刺)是手动测试人员将近2年。因此,我想在使用Selenium WebDriver(带有Java)的工作中引入自动化测试。
我的问题是在什么时候应该手动测试功能以及什么时候应该转换它们以进行自动化测试?
我一直在阅读并获得不同的方法,例如:
任何建议将不胜感激。先感谢您。
Answers:
测试自动化(以及所有其他测试)应该是完成定义的一部分。这是为了制造可能可运输的产品。如果未经测试,可以发货吗?
测试也应该是整个团队的方法,因此测试自动化不是测试人员的责任。开始考虑在此过程中尽快进行测试。
测试自动化在敏捷中是如此重要,因为:
组织敏捷性受技术敏捷性的约束
换句话说,当您对产品进行更改的速度很慢时,无论您如何构建团队,组织或采用哪种框架都没关系,您对更改的响应就会很慢。
如果将测试推迟到另一次迭代,您将始终处于落后状态。由于难以重构和安全保护产品的外部行为,因此很难更改产品的方向。进行任何重复性的手动测试是使您减速,自动化的关键!
许多测试人员会告诉您,在产品界面稳定之前,您不应该开始进行端到端测试。不要等,而要充分利用PageObjects并确保您的测试可维护,并使开发人员有责任创建和修复它们。
关键是,除非为该故事编写了自动化测试,否则不要将其标记为完整。
因此,当您正在为上一个冲刺中完成的任务编写测试时,似乎1已经消失了。如果测试失败怎么办?
理想情况下,您应该在编写代码的同一冲刺中编写自动化测试。在编写自动化测试之前,不应将代码视为“完成”,并且必须在冲刺结束时将代码置于“完成”状态。
您应该在冲刺的第一天开始该过程,方法是与开发人员一起了解代码,并帮助他们理解您作为测试人员的需求。例如,如果您要构建网页,则可以帮助他们理解为与之交互的每个页面元素添加唯一标识符的需求。
请记住,在Scrum中,您的工作不是编写测试。您的工作是与团队合作完成冲刺目标。这意味着沟通和协作,这应该在冲刺的早期就进行。您可以在准备好测试代码之前就开始着手进行测试设计和测试计划。
正如另一个答案中所述,测试发生时应作为完成定义的一部分。但是,我确实不同意其中的一些答案,因此我想扩展自己所遇到的经验。
在真正的敏捷环境中,每个人都能做所有事情。不会有人100%致力于测试,您也会开发技能来帮助完成一些基本的UI工作或其他工作。但是,我们很少生活在理想的世界中。
我建议做一些混合方法。对于您的“完成的定义”,我想说手动测试应该是工作被编码在其中的Sprint的一部分。您知道它可以工作,并且在Sprint结束之前可以立即报告(可能已修复)任何错误,因此您可以计划下一个一。通过专注于手动测试,您将熟悉代码应该执行的操作。在下一个Sprint的开始阶段,您可能不需要做很多事情,则可以设置自动化测试,该测试可以作为构建过程的一部分运行,以防止回归错误。