

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

# AWS Device Farm 测试操作参考
<a name="action-reference-DeviceFarm"></a>

在您的管道中，您可以配置用于 AWS Device Farm 在设备上运行和测试应用程序的测试操作。Device Farm 使用设备测试池和测试框架在特定设备上测试应用程序。有关 Device Farm 操作支持的测试框架类型的信息，请参阅在 Device [Farm 中 AWS 使用测试类型](https://docs.aws.amazon.com/devicefarm/latest/developerguide/test-types.html)。

**Topics**
+ [操作类型](#action-reference-DeviceFarm-type)
+ [配置参数](#action-reference-DeviceFarm-config)
+ [输入构件](#action-reference-DeviceFarm-input)
+ [输出构件](#action-reference-DeviceFarm-output)
+ [服务角色权限： AWS Device Farm 操作](#edit-role-devicefarm)
+ [操作声明](#action-reference-DeviceFarm-example)
+ [另请参阅](#action-reference-DeviceFarm-links)

## 操作类型
<a name="action-reference-DeviceFarm-type"></a>
+ 类别：`Test`
+ 拥有者：`AWS`
+ 提供方：`DeviceFarm`
+ 版本：`1`

## 配置参数
<a name="action-reference-DeviceFarm-config"></a>

**AppType**  
是否必需：是  
您要测试的操作系统和应用程序类型。以下是有效值列表：  
+ `iOS`
+ `Android`
+ `Web`

**ProjectId**  
是否必需：是  
Device Farm 项目 ID。  
要查找您的项目 ID，请在 Device Farm 控制台中选择您的项目。在浏览器中，复制新项目的 URL。URL 包含项目 ID。项目 ID 是 URL 中位于 `projects/` 之后的值。在下面的示例中，项目 ID 为 `eec4905f-98f8-40aa-9afc-4c1cfexample`。  

```
https://<region-URL>/devicefarm/home?region=us-west-2#/projects/eec4905f-98f8-40aa-9afc-4c1cfexample/runs
```

**App**  
是否必需：是  
您的输入构件中应用程序文件的名称和位置。例如：`s3-ios-test-1.ipa`

**TestSpec**  
条件：是  
测试规范定义文件在输入构件中的位置。这是自定义模式测试所必需的。

**DevicePoolArn**  
是否必需：是  
Device Farm 设备池 ARN。  
要获取项目的可用设备池 ARNs ，包括热门设备的 ARN，请使用 CL AWS I 输入以下命令：  

```
aws devicefarm list-device-pools --arn arn:aws:devicefarm:us-west-2:account_ID:project:project_ID
```

**TestType**  
是否必需：是  
为您的测试指定受支持的测试框架。以下是 `TestType` 的有效值列表：  
+ **APPIUM\$1JAVA\$1JUNIT**
+ **APPIUM\$1JAVA\$1TESTNG**
+ **APPIUM\$1NODE**
+ **APPIUM\$1RUBY**
+ **APPIUM\$1PYTHON**
+ **APPIUM\$1WEB\$1JAVA\$1JUNIT**
+ **APPIUM\$1WEB\$1JAVA\$1TESTNG**
+ **APPIUM\$1WEB\$1NODE**
+ **APPIUM\$1WEB\$1RUBY**
+ **APPIUM\$1WEB\$1PYTHON**
+ **BUILTIN\$1FUZZ**
+ **INSTRUMENTATION**
+ **XCTEST**
+ **XCTEST\$1UI**
 CodePipeline: `WEB_PERFORMANCE_PROFILE`、`REMOTE_ACCESS_RECORD`和中的操作不支持以下测试类型`REMOTE_ACCESS_REPLAY`。
有关 Device Farm 测试类型的信息，请参阅[使用 AWS Device Farm 中的测试类型](https://docs.aws.amazon.com/devicefarm/latest/developerguide/test-types.html)。

**RadioBluetoothEnabled**  
必需：否  
用于指示是否在测试开始时启用蓝牙的布尔值。

**RecordAppPerformanceData**  
必需：否  
用于指示是否在测试期间记录设备性能数据（如 CPU、FPS 和内存性能）的布尔值。

**RecordVideo**  
必需：否  
用于指示是否在测试期间录制视频的布尔值。

**RadioWifiEnabled**  
必需：否  
用于指示是否在测试开始时启用 Wi-Fi 的布尔值。

**RadioNfcEnabled**  
必需：否  
用于指示是否在测试开始时启用 NFC 的布尔值。

**RadioGpsEnabled**  
必需：否  
用于指示是否在测试开始时启用 GPS 的布尔值。

**测试**  
必需：否  
您的源位置中测试定义文件的名称和路径。路径相对于测试的输入项目的根。

**FuzzEventCount**  
必需：否  
模糊测试要执行的用户接口事件数，介于 1 到 10,000 之间。

**FuzzEventThrottle**  
必需：否  
在执行下一个用户接口事件之前，模糊测试等待的毫秒数，介于 1 到 1,000 之间。

**FuzzRandomizerSeed**  
必需：否  
供模糊测试用来将用户接口事件随机化的种子。对后续模糊测试使用相同的数字会使事件序列相同。

**CustomHostMachineArtifacts**  
必需：否  
主机上存储自定义构件的位置。

**CustomDeviceArtifacts**  
必需：否  
设备上存储自定义构件的位置。  


**UnmeteredDevicesOnly**  
必需：否  
用于指示在此步骤中运行测试时是否仅使用非计量设备的布尔值。

**JobTimeoutMinutes**  
必需：否  
测试在超时前将在每台设备上执行的分钟数。

**纬度**  
必需：否  
以地理坐标系度数表示的设备的纬度。

**经度**  
必需：否  
以地理坐标系度数表示的设备的经度。

## 输入构件
<a name="action-reference-DeviceFarm-input"></a>
+ **构件数：**`1`
+ **描述：**要提供给测试函数使用的一组构件。Device Farm 会查找要使用的已构建应用程序和测试定义。

## 输出构件
<a name="action-reference-DeviceFarm-output"></a>
+ **构件数：**`0`
+ **描述：**输出构件不适用于此操作类型。

## 服务角色权限： AWS Device Farm 操作
<a name="edit-role-devicefarm"></a>

 CodePipeline 运行操作时， CodePipeline 服务角色策略需要以下权限，这些权限的范围适当地缩小到管道资源 ARN，以便以最低权限保持访问权限。例如，将以下内容添加到策略语句中：

```
{
    "Effect": "Allow",
    "Action": [
        "devicefarm:ListProjects",
        "devicefarm:ListDevicePools",
        "devicefarm:GetRun",
        "devicefarm:GetUpload",
        "devicefarm:CreateUpload",
        "devicefarm:ScheduleRun"
    ],
    "Resource": "resource_ARN"
},
```

## 操作声明
<a name="action-reference-DeviceFarm-example"></a>

------
#### [ YAML ]

```
Name: Test
Actions:
  - Name: TestDeviceFarm
    ActionTypeId: null
    category: Test
    owner: AWS
    provider: DeviceFarm
    version: '1'
RunOrder: 1
Configuration:
  App: s3-ios-test-1.ipa
  AppType: iOS
  DevicePoolArn: >-
    arn:aws:devicefarm:us-west-2::devicepool:0EXAMPLE-d7d7-48a5-ba5c-b33d66efa1f5
  ProjectId: eec4905f-98f8-40aa-9afc-4c1cfEXAMPLE
  TestType: APPIUM_PYTHON
  TestSpec: example-spec.yml
OutputArtifacts: []
InputArtifacts:
  - Name: SourceArtifact
Region: us-west-2
```

------
#### [ JSON ]

```
{
    "Name": "Test",
    "Actions": [
        {
            "Name": "TestDeviceFarm",
            "ActionTypeId": null,
            "category": "Test",
            "owner": "AWS",
            "provider": "DeviceFarm",
            "version": "1"
        }
    ],
    "RunOrder": 1,
    "Configuration": {
        "App": "s3-ios-test-1.ipa",
        "AppType": "iOS",
        "DevicePoolArn": "arn:aws:devicefarm:us-west-2::devicepool:0EXAMPLE-d7d7-48a5-ba5c-b33d66efa1f5",
        "ProjectId": "eec4905f-98f8-40aa-9afc-4c1cfEXAMPLE",
        "TestType": "APPIUM_PYTHON",
        "TestSpec": "example-spec.yml"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
            "Name": "SourceArtifact"
        }
    ],
    "Region": "us-west-2"
},
```

------

## 另请参阅
<a name="action-reference-DeviceFarm-links"></a>

下列相关资源在您使用此操作的过程中会有所帮助。
+ [使用 Device Farm 中的测试类型](https://docs.aws.amazon.com/devicefarm/latest/developerguide/test-types.html)：*Device Farm 开发者指南* 中的本参考章节详细描述了 Device Farm 支持的 Android、iOS 和 Web 应用程序测试框架。
+ [Device Farm 中的操作](https://docs.aws.amazon.com/devicefarm/latest/APIReference/Welcome.html)：*Device Farm API 参考* 中的 API 调用和参数可以帮助您处理 Device Farm 项目。
+ [教程：创建用于构建和测试您的 Android 应用程序的管道 AWS Device Farm](tutorials-codebuild-devicefarm.md)— 本教程提供了示例构建规范文件和示例应用程序，用于创建管道，其 GitHub 源代码用于使用和 Device Farm 构建 CodeBuild 和测试 Android 应用程序。
+ [教程：创建用于测试你的 iOS 应用的管道 AWS Device Farm](tutorials-codebuild-devicefarm-S3.md)：本教程提供了一个示例应用程序，以创建具有 Amazon S3 源的管道，用于通过 Device Farm 测试所构建的一款 iOS 应用。