让我就这个问题提供一些背景资料。
我们有一个具有MQ集成的java应用程序和一个也用java编写的integration。
测试包通过运行测试用例(方法)并根据场景更改参数来运行所有场景(正的和负的)。它执行断言的方式是将消息放到应用程序的输入队列中,并期望应用程序的输出队列中有消息。将检查消息体,因为它根据测试场景的不同而不同。
主应用程序中只有一个输入队列和一个输出队列。测试用例(方法)的数量约为300,由于运行了所有已知的场景,实际执行的测试用例数量约为2500。因此,测试包需要大约6个小时才能完全执行。
由于只有一个队列用于测试包断言输出消息,所以在运行下一个测试用例之前,每次都必须清除队列。否则,可能会导致输出消息的混合。例如,方法call#2可能会消耗方法call#1的输出消息,因此我们也不能并行地运行测试用例。
我想改进这一过程,并将非常感谢任何建议,以优化测试包。现在,我正在考虑按照业务函数分离主应用程序的输入和输出队列,从而并行地断言多个队列。但是这种方法意味着我必须改变原来的体系结构,以便我的测试用例运行得更快,这并不容易,因为已经有客户端使用这个应用程序并使用这两个队列进行交互,而且他们也必须更改它们的应用程序。
为这篇长篇文章道歉,但我很想听听这么多有创意的人在这个社区里的意见。
谢谢!
发布于 2018-11-09 11:12:41
所以我们想出的解决办法就是这个。我们将对测试包进行文档化,以便有多个容器运行多个服务器和多个消息队列。我们将利用maven配置文件部署相同的war,但在不同的容器中运行不同的测试包。测试包将被模块化,这样每个模块中的测试就不会在队列/消息方面相互重叠。感谢大家的时间和宝贵的意见。
发布于 2018-11-08 07:35:21
存在消息队列上的筛选器。您可以将它们抛到同一个消息队列中,然后根据特定的条件为消息分配侦听器。这个条件可以是任意的,可以是线程id到任意消息名。
最终的结果是,不具有特定条件的消息不会被丢弃,它们只是等待处理程序处理而没有该条件,有效地允许您对与特定消息相关的特定方面执行检查,而不删除希望检查的消息以外的消息。
发布于 2018-06-10 22:41:47
曾经让我抓狂的事情之一是eclipse会在我没有预料到的情况下并行运行我的测试。这让我很恼火,因为我是一个老学校的测试人员,仍然认为写到控制台上是有用的。两个测试会写到控制台,有时一切都很好。有时,一个人的文字会被混入另一半。
然后我意识到解决方案是多么简单。只需让每个测试构建自己的字符串,并一次输出一个字符串。一旦我这样做了,我就可以让测试并行运行。
如果您没有顺序依赖项、共享内存或每个作业的多个输出来保持顺序,我真的不明白为什么不能让它们并行运行。
https://softwareengineering.stackexchange.com/questions/372379
复制相似问题