我正在为下面的场景寻找一种自动化的测试方法。
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个这样的作业。
关于如何等待或如何通过自动化验证此类场景,有没有更好的方法?
发布于 2017-08-16 13:47:18
发布于 2019-11-22 14:44:54
首先,我要求您更清楚地说明您所说的job takes 10-15 minutes to complete是什么意思。这是计算时间吗?或者,是否存在每x秒更新一次状态的池化作业,延迟就是因为这个原因?您的问题的解决方案取决于此。
如果存在您有权访问的轮询作业队列,并且可以验证其中存在的作业,则执行此操作。
否则
如果延迟仅仅是因为计算时间的原因,那么我建议调整您的方法,将这些拆分为两个测试。第一个测试,它只是登录并提交作业,并将提交的作业ids存储在某个地方(假设是一个文本文件)。而第二个测试将在测试1的15-20分钟后运行,并简单地验证是否创建了所有作业。
第二种方法适用于由于某些限制而无法避免10-15分钟的延迟的情况。因此,如果您无法避免延迟,最好的方法是将测试分成两个测试,以减少彼此之间的依赖性。
发布于 2017-09-15 21:17:23
在我看来,已经建议的采用并行测试执行的解决方案是最合适的方法。然而,为了让你的生活更容易,你可以使用一些优化。用于黑盒测试

对于内部处理(以及它所需的时间),您几乎无能为力。但是,您实际上可以使用Memoization增强并行方法,因为它是一个
一种
技术,可以缓存以前计算的结果,并在再次需要相同计算时返回缓存的结果
因此,您可以分析工作流程,计划您的100个测试套件,并仅并行运行测试的子集,这些测试不能共享已计算的结果或完成的工作(例如,通过网络下载文件)。其他人应该更快,因为他们会重用这个输出。这里棘手的部分是这些可重用输出部分的组成以及需要它们的测试。
注意事项:
链接测试并在它们之间共享状态不被认为是最佳实践之一。但总有一些可以接受的例外。因此,要注意您可以重用的内容,以便将其提供给子集的下一个特定测试。
https://stackoverflow.com/questions/45704558
复制相似问题