与Google Firebase测试实验室共享以加快自动化测试



我正在尝试使用Flank和Firebase测试实验室来分割测试,以加快自动化测试的速度。然而,尽管使用了参数max test shards ,我还是无法分割我的测试

参考:https://github.com/TestArmada/flank

代码:使用侧翼运行test_runner/flank.yml以验证Android执行是否正常。

cd test_runner/
./gradlew clean build fatJar
java -jar ./build/libs/flank-*.jar firebase test android run

没有发生分片,即使在指定了最大测试分片之后,测试也需要同样的时间来执行

flank.yml:

#--GcloudYml--

##将存储原始测试结果的谷歌云存储桶的名称#结果桶:tmp_flate

##结果桶中存储原始测试结果的唯一Google云存储对象的名称##(默认值:带有随机后缀的时间戳)。#结果目录:tmp

##在测试期间启用视频录制。默认情况下已启用,请使用--no record video禁用。#录制视频:真正的

##此测试执行在取消之前可以运行的最长时间(默认值:15m)。##它不包括准备和清理目标设备所需的任何时间。##物理设备上的最大可能测试时间为30米,虚拟设备上的测试时间为60米。##超时单位可以是h、m或s。如果没有给出单位,则假定为秒。#超时:30米

##异步调用测试而不等待测试结果。#async:错误

##测试结果的历史记录名称(任意字符串标签;默认值:APK清单中的应用程序标签)。##所有使用相同历史记录名称的测试的结果都将在Firebase控制台中按时间顺序排列的测试历史记录列表中分组。#结果历史名称:android历史

##实验!##如果一个或多个测试用例因任何原因失败,则应重新尝试TestExecution的次数。##允许的最大重播次数为10次。默认值为0,这意味着没有重播。#片状测试尝试次数:0

#--雄激素GcloudYml--

##应用程序二进制文件的路径。##该路径可以在本地文件系统中,也可以使用gs://表示法在Google云存储中。##Android应用程序捆绑包被指定为.aab,所有其他文件都被假定为APK。app:/Users/akanshaverma/test_flank/flade/test_runner/espresso_long.apk

##包含检测测试的二进制文件的路径。##给定的路径可以在本地文件系统中,也可以在Google云存储中使用以gs://开头的URL。测试:/Users/akanshaverma/test_flank/flade/test_runner/espresso_long_test.apk

##在开始测试之前,使用预先配置的谷歌帐户自动登录测试设备。##默认情况下启用,使用--no自动谷歌登录禁用。自动谷歌登录:真正的

##每个测试是否使用Android test Orchestrator在其自己的Instrumentation实例中运行##(默认设置:使用Orchestrator)。使用禁用--不使用编排器。##请参阅https://developer.android.com/training/testing/junit-runner.html#using-android测试协调器#使用编排器:真正的

##环境变量及其所需值的逗号分隔键=值映射。此标志是可重复的。##环境变量作为额外选项镜像到am instrument-e KEY1 VALUE1…命令和##传递给您的测试跑步者(通常是AndroidJUnitRunner)#环境变量:#覆盖范围:真#coverageFilePath:/sdcard/#clearPackageData:真正的

##测试后将从设备存储器复制到指定结果存储桶的路径列表##已完成。这些路径必须是/sdcard或/data/local/tmp下的绝对路径#要提取的目录:#-/sdcard/

##监控和记录性能指标:CPU、内存、网络使用率和FPS(仅限游戏循环)。##默认情况下启用,使用--无性能指标可禁用。#性能指标:真正的

##检测测试运行程序的完全限定Java类名##(默认值:从APK清单中提取的姓氏)。#测试运行程序类:com.foo.TestRunner

##要应用的一个或多个测试目标筛选器的列表(默认值:运行所有测试目标)。##每个目标筛选器都必须使用所需的包名称、类名或测试注释进行完全限定。##am仪器支持的测试过滤器包括:##class,notClass,size,annotation,notAnnotation,package,notPackage,testFile,notTestFile##请参阅https://developer.android.com/reference/android/support/test/runner/AndroidJUnitRunner了解更多信息。#测试目标:#-class com.example.app.ExampleUiTest#testPasses

##DIMENSION=VALUE对的列表,指定要测试的目标设备。##可以重复此标志以指定多个设备。##四个设备维度是:型号、版本、区域设置和方向。#设备:#-型号:NexusLowRes#版本:28#区域设置:en#方向:纵向#-型号:NexusLowRes#版本:27设备:-型号:hero2lite版本:23区域设置:en方向:纵向

侧面:#--法兰Yml--

##test shards-将测试套件拆分为的组数量##设置为-1可在每次测试中使用一个碎片。默认值:1最大测试碎片:10

##shard时间-一个shard内的测试应该花费的时间##当设置为>0时,碎片计数是根据时间动态设置的,最高可达最大测试碎片定义的maxmimum限制##建议使用2分钟(120)。##默认值:-1(无限制)#碎片时间:-1碎片时间:2

##重复测试—运行测试的次数。##1运行一次测试。10次运行所有测试10x#重复测试:1个

##Google云存储路径,用于存储上次运行的JUnit XML结果。#智能侧翼gcs路径:gs://tmp_flated/flade/test_app_android.xml

##禁用智能侧翼JUnit XML上传。有助于防止定时数据被更新。##默认值:false#智能侧翼禁用上传:错误

##禁用分片。对参数化测试很有用。#禁用分片:false禁用分片:错误

##始终运行-这些测试插入到每个碎片的开头##如果您需要在运行其他测试之前授予权限或登录,则非常有用#测试目标始终运行:#-class com.example.app.ExampleUiTest#testPasses

##regex与bucket路径匹配,例如:2019-01-09_00:13:06.106000_YCKl/shard_0/NexusLowRes-28-en-portrait/bugsreport.txt#要下载的文件:#-.*.mp4$

##计费使谷歌云平台项目名称可以使用#项目:delta-essence-114723

##用于存储测试结果的本地文件夹。每次运行之前都会删除文件夹,以确保只保存新运行中的工件。#局部结果目录:侧面

##在运行中包括额外的应用程序/测试apk对。如果省略了应用程序,则该对将使用顶级应用程序。#额外的应用程序测试apk:#-应用程序:/test_app/apks/app-debug.apk#测试:/test_app/apks/ap-debug-androidTest.apk

#-测试:/test_app/apks/ap-debug-androidTest.apk

FYI,Firebase现在通过gcloud beta firebase test android run,例如--num-uniform-shards工作得很好。

最新更新