当前位置:  开发笔记 > 运维 > 正文

如何加速执行Android UI测试作为CI系统的一部分

如何解决《如何加速执行AndroidUI测试作为CI系统的一部分》经验,为你挑选了1个好方法。

我希望在每次提交/合并到主develop分支后运行所有单元和仪器测试(Espresso).单元测试足够快,允许这样做,但UI测试不是 - 150个完全模拟的UI测试需要大约1小时才能在单个设备上运行.Shazam的FORK库在所有连接设备上对这150个测试进行分片时表现非常出色.目前的解决方案是运行Jenkins的本地计算机.将4个设备连接到它可以将运行UI测试的时间缩短到约15分钟.这不是理想的,但可以忍受.

理想情况下,我想找到一个基于云的CI系统,允许我使用运行UI测试Fork,以便本地Jenkins可以被抛弃而不是内部维护.

我尝试过AWS Device Farm和Firebase测试实验室,但他们都使用自己的系统来运行测试.似乎他们没有给出在多个设备上分割单个测试套件的选项.它们似乎是同时在不同设备上运行整个测试套件的好工具,但这不是我想要的CI解决方案(将测试套件同时拆分到多个设备).

尝试了BuddyBuild,但在内部他们使用Firebase测试实验室,所以这对我的情况也不起作用.

我主要考虑的是这些方向的解决方案:

找到一种Fork在基于云的解决方案上运行的方法

找到另一种方法来跨多个设备分割单个测试套件

欢迎任何建议!你们是如何解决这个问题的?



1> Kevin Brotck..:

恭喜!太多的自动化是一个很大的问题.听起来你已经在加快执行时间方面取得了很多进展.我说15分钟是一个非常合理的数字,但是这里有一些替代方法可以让这个数字更低:

    创建一个更小,更快的测试用例,每个提交运行最高优先级测试用例,而长时间运行的完整测试套件针对最新的合并提交连续运行.这是整个行业中非常普遍的模式.您可以使用Android的内置@ Small,@ Medium和@Large注释或包名来划分测试.

    优化您的测试用例,以便一次测试多个功能.基本上,不是测试A1,A2,B1,B2等每个组合,而是仅测试A1,B2.有关更详细的说明,请参阅成对测试维基百科页面.

    如果您的应用可以使用,请尝试使用模拟器.在过去几年中,性能有了很大提高.使用英特尔硬件加速执行管理器(HAXM)驱动程序,我发现测试比大多数物理设备运行得更快,更可靠.这也可以使您的目标更容易在云中运行.

    检查每个单独测试运行所需的时间与其优先级相对应.低优先级长时间运行测试可以移动到不太频繁运行的测试.

    观察测试运行以识别测试的睡眠或其他缓慢运行区域以改善.

    寻找从未失败的测试.这些也可能是转向不常运行测试的另一个候选者.

    如果您正在寻找其他方法来进行分片测试,您可以通过使用adb shell am instrument选项在针对您的测试子集的设备之间启动并行脚本来自行推出.虽然,这会创建许多单独的测试报告,您需要自己平均分配测试.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有