我正在为以下场景寻找测试自动化方法。
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个这样的工作。
对于如何通过自动化等待或如何验证此类情景,是否有更好的方法?
答案 0 :(得分:1)
答案 1 :(得分:1)
首先,我要求您进一步说明job takes 10-15 minutes to complete
的含义。那是计算时间吗?还是有一个池工作每x秒更新一次状态,而延迟是因为这个原因?解决问题的方法取决于此。
如果有一个您可以访问的轮询作业队列,并且可以验证在那里存在的作业,则执行此操作。
否则
如果延迟仅仅是由于计算时间所致,那么我建议您调整一下方法,将这些分为两个测试。 第一个测试,该测试将仅登录并提交作业,并将提交的作业ID存储在某个地方(比如说一个文本文件)。而第二测试将在测试1的15-20分钟后运行,并仅验证是否已创建所有作业。
第二种方法适用于由于某些限制而无法避免延迟10-15分钟的情况。因此,如果您不能避免这种延迟,最好的方法是将测试分为两个测试,以减少彼此之间的依赖性。
答案 2 :(得分:0)
在我看来,已建议采用并行测试执行的解决方案是最合适的方法。但是,为了让您的生活更轻松,您可以使用一些优化。用于黑盒测试
关于内部处理(以及花费的时间),你几乎无能为力。但是,您实际上可以通过Memoization增强并行方法,因为它是
用于缓存先前计算结果的技术,并在再次需要相同计算时返回缓存结果
因此,您可以分析工作流程,计划您的100个测试套件并且仅并行运行您的测试子集,不能共享已计算结果或完成工作的那些(例如通过网络下载文件)。其他人应该很快,因为他们会重复使用这个输出。这里棘手的部分是那些可重复使用的输出部件的组成以及需要它们的测试。
提醒:
链接测试并在它们之间共享状态不被视为最佳实践之一。但总有可接受的例外情况。因此,请注意您可以重复使用的内容,以便将其提供给子集的下一个特定测试。