创建并运行 REST 服务 API 测试

本课程介绍如何使用 OpenText Functional Testing 中服务的原型模型来创建和运行 REST 服务 API 测试。

创建 REST 服务测试

将 REST 服务测试添加到 MyFlight 应用程序解决方案中,以测试 MyFlights 应用程序的 Web (API)。

创建 API 测试:

  1. 使用 OpenText Functional Testing 启动将打开 MyFlight 应用程序解决方案。

    有关更多详细信息,请参阅请参阅 "启动 OpenText Functional Testing 并创建解决方案"

  2. 选择工具栏中的“新建”下拉列表 ,然后选择“新建测试”
  3. 在“新建测试”对话框中:

    • 选择“API 测试”
    • 在“名称”字段中,输入 MyFlightRESTService
    • 在“位置”字段中,确保将测试保存在 C:%HOMEPATH%\Documents\Functional Testing 目录中。

    单击“创建”将测试添加到解决方案中。

  4. 继续学习请参阅 "创建 REST 服务结构"

创建 REST 服务结构

本练习介绍如何在 OpenText Functional Testing 中创建 REST 方法和属性的模型,以供 OpenText Functional Testing 在测试 REST 服务性能时用于测试步骤中。

此部分包括以下部分: 

创建服务、资源和方法

  1. 启动 Flight API 应用程序。有关详细信息,请参阅请参阅 "Flight API 层"

    在学习本课程时,请保持“OpenText Flights 服务 API”对话框处于打开状态,以确保 Flights API 服务在 OpenText Functional Testing 运行测试时处于运行状态。

  2. 在“OpenText Flights 服务 API”对话框中,单击“帮助”以显示包含所有方法详细信息的浏览器窗口。

  3. OpenText Functional Testing 中,单击“添加 REST 服务” 工具栏按钮。

  4. 在“添加 REST 服务”对话框中,执行以下操作:

    • 将“新建服务”名称替换为“航班 REST 服务”
    • 单击“添加资源”工具栏按钮

    新的 Resource 节点将添加到树中。将此资源的名称更改为 FlightOrders

  5. 在“添加 REST 服务”对话框中,单击“添加方法”工具栏按钮

    新的 Method 节点将添加到树中。将此方法名称更改为 ReserveOrder

  6. 继续学习请参阅 "配置 REST 服务方法模型 URL"

配置 REST 服务方法模型 URL

在服务、资源和方法级别为 OpenText Functional Testing 提供应用程序的服务 URL:

  1. 仍在“添加 REST 服务”对话框中,选择树中的 Flights REST Service 节点。

  2. 在右侧的“常规”选项卡中,将“URL”属性值定义为:

    http://localhost:8000

  3. 在左侧树中选择 FlightOrders 节点。请注意,您刚才输入的 URL 在此处显示为 URL 值。

    在右侧的“常规”选项卡中,将“相对 URL”属性值定义为:

    Flights_REST

  4. 继续学习请参阅 "为 ReserveOrder 方法模型添加请求信息"

为 ReserveOrder 方法模型添加请求信息

定义 ReserveOrder 方法的属性值:

  1. 仍在“添加 REST 服务”对话框中,从左侧的树中选择 ReserveOrder 节点。

  2. 在右侧,单击“HTTP 输入/检查点”选项卡 ,并定义以下属性值:

    字段
    相对 URL /FlightOrders
    HTTP 方法 POST
  3. 单击右侧的“HTTP”选项卡 ,然后执行以下操作:

    • 从“请求正文”和“响应正文”下拉列表中,选择“XML”

    • 在“请求正文”文本编辑器区域中,输入以下代码:

      <FlightOrderDetails xmlns="HP.SOAQ.SampleApp">
        <Class>Business</Class>
        <CustomerName>John Parker</CustomerName>
        <DepartureDate>2115-02-28</DepartureDate>
        <FlightNumber>3233</FlightNumber>
        <NumberOfTickets>1</NumberOfTickets>
        </FlightOrderDetails>

      单击 以查看在网格视图中输入的属性。

  4. 再次单击“HTTP 输入/检查点”选项卡

  5. 在“输入”区域中,向下滚动到 RequestHeaders > RequestHeaders [1] 节点并将其展开。

    请记录此响应的设置,因为在后续步骤中需要使用它们。

  6. 继续学习请参阅 "为 ReserveOrder 方法模型创建输出属性"

为 ReserveOrder 方法模型创建输出属性

  1. 仍在“添加 REST 服务”对话框中,在左侧树中的 ReserveOrder 节点处于选中的情况下,选择右侧的“自定义输入/检查点”选项卡

  2. 单击“添加”>“添加输出属性”

  3. 在“添加输出属性”对话框中,输入以下值:

    • 名称。Total_Price
    • 类型。整型

    单击确定以添加属性。

  4. 重复上一步以添加另一个名为 Order_Number 且类型为“整型”的输出属性。

  5. 继续学习请参阅 "测试 ReserveOrder 方法模型"

测试 ReserveOrder 方法模型

先测试在之前的步骤中创建的模型,然后再将其添加到测试中:

  1. 在“添加 REST 服务”对话框中,在左侧的 ReserveOrder 方法节点处于选中的情况下,单击“运行方法” 工具栏按钮。

    可能需要展开左侧窗格才能看到该按钮。

    OpenText Functional Testing 将运行该方法以对其进行测试,并在“添加 REST 服务”对话框的底部显示结果。

    例如:

  2. 单击“确定”将已创建的服务模型添加到“工具箱”中。
  3. 继续学习请参阅 "将方法添加到 REST API 测试"

将方法添加到 REST API 测试

将在上面的 REST 服务模型中创建的方法添加到 REST API 测试中。

导入数据源,然后添加链接到数据源的步骤以及该步骤的检查点。

将数据源导入到测试中:

  1. 将用于测试的数据源导入。在“数据”窗格 (“查看”>“数据”) 中,单击“新建数据源”,然后选择“Excel”

  2. 在“新建 Excel 数据源”对话框的“数据源名称”字段中,输入 Flights_REST

  3. 浏览到保存在“<Installdir>\samples\Flights Application”目录中的 Excel 文件并选择该文件。

  4. 选择“链接到 Excel 文件的原始位置”,然后单击“确定”以将 Excel 文件中的数据添加到测试中。

  5. 继续学习请参阅 "添加步骤并将其属性链接到数据源:"

添加步骤并将其属性链接到数据源:

  1. 在“工具箱”窗格中,展开 Local Activities > Flights REST Service 节点,并将 ReserveOrder 步骤拖到画布中。

  2. 选择画布中的 ReserveOrder 步骤以显示“属性”窗格。

  3. 单击右侧的“HTTP”选项卡

    单击“网格”按钮,并使用“数据源列”中的值来定义以下值:

    • Class
    • CustomerName
    • DepartureDate
    • FlightNumber
    • NumberofTickets

    对于每个属性,执行以下操作:

    1. 单击“值”单元格或将鼠标悬停在其上方,然后单击“链接至数据源”
    2. 在“选择链接源”对话框中,选择“数据源列”,然后选择左侧的 Flights_REST! 输入节点。
    3. 在右侧,为要参数化的属性选择相关列。
  4. 继续学习请参阅 "为 ReserveOrder 步骤设置检查点"

为 ReserveOrder 步骤设置检查点

将检查点添加到测试中以验证 API 响应值:

  1. 选择画布中的 ReserveOrder 步骤以显示“属性”窗格,然后选择“HTTP”选项卡

  2. 将以下代码保存到 OpenText Functional Testing 计算机上名为 response.xml 的文件中:

    <?xml version="1.0"?>
    <CreatedOrderParams xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="HP.SOAQ.SampleApp">
    	<OrderNumber>93</OrderNumber>
    	<TotalPrice>374.400024</TotalPrice>
    </CreatedOrderParams>
  3. 在“HTTP”选项卡 底部的“响应”区域中,确保已选择“XML”作为“响应正文”

  4. 单击 ,然后浏览到刚才创建的 response.xml 文件并选择该文件。

    OpenText Functional Testing 将加载 XML 架构。

  5. 在加载的新架构中,更新以下值:

    字段
    OrderNumber > 10
    TotalPrice < 500
  6. 继续学习请参阅 "运行 REST 服务测试"

运行 REST 服务测试

运行在之前的练习中创建的测试并查看运行结果:

  1. 确保 Flight API 应用程序仍处于运行状态。有关更多详细信息,请参阅请参阅 "分析应用程序"

  2. 定义测试迭代的次数。在画布中,选择“测试流”框。

  3. 在“属性”窗格上的“输入”选项卡 中:

    • 选择“'For' 循环”选项。
    • 在“迭代次数”字段中,输入 8
  4. 配置 OpenText Functional Testing 在测试运行期间处理数据的方式:

    1. 在画布中,选择“测试流”框以显示测试流程的“属性”窗格。

    2. 在“属性”窗格中,选择数据源选项卡

    3. 在表中选择 Flights_REST!Input 条目,然后单击“编辑”

    4. 在“数据导航”对话框中,按如下所示指定数据导航详细信息:

      字段
      开始于: 第一行
      移动行数: 向前 1 行
      结束于: 最后一行
      在到达最后一行时 环绕
    5. 单击“确定”,然后保存测试。

  5. 单击“运行”工具栏按钮

    确保 MyFlightRESTService 测试处于选中状态,然后单击“运行”以运行测试。

  6. 测试完成并显示运行结果后,在“测试流”中向下导航并选择任意 ReserveOrder 节点。

    在右侧的“已捕获数据”区域中,查看测试运行期间生成的“请求和响应”数据。

    • 单击表中的任意链接以查看完整的请求或响应代码。

      例如:

    • 一直向下滚动,以查看检查点数据。

      在以下示例中,其中一个检查点失败,因为包含大于 500 的价格。

  7. 继续学习请参阅 "解决 REST 服务冲突"

解决 REST 服务冲突

如果在创建测试后更改了服务模型的属性,请解决 REST 服务冲突。

在本练习中,您将创建冲突,然后使用 OpenText Functional Testing 的解决冲突向导来更新您的测试。

在 REST 服务中创建冲突

与更新后的服务模型进行比较时,编辑该服务模型的属性以在测试中创建冲突:

  1. 在“工具箱”窗格中,右键单击 Local Activities > Flights REST Service 节点,并选择“编辑服务”

  2. 在“编辑 REST 服务”对话框中,选择 ReserveOrder 节点。

  3. 在右侧选择“自定义输入/检查点”选项卡

  4. 选择 Total_Price 属性,然后单击顶部的“编辑属性”按钮

  5. 将名称更改为 TotalPrice (删除单词之间的下划线)。

  6. 重复执行先前的步骤,以将 Order_Number 属性名称更改为 OrderNumber

  7. 单击“确定”以更改服务并关闭对话框。

    OpenText Functional Testing 将保存更改,现在画布中会显示警报,指示值不再匹配。

  8. 继续学习请参阅 "解决已创建的冲突"

解决已创建的冲突

现在,您的测试与 API 服务模型之间存在冲突,请解决该冲突以使用新值更新您的测试:

  1. 单击画布中的警报以显示其详细信息,然后单击警报文本以打开“解决 REST 冲突”向导。

  2. 在第一个屏幕“选择步骤”中,选中 ReserveOrder 步骤对应的复选框,并单击“下一步”

  3. 向导中的“解决冲突”屏幕将以红色突出显示含冲突的所有步骤。

    在底部的“输出属性”区域的“更改后”框中,选择 Total_Price 属性。

  4. 单击“..之前”和“..之后”框之间的“删除”按钮以删除 Total_Price 属性。

  5. 重复以上步骤将 Order_Number 属性也删除。

  6. 单击“下一步”。“完成”屏幕应确认您已成功删除所有冲突。

  7. 单击“完成”退出向导,并确认已从画布中删除警报。

    测试中的属性名称现已更新,以反映服务模型中的新名称。

  8. 保存测试,然后继续学习本教程中的其他课程。

后续步骤: