研发效能 自动化案例很多,执行时间很长,该怎么优化?

露娜要拿蓝啊 · 2024年05月14日 · 最后由 日积跬步 回复于 2024年05月16日 · 4317 次阅读

先说一下背景,
目前做的项目,现有自动化案例数约 2w 条。
然后每天凌晨会执行自动化构建,跑这个全量自动化案例,到最后测试报告出来,中间大概需要 10 个小时,也就是平均一个案例执行时间约 2s 左右。
有的时候由于环境等各类问题,当天的日构建会执行失败。如果遇到需要发版,想要快速得到一个自动化结果就比较困难

对于这个问题,目前想到的几种方法

  1. 对自动化案例进行全面的梳理调整,优化耗时长的案例。
  2. 准备多套测试环境,把任务进行拆分到多套环境执行
  3. 单个环境,并行执行。

对于这几个方法的分析和想法:
第一个方法的话,迟早要做,需要大约团队的人投入约一周的时间来进行分析和调整,可能可以提升大约 30%。不过目前暂时没有这个时间和人力投入。
第二个方法,相对来说比较简单粗暴。但是案例中涉及到的系统较多,如果进行拆分执行,可能至少需要两套完整的测试环境。目前也不太有这个条件。

我个人最倾向于第三个方法,只需要单个环境就能做。但是并行执行,目前看最难得点就是在并行上。举个例子, A 案例中前置设置系统参数 B=0,而 B 案例中,又设置了系统参数 B=2,那这个对于测试结果来说是有影响的。 如果需要完整的分析测试案例之间的相互影响面来说,这个的工作量可能会比第一个方法又要更加耗时,并且工作难度也更加大了。

之前也考虑过一种方法,通过工具,执行案例后,分析每条案例涉及的数据表,然后将案例和这个涉及表进行绑定,以此来判断两条案例之间的相互影响关系。这个方法也存在一个问题,当案例发生变更时,他的影响范围可能也发生了改变。即之前涉及的表为 A、B、C,现在变成了 A、B、D,似乎又需要再分析一遍这个案例的关联关系。

以上是我的一些想法,由于接触的公司较少,网上也没有找到一些现有的例子,所以特此请教各位大佬,对于日益增多的自动化案例,如何做到高效快速执行?
望各位不吝赐教

共收到 16 条回复 时间 点赞

暂不考虑 2w 条的情况下,假设只有 100 条,执行需要 200 秒,如何在 10 秒内快速知道测试报告?

很明显,执行是需要时间的,不管条数多少,都有这个问题。

参考方案:

  1. 划分优先级,将核心流程的用例抽出来,优先执行
  2. 开多线程,或者是开多个自动化来跑,但是一定要解耦,不同用例关联性不能太强,比如,开一个自动化专门跑 A 系统,一个专门跑 B 系统,这样可以将 2w 多条,分下来,其实,像你说的 10 个小时,假设分到两个自动化去跑,只需要 5 个小时。
  3. 统计出执行耗时比较长的用例,进行优化,因为自动化你操作的步骤可能会跟其他的用例重叠,优化重叠部分的操作步骤,缩短执行步骤,降低耗时。
  4. 将部分场景的自动化,不涉及页面操作的,用接口自动化代替。

1.对自动化案例进行全面的梳理调整。不仅仅是优化耗时长的,还要给这些用例做标记,哪些会相互影响,哪些可以并行跑。
2.给自动化执行分级,按 1 中标记的 P0,P1,P2,分层级的执行用例,这样你的报告也是按你划分的逻辑分级展示,相比而言可以快速得到某些最需要保障功能的反馈。
3.能并行执行的,就并行执行了。

正常这些在做自动化测试的时候应该想好,按理不该都 2W 多个用例才去解决。。。

两秒虽然有点慢但是还好啊,一看 2w 条,10 小时,平均每条要五六秒啊

Smobee 回复

目前看,对案例进行分层执行是比较简单快速的办法。但是同时也会有个疑问,假设我每次时间比较有限,执行的大多都是 P0、P1 的案例,但是某次可能 P3 级的案例发现了问题。那是否最终还是需要全量执行呢?

分优先级,并不是代表,P3 不执行哦。
这个看实际情况的,像我们的话,小版本更新,我们只需要跑核心流程就可以了,如果是大版本的,那么就需要全部跑一次,你像有的功能,这次版本不会影响到的,这种就可以不用执行,节省时间,如果非要全量运行,这种可以放到第二天再看报告。

感觉最好的就是用例之间的数据隔离,解耦,然后并发执行

分级,分布

2W 个自动化都完成了才想到执行时间太长,真的不是钓鱼吗?

就没有人吐槽有 2W 条自动化用例吗,居然一个执行才 4、5 秒...😕

黑鱼 回复

哈哈,觉得已经很快了。

感觉优先级一定要分,解偶也必须要做,并发执行更要做了。

2W,请问是 ui 自动化?

清白之年 回复

是后面才转到现在的项目的,来的时候存量案例就有约 1w 多的案例。真不是钓鱼…

黑鱼 回复

有一些大前置,会执行很多 SQL。包括每个案例里面的前置也会有很多数据准备,缓存同步等。这些方面共同影响了整体的时间和执行单个案例的时间

一日之纪 回复

都是接口自动化

2w 用例?这要是维护起来 这工作量 不敢想象 但凡页面有变更 这不要改死人 哈哈

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册