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

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

是否要为同一工具动态指定不同的数据源?可以使用数据组实现这一点。详情请参阅配置允许在多个数据源之间切换的数据组数据源

了解数据源迭代

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

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

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

  • 单独运行:测试 A:第 1 行,测试 A:第 2 行,测试 A:第 3 行,测试 B:第 1 行,测试 B:第 2 行,测试 B:第 3 行
  • 场景(非单独运行):测试 A:第 1 行,测试 B:第 1 行,测试 A:第 2 行,测试 B:第 2 行,测试 A:第 3 行,测试 B:第 3 行

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

配置 SOAP 客户端和比较工具来使用数据源

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

  1. 如果还没有这样做,请添加想要使用的数据源,如在套件、项目或全局级别添加数据源中所述。
  2. 在测试用例浏览器中双击所需的 SOAP 客户端节点,并从右侧 GUI 面板中的数据源组合框中选择适当的数据源。
    • 除非先前向测试套件添加了数据源,否则数据源下拉菜单不会出现。如果只有一个数据源可用,SOAP 客户端工具将默认为该数据源。如果有多个数据源可用,SOAP 客户端工具将默认为 Tests 选项卡中列出的第一个数据源。
  3. 完成项目配置面板中 SOAP 客户端节点的其余字段,如 SOAP 客户端中所述。
  4. 选择 SOAP 客户端节点,然后点击工具栏中的添加测试或输出。将打开添加输出向导。
  5. 在添加输出向导左侧窗格中选择请求 > SOAP Envelope,在右侧窗格中选择 比较,然后点击完成。将比较节点添加到 SOAP 客户端节点。
  6. 双击比较,打开工具配置面板。
  7. 数据源下拉菜单中选择相应的数据源。您选择的数据源必须与为 SOAP 客户端指定的数据源相同。
  8. 回归控制源下拉菜单中选择数据源
  9. 数据源列下拉菜单中选择需要比较工具比较响应的列。
  10. 根据比较工具的说明完成比较工具配置设置。

现在,您可以通过选择 SOAP 客户端节点并点击运行测试工具栏按钮。结果将出现在右边的 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 中子孙的数量?首先,设置数据源,然后使用它参数化表单输入,如下面的部分所述。

设置数据源

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

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

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

  1. 创建一个 Excel 电子表格与三张工作表,分别命名为: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: 名称
      • 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