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

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

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

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

创建定长数据模型

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

     Smith    John
       Doe    Jane

创建此格式的定长数据模型:

  1. 创建新的空 .tst 文件:
    1. 前往文件> 新建> 项目
    2. 选择 SOAtest> 空项目,点击下一步
    3. 输入项目名称 FixedLength 并点击完成
  2. 创建新的数据模型定义文件:
    1. 前往文件> 新建> 数据模型定义文件
    2. 输入 Names 作为文件名,并选择 /FixedLength 作为位置。
    3. 点击完成。将打开数据建模编辑器。
    4. Names字段中输入名称,在说明字段中输入 First and Last Name
  3. 展开常规部分,并指定如下内容:
    • 名称 - people
    • 记录名 - person
    • 记录分隔符 - {platform newline}
  4. 选择部件行,然后点击两次添加(编辑器底部),为数据模型添加两个字段。
  5. 展开第一个字段,并指定如下:
    • 名称 - LastName
    • 对齐 - right
  6. 展开第二个字段,并指定如下:
    • 名称 - FirstName
    • 对齐 - right
  7. 保存数据模型编辑器。
  8. 点击编辑器右上角的注册数据模型目录链接。这将注册我们刚使用 SOAtest 创建的数据模型。该模型现在适用于合适的工具。

创建新的定长客户端

若要创建新的定长客户端 

  1. 找到在前面的练习中创建的 FixedLength.tst 文件。
  2. 创建新的定长客户端:
    1. 右键点击测试套件节点,选择新建> 测试
    2. 选择客户端,点击完成

  3. 点击请求选项卡,确保将输入模式设置为表单输入
  4. 更改自动生成的 person 元素,以使用 Smith 作为姓,John 作为名。
  5. 选择 people 元素并点击插入按钮,添加第二个 person 元素。

    选择新的 person 元素,然后输入 Doe 作为姓,Jane 作为名。
  6. 点击传输选项卡,在路由端点字段中输入 http://localhost:8080/parabank/echo.jsp
  7. 保存编辑器。
  8. 运行测试。
  9. 打开通讯报文查看器,验证发送的内容是否与本教程开头显示的示例消息类似。

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

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

  • 指定宠物数量的数字字段,长度为 2 个字符,以 0 填充。
  • 多个区段,每一个区段包含宠物类型和宠物名称。区段数量相当于指定宠物数量字段中的数字。宠物类型的字段为五个字符,右对齐,并且宠物名的字段为十个字符,右对齐。

下面是该数据的示例:

     Smith    John00
       Doe    Jane02    Cat   Fluffy  Dog   Spot

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

  1. 创建新的数据模型文件:
    1. 在导航器视图中,打开 FixedLength 项目。
    2. 右键点击项目并选择刷新以确保该视图为最新更新状态。
    3. 右键点击 Names.datamodel 文件,并选择复制
    4. 将其粘贴到 FixedLength 项目中。
    5. 当出现新建名称对话框时,输入 NamesAndPets.datamodel,点击 OK
  2. 双击 FixedLength 项目中新的 NamesAndPets.datamodel 文件。
  3. 为 name 字段输入 Names and Pets,并删除描述。
  4. 选择部件,然后点击添加。将添加一个新的字段。
  5. 字段更改为区段,然后再次点击添加。将添加一个新的区段。

  6. 对于顶层部分新增的(第三个)字段,展开该字段的节点,并指定如下内容:
    • 名称 - NumberOfPets
    • 类型 - integer
    • 长度 - 2
    • 对齐 - right
    • 填充 - 0
  7. 对于新的区段,展开常规节点,并指定如下内容:
    • 名称 - pets
    • 记录 - pet
    • 下个记录前提 - xpath
    • XPath - count($section/*) < $section/../NumberOfPets
  8. 选择新区段中的部件节点,确保选中了字段,然后点击两次添加
  9. 编辑组件,如下:
    1. 点击新区段中的部件节点,然后点击表格编辑
    2. 在行 1 中,指定名称PetType长度5对齐right
    3. 在行 2 中,指定 名称PetName对其right
    4. 点击返回完全数据模型
    5. 保存编辑器。
  10. 将新的定长客户端添加到 FixedLength.tst 文件的测试套件中,然后选择 Names and Pets: 作为消息类型
  11. 输入第一个人的信息,如下:
    1. 请求选项卡中,选择 people 元素。
    2. 更改默认值,如下:
      • LastName - Smith
      • FirstName - John
      • NumberOfPets - 0
    3. 删除 pets 元素。
  12. 输入第二个人的信息,如下:
    1. 选择 people 元素并点击插入,添加第二个 person 元素。
    2. 输入以下值:
      • LastName - Doe
      • FirstName - Jane
      • NumberOfPets - 2
    3. 为第二个人右键点击 pets 节点,选择插入多个,并将计数指定为 2,然后点击 OK
    4. 对于第一个宠物,指定如下内容:
      • PetType - Cat
      • PetName - Fluffy
    5. 对于第二个宠物,指定如下内容:
      • PetType - Dog
      • PetName - Spot
  13. 点击传输选项卡,将路由端点设置为 http://localhost:8080/parabank/echo.jsp
  14. 保存工具。
  15. 运行测试。
  16. 打开通讯报文查看器,验证发送的内容是否与我们正在建模的示例数据类似。

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

  • No labels