首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >改进基于java的测试框架以减少执行时间

改进基于java的测试框架以减少执行时间
EN

Software Engineering用户
提问于 2018-06-10 18:01:07
回答 4查看 283关注 0票数 0

让我就这个问题提供一些背景资料。

我们有一个具有MQ集成的java应用程序和一个也用java编写的integration。

测试包通过运行测试用例(方法)并根据场景更改参数来运行所有场景(正的和负的)。它执行断言的方式是将消息放到应用程序的输入队列中,并期望应用程序的输出队列中有消息。将检查消息体,因为它根据测试场景的不同而不同。

主应用程序中只有一个输入队列和一个输出队列。测试用例(方法)的数量约为300,由于运行了所有已知的场景,实际执行的测试用例数量约为2500。因此,测试包需要大约6个小时才能完全执行。

由于只有一个队列用于测试包断言输出消息,所以在运行下一个测试用例之前,每次都必须清除队列。否则,可能会导致输出消息的混合。例如,方法call#2可能会消耗方法call#1的输出消息,因此我们也不能并行地运行测试用例。

我想改进这一过程,并将非常感谢任何建议,以优化测试包。现在,我正在考虑按照业务函数分离主应用程序的输入和输出队列,从而并行地断言多个队列。但是这种方法意味着我必须改变原来的体系结构,以便我的测试用例运行得更快,这并不容易,因为已经有客户端使用这个应用程序并使用这两个队列进行交互,而且他们也必须更改它们的应用程序。

为这篇长篇文章道歉,但我很想听听这么多有创意的人在这个社区里的意见。

谢谢!

EN

回答 4

Software Engineering用户

回答已采纳

发布于 2018-11-09 11:12:41

所以我们想出的解决办法就是这个。我们将对测试包进行文档化,以便有多个容器运行多个服务器和多个消息队列。我们将利用maven配置文件部署相同的war,但在不同的容器中运行不同的测试包。测试包将被模块化,这样每个模块中的测试就不会在队列/消息方面相互重叠。感谢大家的时间和宝贵的意见。

票数 0
EN

Software Engineering用户

发布于 2018-11-08 07:35:21

存在消息队列上的筛选器。您可以将它们抛到同一个消息队列中,然后根据特定的条件为消息分配侦听器。这个条件可以是任意的,可以是线程id到任意消息名。

最终的结果是,不具有特定条件的消息不会被丢弃,它们只是等待处理程序处理而没有该条件,有效地允许您对与特定消息相关的特定方面执行检查,而不删除希望检查的消息以外的消息。

票数 1
EN

Software Engineering用户

发布于 2018-06-10 22:41:47

曾经让我抓狂的事情之一是eclipse会在我没有预料到的情况下并行运行我的测试。这让我很恼火,因为我是一个老学校的测试人员,仍然认为写到控制台上是有用的。两个测试会写到控制台,有时一切都很好。有时,一个人的文字会被混入另一半。

然后我意识到解决方案是多么简单。只需让每个测试构建自己的字符串,并一次输出一个字符串。一旦我这样做了,我就可以让测试并行运行。

如果您没有顺序依赖项、共享内存或每个作业的多个输出来保持顺序,我真的不明白为什么不能让它们并行运行。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/372379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档