在 Device Farm 中创建测试运行 - AWS Device Farm

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Device Farm 中创建测试运行

你可以使用 Device Farm 控制台或 Device Farm API 来创建测试运行。 AWS CLI您也可以使用支持的插件,如适用于 Device Farm 的 Jenkins 或 Gradle 插件。有关插件的更多信息,请参阅 工具和插件。有关运行的信息,请参阅运行

先决条件

您在 Device Farm 中必须有一个项目。按照在 AWS Device Farm 中创建项目中的说明操作,然后返回此页。

创建测试运行(控制台)

  1. 登录 DeviceFarm 控制台,网址为 https://console.aws.amazon.com/devicef arm。

  2. 在导航窗格中,选择移动设备测试,然后选择项目

  3. 如果您已具有项目,可以将您的测试上传到现有项目。否则,选择新建项目,输入项目名称,然后选择创建

  4. 打开您的项目,然后选择创建运行

  5. (可选)在运行设置下的运行名称部分中,输入您的运行名称。如果未提供名称,则默认情况下,Device Farm 控制台会将您的运行命名为“My Device Farm run”。

  6. (可选)在运行设置下的作业超时部分中,您可以为测试运行指定执行超时。如果您使用的是无限制测试槽位,请确认在计费方法下选择非计量

  7. 运行设置下的运行类型部分中,选择您的运行类型。如果您没有可供测试的应用程序,或者您测试的是 Android(.apk)应用程序,请选择 Android 应用程序。如果您测试的是 iOS(.ipa)应用程序,请选择 iOS 应用程序。如果要测试 Web 应用程序,请选择 Web 应用程序

  8. 如果您没有可供测试的应用程序,请在选择应用程序下的应用程序选择选项部分中,选择选择 Device Farm 提供的示例应用程序。如果您自带应用程序,请选择上传自己的应用程序,然后选择您的应用程序文件。如果您要上传 iOS 应用程序,请确保选择 iOS device (iOS 设备),而不是模拟器。

  9. 配置测试下,选择一个可用的测试框架。

    注意

    如果您没有任何可用的测试,请选择 Built-in: Fuzz (内置: 模糊) 来运行标准的内置测试套件。如果您选择了内置:模糊并且出现了事件计数事件节流随机掩码种子框,则可以更改或保留值。

    有关可用测试套件的信息,请参阅AWS Device Farm 中的测试框架和内置测试

  10. 如果您没有选择内置:模糊,请在选择测试程序包下选择选择文件。浏览到并选择包含您的测试的文件。

  11. 对于您的执行环境,请选择在标准环境中运行测试自定义您的测试环境。有关更多信息,请参阅 AWS Device Farm 中的测试环境

  12. 如果您使用的是自定义测试环境,则可以选择执行以下操作:

    • 如果您要编辑自定义测试环境中的默认测试规范,请选择 Edit (编辑) 以更新默认 YAML 规范。

    • 如果您更改了测试规范,请选择另存为新版本以更新测试规范。

    • 您可以配置环境变量。此处提供的变量将优先于可能在父项目上配置的任何变量。

  13. 选定设备下,执行以下操作之一:

    • 要选择内置设备池以对其运行测试,请为 Device pool (设备池) 选择 Top Devices (主要设备)

    • 要创建您自己的设备池以对其运行测试,请按照创建设备池中的说明操作,然后返回到此页面。

    • 如果您在前面创建了自己的设备池,请为 Device pool (设备池) 选择您的设备池。

    • 选择手动选择设备,然后选择要针对其运行的所需设备。此配置将不会保存。

    有关更多信息,请参阅 AWS Device Farm 中的设备支持

  14. (可选)要添加其他配置,请打开其他配置下拉列表。在此部分,您可以执行以下任意操作:

    • 要提供执行角色 ARN 或覆盖在父项目上配置的执行角色 ARN,请使用执行角色 ARN 字段。

    • 要为 Device Farm 提供其他将在运行期间使用的数据,请在添加额外数据旁边选择选择文件,然后浏览到并选择包含这些数据的 .zip 文件。

    • 要安装 Device Farm 将在运行期间使用的其他应用程序,请在安装其他应用程序旁边选择选择文件,然后浏览到并选择包含该应用程序的 .apk 或 .ipa 文件。为您要安装的其他应用程序重复此操作。在上传应用程序之后,您可以拖放应用程序来更改应用程序的安装顺序。

    • 要指定是否将在运行期间启用 Wi-Fi、蓝牙、GPS 或 NFC,请在 Set radio states (设置电台) 旁边选中相应框。

    • 要为运行预设设备纬度和经度,请在 Device location (设备位置) 旁边输入坐标。

    • 要为运行预设设备区域设置,请在设备区域设置中选择区域设置。

    • 选择启用视频记录以在测试期间启用视频记录。

    • 选择启用应用程序性能数据捕获以启用从设备捕获性能数据。

    注意

    目前,设置设备无线电状态和区域设置选项仅适用于 Android 本地测试。

    注意

    如果您有私有设备,还将显示特定于私有设备的配置。

  15. 在页面底部,选择创建运行以安排运行。

Device Farm 将在设备可用后立即启动运行,通常在几分钟内启动。在测试运行期间,Device Farm 控制台会在运行表中显示一个待处理图标 Device Farm scheduled a job. 。运行中的每台设备也将以待处理图标开始,然后在测试开始时切换到正在运行的图标 Device Farm progress indicator. 。每次测试完成后,设备名称旁边都会显示一个测试结果图标。完成所有测试后,运行旁边的待处理图标将变为测试结果图标。

如果您想停止测试运行,请参阅 在 AWS Device Farm 中停止运行

创建测试运行 (AWS CLI)

您可以使用 AWS CLI 来创建测试运行。

步骤 1:选择一个项目

您必须将您的测试运行与一个 Device Farm 项目关联。

  1. 要列出您的 Device Farm 项目,请运行 list-projects。如果您没有项目,请参阅在 AWS Device Farm 中创建项目

    示例:

    aws devicefarm list-projects

    响应中将包含您的 Device Farm 项目的列表。

    { "projects": [ { "name": "MyProject", "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE", "created": 1503612890.057 } ] }
  2. 选择一个项目以与您的测试运行关联,请记录它的 Amazon 资源名称(ARN)。

步骤 2:选择一个设备池

您必须选择一个设备池以与您的测试运行关联。

  1. 要查看您的设备池,请运行 list-device-pools 并指定您的项目 ARN。

    示例:

    aws devicefarm list-device-pools --arn arn:MyProjectARN

    响应中将包含内置的 Device Farm 设备池,如 Top Devices,以及之前为此项目创建的任何设备池:

    { "devicePools": [ { "rules": [ { "attribute": "ARN", "operator": "IN", "value": "[\"arn:aws:devicefarm:us-west-2::device:example1\",\"arn:aws:devicefarm:us-west-2::device:example2\",\"arn:aws:devicefarm:us-west-2::device:example3\"]" } ], "type": "CURATED", "name": "Top Devices", "arn": "arn:aws:devicefarm:us-west-2::devicepool:example", "description": "Top devices" }, { "rules": [ { "attribute": "PLATFORM", "operator": "EQUALS", "value": "\"ANDROID\"" } ], "type": "PRIVATE", "name": "MyAndroidDevices", "arn": "arn:aws:devicefarm:us-west-2:605403973111:devicepool:example2" } ] }
  2. 选择一个设备池,然后记录它的 ARN。

    您也可以创建一个设备池,然后返回到此步骤。有关更多信息,请参阅 创建设备池 (AWS CLI)

步骤 3:上传您的应用程序文件

要创建上传请求并获取 Amazon Simple Storage Service (Amazon S3) 预签名的上传 URL,您需要:

  • 您的项目 ARN。

  • 您的应用程序文件的名称。

  • 上传的类型。

有关更多信息,请参阅 create-upload

  1. 要上传文件,请使用 –-project-arn--name--type 参数运行 create-upload

    此示例将创建一个用于 Android 应用程序的上传:

    aws devicefarm create-upload -–project-arn arn:MyProjectArn -–name MyAndroid.apk -–type ANDROID_APP

    响应中将包含您的应用程序上传 ARN 和预签名 URL。

    { "upload": { "status": "INITIALIZED", "name": "MyAndroid.apk", "created": 1535732625.964, "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL", "type": "ANDROID_APP", "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE" } }
  2. 记录应用程序上传 ARN 和预签名 URL。

  3. 使用 Amazon S3 预签名 URL 上传您的应用程序文件。本示例使用 curl 上传 Android .apk 文件:

    curl -T MyAndroid.apk "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL"

    有关更多信息,请参阅 Amazon 简单存储服务用户指南 URLs中的使用预签名上传对象

  4. 要检查您的应用程序上传的状态,请运行 get-upload 并指定应用程序上传的 ARN。

    aws devicefarm get-upload –-arn arn:MyAppUploadARN

    等到响应中的状态为 SUCCEEDED 之后,再上传您的测试脚本程序包。

    { "upload": { "status": "SUCCEEDED", "name": "MyAndroid.apk", "created": 1535732625.964, "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL", "type": "ANDROID_APP", "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE", "metadata": "{"valid": true}" } }

步骤 4:上传您的测试脚本程序包

接下来,您将上传测试脚本程序包。

  1. 要创建您的上传请求并获取 Amazon S3 预签名上传 URL,请使用 –-project-arn--name--type 参数运行 create-upload

    此示例将创建一个 Appium Java TestNG 测试程序包上传:

    aws devicefarm create-upload –-project-arn arn:MyProjectARN -–name MyTests.zip –-type APPIUM_JAVA_TESTNG_TEST_PACKAGE

    响应中将包含您的测试程序包上传 ARN 和预签名 URL。

    { "upload": { "status": "INITIALIZED", "name": "MyTests.zip", "created": 1535738627.195, "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL", "type": "APPIUM_JAVA_TESTNG_TEST_PACKAGE", "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE" } }
  2. 记录测试程序包上传 ARN 和预签名 URL。

  3. 使用 Amazon S3 预签名 URL 上传您的测试脚本程序包文件。此示例使用 curl 上传压缩 Appium TestNG 脚本文件:

    curl -T MyTests.zip "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL"
  4. 要检查您的测试脚本程序包上传的状态,请运行 get-upload 并指定从步骤 1 获取的测试程序包上传的 ARN。

    aws devicefarm get-upload –-arn arn:MyTestsUploadARN

    等到响应中的状态为 SUCCEEDED 之后,再继续执行下一个可选步骤。

    { "upload": { "status": "SUCCEEDED", "name": "MyTests.zip", "created": 1535738627.195, "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL", "type": "APPIUM_JAVA_TESTNG_TEST_PACKAGE", "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE", "metadata": "{"valid": true}" } }

步骤 5:上传您的自定义测试规范(可选)

如果您要在标准测试环境中运行测试,请跳过此步骤。

Device Farm 会为每个支持的测试类型维护默认测试规范文件。接下来,您将下载默认测试规范,并使用它来创建自定义测试规范上传,以在自定义测试环境中运行测试。有关更多信息,请参阅 AWS Device Farm 中的测试环境

  1. 要查找您的默认测试规范的上传 ARN,请运行 list-uploads 并指定项目 ARN。

    aws devicefarm list-uploads --arn arn:MyProjectARN

    响应中包含每个默认测试规范的条目:

    { "uploads": [ { { "status": "SUCCEEDED", "name": "Default TestSpec for Android Appium Java TestNG", "created": 1529498177.474, "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL", "type": "APPIUM_JAVA_TESTNG_TEST_SPEC", "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE" } } ] }
  2. 从列表中选择您的默认测试规范。记录它的上传 ARN。

  3. 要下载默认测试规范,请运行 get-upload 并指定上传 ARN。

    示例:

    aws devicefarm get-upload –-arn arn:MyDefaultTestSpecARN

    响应中将包含预签名 URL,您可以从中下载默认测试规范。

  4. 此示例使用 curl 下载默认测试规范,并将其另存为 MyTestSpec.yml

    curl "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL" > MyTestSpec.yml
  5. 您可以根据自己的测试要求编辑默认的测试规范,然后在未来的测试运行中使用修改后的测试规范。跳过此步骤可在自定义测试环境中按原样使用默认的测试规范。

  6. 要创建您的自定义测试规范上传,请运行 create-upload 并指定您的测试规范名称、测试规范类型和项目 ARN。

    此示例将创建 Appium Java TestNG 自定义测试程序包的上传:

    aws devicefarm create-upload --name MyTestSpec.yml --type APPIUM_JAVA_TESTNG_TEST_SPEC --project-arn arn:MyProjectARN

    响应中将包含测试规范上传 ARN 和预签名 URL:

    { "upload": { "status": "INITIALIZED", "category": "PRIVATE", "name": "MyTestSpec.yml", "created": 1535751101.221, "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL", "type": "APPIUM_JAVA_TESTNG_TEST_SPEC", "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE" } }
  7. 记录测试规范上传 ARN 和预签名 URL。

  8. 使用 Amazon S3 预签名 URL 上传您的测试规范文件。此示例用于curl上传 Appium JavaTest NG 测试规范:

    curl -T MyTestSpec.yml "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL"
  9. 要检查您的测试规范上传的状态,请运行 get-upload 并指定上传 ARN。

    aws devicefarm get-upload –-arn arn:MyTestSpecUploadARN

    等到响应中的状态为 SUCCEEDED 之后,再安排您的测试运行。

    { "upload": { "status": "SUCCEEDED", "name": "MyTestSpec.yml", "created": 1535732625.964, "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL", "type": "APPIUM_JAVA_TESTNG_TEST_SPEC", "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE", "metadata": "{"valid": true}" } }

    要更新您的自定义测试规范,请运行 update-upload 并指定测试规范的上传 ARN。有关更多信息,请参阅 update-upload

步骤 6:安排测试运行

要安排测试运行,请运行 AWS CLIschedule-run,请指定:

  • 步骤 1 获取的项目 ARN。

  • 步骤 2 获取的设备池 ARN。

  • 步骤 3 获取的应用程序上传 ARN。

  • 步骤 4 获取的测试程序包上传 ARN。

如果您要在自定义测试环境中运行测试,则还需要从步骤 5 获取的测试规范 ARN。

安排在标准测试环境中执行运行
  • 运行 schedule-run,并指定您的项目 ARN、设备池 ARN、应用程序上传 ARN 和测试程序包信息。

    示例:

    aws devicefarm schedule-run --project-arn arn:MyProjectARN --app-arn arn:MyAppUploadARN --device-pool-arn arn:MyDevicePoolARN --name MyTestRun --test type=APPIUM_JAVA_TESTNG,testPackageArn=arn:MyTestPackageARN

    响应中将包含可用于检查测试运行状态的运行 ARN。

    { "run": { "status": "SCHEDULING", "appUpload": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345appEXAMPLE", "name": "MyTestRun", "radios": { "gps": true, "wifi": true, "nfc": true, "bluetooth": true }, "created": 1535756712.946, "totalJobs": 179, "completedJobs": 0, "platform": "ANDROID_APP", "result": "PENDING", "devicePoolArn": "arn:aws:devicefarm:us-west-2:123456789101:devicepool:5e01a8c7-c861-4c0a-b1d5-12345devicepoolEXAMPLE", "jobTimeoutMinutes": 150, "billingMethod": "METERED", "type": "APPIUM_JAVA_TESTNG", "testSpecArn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345specEXAMPLE", "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:5e01a8c7-c861-4c0a-b1d5-12345runEXAMPLE", "counters": { "skipped": 0, "warned": 0, "failed": 0, "stopped": 0, "passed": 0, "errored": 0, "total": 0 } } }

    有关更多信息,请参阅 schedule-run

安排在自定义测试环境中执行运行
  • 所用的步骤几乎与标准测试环境中的步骤相同,只是 --test 参数中多了一个 testSpecArn 属性。

    示例:

    aws devicefarm schedule-run --project-arn arn:MyProjectARN --app-arn arn:MyAppUploadARN --device-pool-arn arn:MyDevicePoolARN --name MyTestRun --test testSpecArn=arn:MyTestSpecUploadARN,type=APPIUM_JAVA_TESTNG,testPackageArn=arn:MyTestPackageARN
检查您的测试运行的状态
  • 使用 get-run 命令并指定运行 ARN:

    aws devicefarm get-run --arn arn:aws:devicefarm:us-west-2:111122223333:run:5e01a8c7-c861-4c0a-b1d5-12345runEXAMPLE

有关更多信息,请参阅 get-run。有关将 Device Farm 与配合使用的信息 AWS CLI,请参阅AWS CLI 参考文档

创建测试运行 (API)

这些步骤与本 AWS CLI 节中描述的步骤相同。请参阅创建测试运行 (AWS CLI)

您调用 ScheduleRun API 时需要以下信息:

注意

如果您要在自定义测试环境中运行测试,则还需要测试规范上传 ARN。有关更多信息,请参阅步骤 5:上传您的自定义测试规范(可选)CreateUpload

有关如何使用 Device Farm API 的更多信息,请参阅 自动化 Device Farm

后续步骤

在 Device Farm 控制台中,运行完成后,时钟图标 Device Farm scheduled a job. 变为结果图标,例如成功 The test succeeded. 。测试完成后,将立即显示与运行对应的报告。有关更多信息,请参阅 AWS Device Farm 中的报告

要使用报告,请按照在 Device Farm 中查看测试报告中的说明操作。