分享此页面

# 与外部测试集成

为了将 ALM 与在 Jenkins 上运行的外部测试集成，ALM 为 Micro Focus Application Automation Tools 插件引入了构建后操作: 使用字段映射将测试结果上载到 ALM。该插件读取外部测试框架或工具的测试报告，将测试结果上传到 ALM，然后在 ALM 中更新或创建测试、测试集、测试实例和测试运行。

备注: 以前的外部测试集成解决方案 (如导入外部测试中所述) 不再更新。如果您愿意，仍然可以使用它。但是，建议您使用本主题中介绍的解决方案。

在本主题中︰

## 简要步骤

以下概述了使用构建后操作将测试结果从 XML 测试报告上传到 ALM 时应执行的操作:

1. 准备一个包含测试结果的 XML 文件。可以手动准备 XML 文件，也可以让测试工具或框架生成文件。
2. 安装插件，版本 6.4 或更高版本。请参阅 https://plugins.jenkins.io/hp-application-automation-tools-plugin/。

3. 新建一个 Jenkins 作业来测试插件配置。请参阅创建作业来测试插件配置。

   建议在第一次使用该插件时新建一个作业。在生产环境中实施之前，需要测试插件配置。

4. 将构建后操作“使用字段映射将测试结果上传到 ALM”添加到新的 Jenkins 作业或现有作业。请参阅设置构建后操作。

注:

- 如果要将持续时间信息 (例如测试执行时间) 上传到 ALM，请在 ALM 中创建字符串类型的用户定义字段。这是因为 ALM 系统字段“持续时间”仅允许整数。不能用于记录 XML 文件中的持续时间信息 (通常为浮点数)。

- 该插件不支持为 ALM 实体设置日期类型的系统字段。例如，测试中的“创建日期”和测试实例中的“执行日期”。上传测试结果时，ALM 会自动设置此类日期字段值。

  如果要将测试结果 XML 文件中的日期信息上传到 ALM，请创建日期类型的用户定义字段。该文件只支持日期，不支持时间。

  XML 文件中的日期格式应为 yyyy-mm-dd。

返回页首

## 创建作业来测试插件配置

按照以下步骤从头开始创建新作业。如果想在测试环境中尝试此功能，建议您这样做。

如果想在已经存在用于运行测试的 Jenkins 作业的生产环境中直接使用此功能，请跳至设置构建后操作。

要创建作业来测试插件配置，请执行以下操作:

1. 转到 Jenkins 服务器主页。
2. 单击“新建项”链接。
3. 输入作业名称。
4. 选择“构建自由样式软件项目”，然后单击“确定”。

5. 在“项目配置”部分，向下滚动到“构建”部分。

6. 展开“添加构建步骤”下拉列表，选择“执行 Shell”(对于非 Windows 系统) 或“执行 Windows 批处理命令”(对于 Windows 系统)。

   编写命令以将示例测试结果 XML 文件复制到 Jenkins 作业文件夹。

   该插件支持在 Jenkins 服务器和从属机器中搜索测试结果文件。您可以将 XML 文件复制到任意位置。

   要将示例 XML 文件复制到 Jenkins 服务器，请运行以下命令:

   - Windows：

     Copy code

         copy "<复制的示例 XML 的路径>\<报告名称>.xml" <Jenkins 主目录>/jobs/<Jenkins 作业名称>/builds/%BUILD_ID%

   - 非 Windows:

     Copy code

         cp -f <复制的示例 XML 的路径>/<报告名称>.xml <Jenkins 主目录>/jobs/<Jenkins 作业名称>/builds/${BUILD_ID}

   要将示例 XML 文件复制到 Jenkins 从属机器，请运行以下命令:

   - Windows:

     Copy code

         copy "<复制的示例 XML 的路径>\<报告名称>.xml" %WORKSPACE%

   - 非 Windows:

     Copy code

         cp -f <复制的示例 XML 的路径>\<报告名称>.xml {WORKSPACE}

返回页首

## 设置构建后操作

按照以下步骤设置“使用字段映射将测试结果上传到 ALM”构建后操作。

要设置构建后操作，请执行以下操作:

1. 打开您在创建作业来测试插件配置中创建的 Jenkins 作业或自动运行测试的现有 Jenkins 作业。

2. 单击“配置”。在“构建后操作”部分中，展开“添加构建后操作”下拉列表，选择“使用字段映射将测试结果上传到 ALM”。

   指定以下字段。

   字段 | 描述
   --- | ---
   ALM Server | 选择您在“配置与 ALM 服务器的连接”步骤中配置的 ALM 服务器之一。 请参阅 https://github.com/jenkinsci/hpe-application-automation-tools-plugin/blob/latest/doc/ALM_Integration.md。
   ALM 凭据 | 选择一对 ALM 凭据。如果没有，请单击“添加”以添加凭据。
   域 | 输入域名。
   项目 | 输入项目名称。
   客户端类型 | 输入可用于访问 ALM 服务器的客户端类型。 仅当在 ALM 服务器中启用 API 限制时才需要填写此字段。如果 ALM 服务器中没有 API 限制，请跳过此字段。
   测试文件夹 | 输入将包含上传的测试的测试文件夹的路径。不要在路径中包含根测试文件夹 (Subject)。 如果 ALM 中不存在路径中的任何文件夹，该插件将根据结构创建这些文件夹并在路径下创建实体。 例如，如果测试文件夹为 `sampletestfolder\subfolder`，且 ALM 中不存在 `sampletestfolder` 和 `subfolder`，则插件会在 `Subject` 下创建 `sampletestfolder` 文件夹，在 `sampletestfolder` 下创建 `subfolder` 文件夹以及在 `subfolder` 下新建一个测试。 测试文件夹支持使用 Jenkins 环境变量。
   测试集文件夹 | 输入测试集文件夹的路径。不要在路径中包含根测试集文件夹。 该插件通过 XML 文件中定义的测试集名称搜索整个测试集树。如果未找到，则会在该路径下新建一个测试集。 如果 ALM 中不存在路径中的任何文件夹，该插件将根据结构创建这些文件夹。 测试集文件夹支持使用 Jenkins 环境变量。
   测试结果文件 | 以 Ant glob 语法指定测试结果 XML 文件的路径，例如 `**/*.xml`。确保没有在此模式中包含任何非报告文件。您可以以逗号分隔的形式指定多种文件模式。
   字段映射 | 将 XML 元素和属性映射到 ALM 实体和字段。 字段映射支持使用 Jenkins 环境变量。 有关详细信息，请参阅如何设置字段映射。
   - 运行状态映射 | 将测试状态值映射到 ALM 运行状态值。 先决条件: 您应将 XML 元素或属性映射到 ALM 状态字段。 您可以映射 ALM 系统运行状态 (例如“未运行”、“通过”、“失败”、“已阻止”和“未完成”) 以及用户定义的状态。 有关示例运行状态映射，请参阅示例运行状态映射。 如果 XML 文件中的状态值与 ALM 状态值相同，则无需设置运行状态映射。 如果不再相关，则无需删除映射。 为确保测试结果可以成功上传，建议您列出所有可能的状态映射。例如，以下映射可以共存。只要至少有一个映射有效，就可以上传测试结果。
         Success: "Passed"
         True: "Passed"
         1: "Passed"

### 如何设置字段映射

映射以 YAML 格式配置。它应包括具有相同顺序的以下部分: “测试集”、“测试”和“运行”。在每个部分中，应定义以下键的值:

- root: 测试集、测试或运行的根节点路径。

- ALM 项目中测试集、测试和运行的所有必填字段

  一个键表示一个 ALM 实体的字段。其值表示 XML 文件中将上传到 ALM 字段的元素或属性值。

  如果要将值上传到系统字段，则键应该为字段名称。ALM 字段名称并不总与字段标签相同。您应该使用 ALM 字段名称而不是标签作为键。有关如何获取字段名称的详细信息，请参阅用于获取 ALM 实体字段名称的 REST API。

  如果要将值上传到用户定义的字段，则键应以 `udf|` 开头，后跟字段标签。例如，如果要将值上传到用户定义的字段“持续时间”，则键应为 `udf|duration`。

- (可选) 要映射的其他 ALM 字段

如何指定值?

有两种类型的值: 以 `x:` 开头的值和以 `v:` 开头的值。

`x:` | `x:` 后面的值为 XML 文件中元素或属性的 XPath (XML 路径语言)。 您可以定义绝对路径 (以 `/` 开头) 或相对路径 (直接以 XML 元素名称开头)。 `x:.` 表示 XPath 与上一个实体中定义的完全相同。例如，如果 `root: "x:."` 在“运行”部分中定义，且字段映射中“运行”部分在“测试”部分之后，则表示运行的根与测试的根相同。 如果要上传到 ALM 字段的值为 XML 元素值，则 `x:` 后面应跟元素名称。例如，`x:duration`。如果要上传的值为 XML 元素的属性值，则 x: 后面应跟 `@<属性名称>`。例如，`x:@length`。
`v:` | `v:` 后面的值为将被上传到测试集、测试或测试运行的固定字符串值。例如，如果在测试集部分中，它具有 `name: "v:2021-01-29__Build_Verification_Test"`，则上传到 ALM 的测试集名称将为 `2021-01-29__Build_Verification_Test`。 要为 ALM 系统字段“类型”指定值，应从测试集、测试和运行类型中选择值并在值前面加上 `v:` 前缀。

如果值由来自多个 XML 元素或属性的值组成，请使用 `|` 将值的所有部分组合在一起。例如，`x:file|v:_|x:name`。

有关示例测试结果和字段映射，请参阅示例测试结果 XML 和示例字段映射。

### 用于获取 ALM 实体字段名称的 REST API

调用以下 REST API 以获取测试集、测试和运行实体的字段名称。字段的名称是“字段”元素中“名称”属性的值。

获取测试集的字段名称 | http://<ALM 服务器>:<端口>/qcbin/rest/domains/<域名>/projects/<项目名称>/customization/entities/test-set/fields?login-form-required=y
获取测试的字段名称 | http://<ALM 服务器>:<端口>/qcbin/rest/domains/<域名>/projects/<项目名称>/customization/entities/test/fields?login-form-required=y
获取运行的字段名称 | http://<ALM 服务器>:<端口>/qcbin/rest/domains/<域名>/projects/<项目名称>/customization/entities/run/fields?login-form-required=y

### 测试集、测试和运行类型

测试集类型 | hp.qc.test-set.default hp.qc.test-set.external
测试类型 | ALT-SCENARIO ALT-TEST BUSINESS-PROCESS DB-TEST EXTERNAL-TEST FLOW LEANFT-TEST LR-SCENARIO MANUAL QAINSPECT-TEST QTSAP-TESTCASE QUICKTEST_TEST SERVICE-TEST SYSTEM-TEST VAPI-XP-TEST WR-AUTOMATED WR-BATCH XR-TEST
运行类型 | custom.run.LEANFT-TEST hp.qc.run.ALT-SCENARIO hp.qc.run.ALT-TEST hp.qc.run.BUSINESS-PROCESS hp.qc.run.DB-TEST hp.qc.run.FLOW hp.qc.run.LR-SCENARIO hp.qc.run.MANUAL hp.qc.run.QAINSPECT-TEST hp.qc.run.QTSAP-TESTCASE hp.qc.run.QUICKTEST_TEST hp.qc.run.SERVICE-TEST hp.qc.run.SYSTEM-TEST hp.qc.run.VAPI-XP-TEST hp.qc.run.WR-AUTOMATED hp.qc.run.WR-BATCH hp.qc.run.XR-TEST hp.qc.run.external-test hp.sprinter.run.SPRINTER

### 示例

示例测试结果 XML

    <?xml version='1.0' encoding='UTF-8'?>
        <result>
            <suites>
                <suite>
                    <file>Changes file</file>
                    <name>Changes Test Set 1</name>
                    <duration>2.293</duration>
                    <cases>
                        <case>
                            <duration>8.293</duration>
                            <className>ChangesManagement</className>
                            <testName>test1</testName>
                            <testVersion>4.0</testVersion>
                            <skipped>false</skipped>
                            <failedSince>0</failedSince>
                        </case>
                        <case>
                            <duration>8.293</duration>
                            <className>ChangesManagement</className>
                            <testName>List changes 2</testName>
                            <testVersion>4.0</testVersion>
                            <skipped>false</skipped>
                            <failedSince>0</failedSince>
                        </case>
                    </cases>
                </suite>
                <duration>0.576</duration>
        </result>

示例字段映射

    testset:
      root: "x:/result/suites/suite"
      name: "x:file|v:_|x:name"
      udf|duration: "x:duration"
      subtype-id: "v:hp.qc.test-set.external"
    test:
      root: "x:cases/case"
      name: "x:testName"
      subtype-id: "v:EXTERNAL-TEST"
      udf|duration: "x:duration"
      udf|test version: "x:testVersion"
    run:
      root: "x:."
      duration: "x:duration"
      status: "x:failedSince"

示例运行状态映射

    status:
      True: "Passed"
      False: "Failed"
      1: "Passed"
      0: "Failed"
      Success: "Passed"
      Failure: "Failed"
      Block: "Blocked"

返回页首

## 运行作业

像执行任何标准 Jenkins 作业一样运行或计划作业。

返回页首

## 上传成功完成后

- 如果通过 XML 文件中定义的测试集名称未找到现有的测试集，则会新建测试集。
- 如果通过 XML 文件中定义的测试名称未找到现有的测试实例，则会新建测试实例。
- 如果要上传的测试结果是针对相同的现有测试集和测试，则插件仅会在测试实例中创建测试运行。

返回页首

## 查看结果

1. 打开 Jenkins 作业。在“内部版本历史记录”部分中，单击某个内部版本 ID。

2. 在内部版本详细信息页面中，单击“控制台输出”，查看测试结果上传的日志。

   要快速定位与上传相关的日志，请通过“开始登录到 ALM 服务器”搜索日志。

3. 登录 ALM 以查看在 ALM 中创建的测试、测试集、测试实例和测试运行。

备注: 控制台输出对于了解插件如何工作的详细信息很重要，尤其是当作业第一次失败时。它可以帮助您发现并修复问题。

返回页首

另请参见：

- Jenkins 集成
- ALM 集成概述

https://admhelp.microfocus.com ALM 8942
改进搜索结果的提示... ALM 帮助中心 ALM 帮助中心 ALM 帮助 17.0 全部查看本地帮助中心查看联机帮助中心后退在浏览器历史记录中后退前进在浏览器历史记录中前进删除突出显示的搜索项下一个主题转到下一个主题上一个主题转到上一个主题打印当前主题版本: