【问题标题】:Test automation approach测试自动化方法
【发布时间】:2018-01-24 01:34:14
【问题描述】:
我正在为以下场景寻找一种测试自动化方法。
Scenario:
Step 1: Login to my application and schedule an import job
Step 2: Ensure the job is successfully submitted
Step 3: Now above job takes 10-15 minutes to complete
我能够自动执行上述所有步骤,但我给出了明确的等待 10 分钟(编写了一个 For 循环,它每 10 秒检查一次作业的状态并迭代 60 次)。
我的观点:
我不想等待 10 分钟,因为我必须安排 50-100 个这样的工作。
对于如何等待或如何通过自动化验证此类场景是否有更好的方法?
【问题讨论】:
标签:
automation
automated-tests
ui-automation
qa
【解决方案1】:
- 如果您对应用开发有控制权,请让应用发送一个事件,让自动化可以侦听并在应用完成工作后继续进行验证。
- 如果您无法控制应用程序开发,您的方法似乎是唯一的方法。但为了缩短时间,您可以让自动化并行运行(多任务),这样您就不必等待漫长的工作完成来开始其余的工作。
【解决方案2】:
首先,我要求您更清楚地说明job takes 10-15 minutes to complete 的含义。那是计算时间吗?或者是否有一个池作业每 x 秒更新一次状态并且延迟是因为这个?您的问题的解决方案取决于此。
如果有一个您可以访问的轮询作业队列并且可以验证那里存在的作业,那么就这样做。
否则
如果延迟仅仅是因为计算时间,那么我建议调整您的方法,将这些分成两个测试。 第一个测试将只登录并提交作业,并将提交的作业 ID 存储在某处(假设是一个文本文件)。而 second 测试将在测试 1 的 15-20 分钟后运行,并且会简单地验证是否创建了所有作业。
第二种方法适用于由于某些限制您无论如何都无法避免延迟 10-15 分钟的情况。因此,如果您无法避免这种延迟,最好的方法是将测试分成两个测试以减少相互依赖。
【解决方案3】:
在我看来,已经建议的采用并行测试执行的解决方案是最合适的方法。但是,为了让您的生活更轻松,您可以使用一些优化。黑盒测试
对于内部处理(以及它所花费的时间),您几乎无能为力。但是,您实际上可以使用 Memoization 增强并行方法,因为它是一种
缓存先前计算结果并在再次需要相同计算时返回缓存结果的技术
因此,您可以分析工作流程,规划您的 100 个测试套件并仅并行运行您的测试的子集,这些测试无法共享已计算的结果或已完成的工作(例如通过网络下载文件)。其他人应该很快,因为他们会重用这个输出。这里棘手的部分是那些可重用输出片段的组成以及需要它们的测试。
注意事项:
链接测试并在它们之间共享状态不被视为最佳实践之一。但总有可以接受的例外。所以要小心你可以重用的东西,以便将它提供给你的子集的下一个特定测试。