OpenTest使测试进入睡眠状态

时间:2018-09-30 09:51:36

标签: automation automated-tests opentest

在某些复杂的测试中,有必要将测试执行推迟一段时间。可能是我们需要等待数小时或数天。.如果不阻塞Actor的资源,那么有机会在服务器级别上暂停执行,将是一个很好的选择。 这是计划的,还是已经可以通过某种方式实现?

1 个答案:

答案 0 :(得分:1)

一旦测试会话开始,将获取(保留)执行会话中所有测试所需的所有测试参与者。仅在会话完成(成功与否)时才释放actor,以便其他测试会话可以重用它们。特定的测试参与者可以在测试中调用$sleep JavaScript API一段时间后“延迟”,您可能已经知道。但是,对于暂停OpenTest服务器的工作方式,我无法提出合理的逻辑。我了解您希望能够重用那些受阻的测试参与者,但我认为这不是一个好主意,因为当他们暂停时,他们可能(并且很可能)为正在运行的测试存储一些状态。更好的方法是在CI服务器中具有某种逻辑(或启动测试会话的任何过程),并进行任何验证以查看是否有必要的资源,然后再开始会话。如果您描述了一个特定的用例,我可以尝试提供更多帮助。

编辑:解决您所描述的用例的正确方法是找到一种方法,该方法确定正在执行订单处理以按需触发执行的上游系统,而不必等待一天的时间来执行测试(也许要求开发人员实现一个可以调用的简单API)。如果这不是一个选择,并且您绝对必须等待,那么解决此问题的正确方法是有足够的测试参与者来处理您要并行执行的测试数量。测试参与者消耗大约150到200MB的内存,因此这将是唯一限制可以在一台计算机上同时运行的参与者数量的事情。将来,OpenTest将能够在同一过程中剥离多个参与者,因此这将不再是问题。

一旦测试参与者开始执行测试,就不安全地进行其他任何工作,因为测试通常必须存储一些状态(例如,您创建一个变量来存储所订购订单的订单号)刚刚放置)。如果同一个参与者同时执行两个测试,则这些测试可能会覆盖彼此的状态,并且您会遇到很难解决的问题。