由于敏捷是迭代的,而且许多最后测试的工具是记录和回放式的,因此不能真正应用在敏捷环境中,这带来了一些问题。
- 测试的目标正在迅速变化——使得自动化变得非常困难
- 当目标代码确定时,sprint/iteration 已经结束,您将开始执行新任务(至少在 PM/BA 的脑海中)
- 资源管理很困难 - '如果项目 A '完成'(交付)你为什么现在要为它做自动化' 可能会被问到。
在敏捷环境中可以应用什么策略来缓解这些移动目标/项目资源错位的痛苦?
由于敏捷是迭代的,而且许多最后测试的工具是记录和回放式的,因此不能真正应用在敏捷环境中,这带来了一些问题。
在敏捷环境中可以应用什么策略来缓解这些移动目标/项目资源错位的痛苦?
一个答案——正如菲尔暗示的那样,你把你能找到的每一个录音和回放工具都拿走,然后在绝望的火坑里烧掉它们。
我可能对此投了反对票,所以我会努力争取回来。
优秀的敏捷团队不断测试——不仅仅是在最后。如果您将测试设计作为功能设计的一部分(并考虑在设计时如何测试功能),您将不必编写 GUI 自动化 - 您可以在控制器级别或通过其他抽象实现自动化。
直接自动化 GUI 很少是一个好主意——即使在“最后测试”的团队中也是如此。而是专注于功能的“质量”,并作为一个团队来实施所有必要的任务以“完成”。
这实际上取决于您尝试通过自动化测试实现的目标。答案应该推动你的方法。您是否尝试:
一些想法:
一般来说,如果可能的话,我会尽量避免使用记录和回放风格的工具(我假设你在这里谈论的是 Selenium IDE 之类的东西。)根据我的经验,它们往往既慢又脆弱。我从来没有从这些类型的工具中获得太多的投资回报。
假设“敏捷是迭代的,许多最后测试的工具是记录和回放风格的”是不正确的
这听起来很像你有典型的“敏捷但......”实现。
有一些方法可以避免基于 GUI 的自动化带来的开销和问题(可以在没有记录/播放的情况下完成 - 我现在使用 Microsoft 的 CodedUI 所做的事情在他们设计该工具时可能从未考虑过) .
这里有一些想法:
对于您在最后实现自动化并且没有时间处理它的问题,我建议使用“技术债务”一词。我认为代码完成后的自动化部分是由于 GUI 的变化,部分是因为自动化正在进入回归套件。如果对该自动化有任何吝啬,您会发现客户报告的错误聚集在没有良好自动化覆盖的应用程序区域中。
我在这方面的经历可能很典型——一个大型、复杂的企业对企业应用程序,其中的开发速度和长期人手不足的测试团队在自动回归中留下了巨大的漏洞。大多数回归必须是基于 GUI 的,并且在面向对象的编码成为任何人眼中的曙光之前,应用程序的大部分内容都是祖父辈的。它们没有经过单元测试,因为它们不可单元测试。大多数客户错误报告都在没有针对它们运行自动回归的领域。其余的都是边缘情况——有时在边缘情况下不值得自动化它们(“如果操作系统在此操作期间崩溃,则数据已损坏,
=======