SOAtest 支持灵活的固定长度消息格式。由于存在很多不同的固定长度格式(并且没有单个标准),Parasoft SOAtest 很容易配置为识别组织团队使用的任何固定长度消息格式。这使我们能够使用任何固定消息类型时,利用 SOAtest 丰富的接口进行消息配置、发送和验证。

为了在 SOAtest 中配置并验证固定长度消息,需要执行以下一次性的配置:

  1. 定义数据模型,描述您的固定长度数据格式。
  2. 注册数据模型,以便 SOAtest 可以在固定长度客户端(和其他可应用的工具)中使用它。

此时,您便可以在固定长度客户端、固定长度回调工具和 XML 转换器中使用数据模型。可以在配置固定长度客户端中的消息,并在固定长度客户端输出中配置验证。

创建固定长度数据模型

首先,需要了解我们要创建数据模型的消息格式。考虑一个信息,每个记录位于不同行上,并且仅包含两个字段:一个是姓,一个是名。  每个字段都是 10 个字符长度,右对齐,并由空格填充。

     Smith    John
       Doe    Jane

若要创建此格式的固定长度数据模型:

  1. 创建一个新的空 .tst 文件,如下:
    1. 选择 File> New> Project
    2. 选择 SOAtest> Empty Project,然后单击 Next
    3. 输入项目名称(固定长度),然后单击 Finish
  2. 创建一个新的空数据建模定义文件,如下:
    1. 跳转至 File> New> Data Model Definition File
    2. 输入 名称 作为文件名,并选择 /FixedLength 作为位置。



    3. 单击 Finish。将打开数据建模编辑器。
    4. Name 字段中输入 名称 ,在 Description 字段中输入



  3. 展开 General 部分,并指定如下:
    • Name - people
    • Record name - person
    • Record separator - {platform newline}



  4. 选择 Components 行,然后单击 Add按钮(编辑器底部)两次,向数据模型添加两个字段。



  5. 展开第一个字段,并指定如下:
    • Name - LastName
    • Alignment - right
  6. 展开第二个字段,并指定如下:
    • Name - FirstName
    • Alignment - right



  7. 保存数据模型编辑器。
  8. 单击编辑器右上角中的 Register data model directory 链接。这将注册我们刚使用 SOAtest 创建的数据模型。该模型现在适用于合适的工具。

创建新的固定长度客户端

若要创建新的固定长度客户端: 

  1. 找到在以前练习中创建的 FixedLength.tst 文件。
  2. 创建新的固定长度客户端,如下:
    1. 右键单击测试套件节点,然后选择 Add New> Test
    2. 选择 Fixed Length Client,然后单击 Finish



  3. 选择刚通过选择 Names:创建的数据模型 Message type 组合框中的Names: First and Last Name 。



  4. Request 选项卡,确保输出模式设置为 Form Input
  5. 更改自动生成的 person 元素,以使用 Smith 作为姓, John 作为名。



  6. 通过选择 people 元素,然后单击表下的 Insert 按钮,添加第二个 person 元素。



    选择新的 person 元素,然后输入 Doe 作为姓, Jane 作为名。



  7. Transport 选项卡,在 Router Endpoint 字段中输入 http://localhost:8080/parabank/echo.jsp  。



  8. 保存编辑器。
  9. 运行测试。
  10. 打开流量视图器,验证发送的内容是否与本教程开头显示的示例消息类似。

使用可变数量的重复段扩展固定长度的数据模型

现在让我们假设,对于每个人,我们想要指定该个人拥有的宠物的可变数量。我们将从上面使用的数据格式开始,但是对于每个记录,我们将添加以下内容:

  • Number 字段指定宠物的数量为 2 个字符,用 0 填充。
  • 可变数量的 sections,其中每个 section 都包含宠物的类型及其名字。sections 的数量等价于指定宠物数字段中的数量。宠物类型的字段为 5 个字符,后对齐,并且宠物名的字段为 10 个字符,右对齐。

下面是该数据的示例:

     Smith    John00
       Doe    Jane02    Cat   Fluffy  Dog   Spot

让我们从现有的数据模型开始,将其扩展为一个新的数据模型:

  1. 创建一个新的数据模型文件,如下:
    1. 在导航器视图中,打开 FixedLength 项目。
    2. 右键单击项目并选择 Refresh 以确保该视图为最新更新状态。
    3. 右键单击 Names.datamodel 文件,并选择 Copy



    4. 将其粘贴到 FixedLength 项目中。
    5. 当出现“新建名称”对话框时,输入 NamesAndPets.datamodel。



  2. 双击 FixedLength 项目中新的 NamesAndPets.datamodel 文件。
  3. 为 name 字段输入 Names and Pets ,并删除描述。
  4. 选择 Components ,然后单击 Add。将添加一个新的 field。
  5. Field 更改为 Section,然后再次点击 Add。将添加一个新的 section。





  6. 对于顶层部分新增的(第三个)字段,展开该字段的节点,并指定如下内容:
    • Name - NumberOfPets
    • Type - integer
    • Length - 2
    • Alignment - right
    • Padding - 0



  7. 对于新的 section,展开 General 节点,并指定如下内容:
    • Name - pets
    • Recordname - pet
    • Criteriafornextrecord - xpath
    • XPath - count($section/*) < $section/../NumberOfPets
  8. 选择新 section 中的 Components 节点,确保选中了 Field ,然后单击 添加 两次。

  9. 编辑组件,如下:
    1. 选择新 section 中的 Components 节点,然后单击Edit in Table 



    2. 在行 1 中,指定 NamePetTypeLength5Alignmentright
    3. 在行 2 中,指定 NamePetNameAlignmentright



    4. 单击 Returnto Full Data Model
    5. 保存编辑器。
  10. 将新的固定长度客户端添加到 FixedLength.tst 文件的测试套件,然后选择 Names and Pets:作为 Message type

  11. 输入第一个人的信息,如下:
    1. Request 选项卡中,选择 people 元素。
    2. 更改默认值,如下:
      • LastName - Smith
      • FirstName - John
      • NumberOfPets - 0



    3. 删除 pets 元素。

  12. 输入第二个人的信息,如下:
    1. 通过选择 people 元素,然后单击以下表中的 Insert 按钮,添加第二个 person 元素。
    2. 输入以下值:
      • LastName - Doe
      • FirstName - Jane
      • NumberOfPets - 2



    3. 为第二个人右键单击 pets 节点,选择 Insert Multiple,并将 Count指定为 2 ,然后单击 OK
    4. 对于第一个宠物,指定如下内容:
      • PetType - Cat
      • PetName - Fluffy
    5. 对于第二个宠物,指定如下内容:
      • PetType - Dog
      • PetName - Spot

  13. Transport 选项卡中,将 RouterEndpoint 设置为 http://localhost:8080/parabank/echo.jsp
  14. 保存工具。
  15. 运行测试。
  16. 打开流量视图器,验证发送的内容是否与我们正在建模的示例数据类似。

与这些练习相关的 .tst 文件可以在 <SOAtest install dir>/examples/tests/FixedLength.tst中找到。

  • No labels