【问题标题】:OpenTest put test into sleepOpenTest 使测试进入睡眠状态
【发布时间】:2018-12-22 16:48:39
【问题描述】:

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

【问题讨论】:

    标签: automation automated-tests opentest


    【解决方案1】:

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

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

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

    【讨论】:

    • 我会用一些例子
    • 我将通过一个示例清楚地说明何时可以使用此功能。 TestName:下单,隔夜/每日安排处理。假设我们有 2 个片段,有两个演员 WEB&API。第一个参与者下订单,第二个是使用 api 检查状态,间隔为 10 分钟(每 10 分钟检查一次状态),最长执行时间为 25 小时。我想: 1 在第 1 段完成后发布网络演员(因此可以在其他测试中使用); 2 每 10 分钟使用一次 API 参与者(如果可用)检查状态,直到达到分段超时
    • 现在在这样的场景中,两个演员大部分时间都坐着什么也不做
    • 我希望有能力在细分级别上获取演员。如果有更多的片段在进行中,那么可以使用参与者可用的优先级(先进先出、场景或其他)
    • 与此相关的还有另一个限制。如果我错了,请纠正我,但在我使用 OpenTest 的 POC 期间,我无法在一个测试会话中使用超过一个类型的演员。来自一个测试会话的测试,即使有可用的演员,也不会并行执行。
    猜你喜欢
    • 2017-06-23
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 2021-10-01
    • 2016-10-25
    • 1970-01-01
    相关资源
    最近更新 更多