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

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

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

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

创建固定长度数据模型

首先,需要了解我们要创建数据模型的消息格式。考虑一个信息,每个记录位于不同行上,并且仅包含两个字段:一个是 last name,一个是 first name。  每个字段都是 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. 输入 Names 作为文件名,并选择 /FixedLength 作为位置。



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



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



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



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



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

创建新的固定长度客户端

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

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



  3. 选择刚通过选择 Names:创建的数据模型Message type 组合框中的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 都包含宠物的 type 和 name。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 ,然后单击 Add 两次。

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



    2. 在行 1 中,指定 Name为 PetType , Length为 5 , Alignment为right 。
    3. 在行 2 中,指定 Name 为 PetName , Alignment为 right 。



    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