将数据源添加到测试套件之后,可以将数据源值与 SOAtest 工具一起使用,以进一步扩展测试套件的功能。数据源可用于参数化工具中的值,如 SOAP 客户机、消息传递客户机、浏览器回放工具、DB 工具、Diff 工具等等。可以配置 SOAP 客户机和消息传递客户机工具,将数据源值作为请求的一部分发送到服务器。然后可以配置 Diff 工具,将响应与数据源中的另一组值进行比较。

例如,考虑服务的功能测试,该服务接收 U.S. 首都城市的名称并返回相应州的名称。在本例中,有两个值不同的列的数据源。第一列包含城市作为值,第二列包含状态作为值,将被添加到测试套件中。可以将 SOAP 客户机工具配置为发送从第一列中提取输入的请求。然后将 Diff 工具配置为将实际响应与第二列中的输入进行比较。以这种方式使用 SOAP 客户机和 Diff 工具是功能测试中一个非常强大的选项,因为将循环并检查数据源每一行中的每个值。

是否要为同一工具动态指定不同的数据源?

可以使用数据组实现这一点。有关更多详情,请查阅 配置允许在多个数据源之间切换的数据组数据源 。

了解数据源迭代

了解测试执行选项将如何影响数据源迭代是很重要的。关于测试执行设置的更多详情,请查阅 配置测试套件属性 - 测试流逻辑、变量等。以下执行选项将影响数据源迭代:

  • Individually Runnable: 当在测试套件的执行选项中选择 Individually Runnable 时,测试套件中的每个测试将遍历数据源的每一行,然后再继续下一个测试。
  • Scenario: 当没有选择 Individually Runnable 时,测试套件中的每个测试都将在迭代到下一个数据源行之前执行。

例如,如果一个测试套件包含测试 A 和测试 B,它们都使用一个具有三行数据的数据源,则会发生以下执行模式:

  • Individually Runnable: 测试 A:第 1 行,测试 A:第 2 行,测试 A:第 3 行,测试 B:第 1 行,测试 B:第 2 行,测试 B:第 3 行
  • Scenario (Non-Individually Runnable): 测试 A:第 1 行,测试 B:第 1 行,测试 A:第 2 行,测试 B:第 2 行,测试 A:第 3 行,测试 B:第 3 行

如果使用 XML 数据库在测试套件中的测试用例之间传递值,那么无论是否选择 Individually Runnable ,都会自动将测试套件置于“场景模式”。数据源迭代的行为就好像没有选择 Individually Runnable 一样。有关使用 XML 数据库的更多详情,请查阅 XML 数据库

配置 SOAP 客户机和 Diff 工具来使用数据源

若要配置 SOAP 客户机和 Diff 工具来发送和比较数据源值:

  1. 如果还没有这样做,请添加想要使用的数据源,如 在测试套件、项目或全局级别添加数据源中所述。
  2. 在测试用例资源管理器中双击所需的 SOAP Client 节点,并从右侧 GUI 面板中的 Data Source 组合框中选择适当的数据源。
    • 除非先前向测试套件添加了数据源,否则 Data Source 组合框不会显示。如果只有一个数据源可用,SOAP 客户机工具将默认为该数据源。如果有多个数据源可用,SOAP 客户机工具将默认为 Tests 选项卡中列出的第一个数据源。
  3. 完成项目配置面板中 SOAP 客户机节点的其余字段,如 SOAP 客户端中所述。
  4. 选择 SOAP 客户机 节点并单击 Add Test or Output 工具栏按钮。将显示一个 Add Output 向导。
  5. 在 Add Output 向导中,从左侧窗格中选择 Request> SOAP Envelope ,从右侧窗格中选择 Diff ,并单击 Finish。将 Diff 节点添加到 SOAP 客户机节点。
  6. 双击 Diff ,打开工具配置面板。
  7. 从 Data Source 框中选择适当的数据源。你选择的数据源必须与为 SOAP 客户机指定的数据源相同。
  8. 在 Regression control source 框中,选择 Data Source
  9. 在 Data Source Column 框中,从组合框中选择要 Diff 工具比较响应的列。
  10. 完成 Diff 工具配置设置,如 Diff中所述。

现在,你可以通过选择 SOAP 客户机节点并单击 Test 工具栏按钮。结果将显示在右边的 GUI 面板中。

参数化不同大小的数组 

SOAtest 还允许映射数据源中的分层数据结构。

假设你有一个收集信息来构建家谱的 web 服务。发送的信息如下:

<ns1:People xmlns:ns1="http://www.example.org/ParentChildGrandChild">
 <ns1:Person>
  <ns1:Name>GrandPa</ns1:Name>  
  <ns1:Age>85</ns1:Age>
  <ns1:Child>
   <ns1:Name>Daddy</ns1:Name>   
   <ns1:Age>55</ns1:Age>
   <ns1:Child>
    <ns1:Name>FirstSon</ns1:Name>
    <ns1:Age>25</ns1:Age>
   </ns1:Child>
   <ns1:Child>
    <ns1:Name>SecondSon</ns1:Name>
    <ns1:Age>22</ns1:Age>
   </ns1:Child>
  </ns1:Child>
 </ns1:Person> </ns1:People>

它表示一个如下族谱:

  • GrandPa
    • Daddy
      • FirstSon
      • SecondSon


如何设置一个“数组数据源”,该数据源可用于更改 XML 中的子代和子代的数量? 首先,设置数据源,然后使用它参数化表单输入,如下面的部分所述。

设置数据源

假设我们要发送以下 2 个家庭的家谱信息。

  • GrandPa
    • Daddy
      • FirstSon
      • SecondSon
  • GrandMa
    • Mommy
      • FirstDaughter
      • SecondDaughter
    • FirstAunt
    • SecondAunt
      • FirstCousin
      • SecondCousin

若要设置此场景的数据源: 

  1. 创建一个 Excel 电子表格与 3 张表,其表名为:FirstGeneration, SecondGeneration, ThirdGeneration.

  2. 填写 FirstGeneration 表。



    注意 SecondGeneration dsref* 列。  这就是我们如何表示 FirstGeneration 的子元素将来自 SecondGeneration 表。  (dsref* 表示 Data Source REFerence。)
  3. 填写 SecondGeneration 表。




    注意 ThirdGeneration dsref* 列。还要注意 ParentIndex 列。ParentIndex 列的值指示与 SecondGeneration 相关的 FirstGeneration。  
    例如,Daddy 关联第一张 FirstGeneration 表或 GrandPa。Mommy、FirstAunt 和 SecondAunt 关联第二张 FirstGeneration 表或 GrandMa。
  4. 填写 ThirdGeneration 表。



    再次注意 ParentIndex 列。注意,这里没有 ParentIndex 3,因为 FirstAunt 没有任何孩子。

参数化表单输入

改变 XML 中子代和子代的数量的下一步是参数化表单输入,如下所示:

  1. 创建一个新的空 .tst 文件,将其命名为 ArrayDataSource.tst
  2. 添加一个指向前面步骤中创建的 Excel 电子表格的 Excel 数据源。选择 FirstGeneration 作为工作表。
  3. 创建新的消息传递客户机。
  4. 如下消息传递客户机:
    • 将 Schema URL 设置为 http://soatest.parasoft.com/ParentChildGrandChild.xsd
    • 将 RtouterEndpoint 设置为 http://ws1.parasoft.com:8080/examples/servlets/Echo
  5. 设置表单输入,如下所示:
    People
    • Person
      • Name – Parameterized to: Name
      • Age - Parameterized to: Age
        • Child
        • Name - Parameterized to: SecondGeneration:Name(SecondGeneration 表中的 Name 列)
        • Age - Parameterized to: SecondGeneration:Age(SecondGeneration 表中的 Age 列)
          • Child
          • Name - Parameterized to: SecondGeneration:ThirdGeneration:Name(ThirdGeneration 表中的 Name 列)
          • Age - Parameterized to: SecondGeneration:ThirdGeneration:Age(ThirdGeneration 表中的 Age 列)

  6. 运行测试。

在流量查看器中,XML 应该反映数据源中的家庭信息。

  • No labels