如何测试两个用户之间的异步网站活动

时间:2014-12-19 15:59:30

标签: testing jasmine bdd

我们正在尝试使用Jasmine编写BDD测试,我们需要处理的常见用例是:

User A: Does some action
User B: Gets notified after xx ms that the action has happened asynchronously (either via WebPush or polling)
User B: Responds to user A's action
User A: Receives B's response

我正努力为这种情况构建自动化测试。我们目前的选择工具是Jasmine,但我们在这一点上非常灵活。如何同时处理多个登录,特别是在响应之间有一些延迟的情况下?

1 个答案:

答案 0 :(得分:1)

执行此操作的简单方法是简单地轮询每个操作,并在检测到操作后移动方案,如果测试时间过长则超时测试失败。

在任何允许多线程执行的语言中,您都可以创建一个"服务员"等待事件的模式,然后在检测到该事件后将执行传递回测试。我有a C# example herea Java example here

Javascript不允许执行多线程,但是it can be faked

但是,我认为您最大的问题是,通过两次登录,您实际上有两个标签或窗口或标签或应用,是的,这将很难管理。您可以使用与Windows交互的内容而不是浏览器(我的C#示例来自执行此操作的自动化工具),但这意味着为自动化方案采用完全不同的技术堆栈。

你可以通过将你的情景分成几部分来解决它:

  

鉴于用户A和B正在运行应用程序
  当用户A执行某些操作时   然后应通知用户B.

对于B,请使用虚假版本的应用;从服务开始,一切都是如此。然后,您可以检查B是否通过服务的API获得通知。您甚至可以将B接收的内容写入文本文件或类似内容。它不一定是真正的B。

  

鉴于用户A和B正在运行应用程序
  当用户B收到来自用户A
的通知时   然后用户B应该回复。

     

鉴于用户A和B正在运行应用程序
  当用户B响应时   然后应该通知用户A.

对于这些,我们现在将A的应用程序删除,通过API在第一个中通知为A,并在第二个中验证来自B的通知。

  

鉴于用户A正在等待用户B的响应
  当A收到用户B的回复时   然后A应该(当他们收到回复时做他们通常做的事情)。

我们又回来再次剔除B,将B的回应注入API,让旅程全面展开。

在每种情况下,我们仍然会验证与服务的互动是否有效;我们并没有同时做到这一切。这仍应提供足够的信心,确保一切顺利。它只需要几个场景就可以完成。

请与业务部门讨论此事,并在描述他们的工作时使用他们使用的语言,而不是像我在这里的A和B通知和回复。