若要向 SOAP 客户端和 REST 客户端工具快速添加差异比较,可以直接在 CTP 界面创建 Diff 工具。Difff 工具将编辑器中的数据与指定的回归控件进行比较,并在发现差异时报告失败。差异工具可用于 JSON、XML、文本或二进制文件。

CTP 中添加的任何 Diff 工具都将附加到所选测试的响应上。 

此外,您可以使用 SOAtest 桌面对添加到响应流量的 Diff 工具进行编辑。使用 SOAtest 桌面对添加到请求流量的任何 Diff 工具在 CTP 都将不可见。二进制 Diff 工具可以在 CTP 中编辑,但不能添加。

Diff 工具 vs. Assertor 工具

如果要检查消息的所有部分或大部分是否匹配回归控件,请使用 Diff 工具。如果要检查消息的特定元素,并且/或者想验证除匹配之外的其他内容,请使用 Assertor 工具。

添加 Diff 工具

若要添加新的 Diff 工具:

  1. 在左窗格中,请选择希望比较其响应的 REST 客户端或 SOAP 客户端。
  2. 请选择页面级操作菜单中合适的 Add Diff 命令。


    注意,JSON Diff 工具可用于 REST 客户端,但不适用于 SOAP 客户端。 
  3. (可选)修改新建工具的名称。 
  4. 按照下面所描述,配置此工具。
  5. 保存新工具的配置。

新工具将作为输出“链接”到所选测试客户端工具的响应。数据头 Diff 工具链接到响应头。所有其他 Diff 工具链接到响应体消息。

配置 Diff 工具

若要配置 Diff工具:

  1. 请在回归控制区域中,指定“控制”值(它将与之比较所有后续结果的值)。根据所选的 Diff 类型,您可以访问文字文本编辑器、JSON 编辑器和/或 XML 编辑器(请查阅 编辑 JSON 消息 和 编辑 XML 消息 以获得更多详情和技巧)。



    根据最近的流量更新回归控制

    如果 CTP 可以访问与当前回归控件不同的新流量,则可以单击 Update Regression Control 按钮以将新流量复制到回归控制中。

  2. (只适用于 XML 或 Text/Header Diff)在 Options 区域中,根据需要修改其他配置选项。有关更多详情,请查阅 XML Diff Options Text Diff / Header Diff Options 。 
  3. (可选)在“被忽略的差异”中,指定您希望允许的任何差异(即,您不希望将差异报告为错误)。根据差异的类型,可以使用 Xpath 构造器(如 指定 XPath中所述)和/或表来指定忽略的差异。使用表格时:
    • Modify Allowed 接受指定属性的不同值。
    • Insert Allowed 接受一个新的/附加属性(您需要将其添加到表中)。
    • Delete Allowed 接受指定属性的缺失。 
    • 单击表行内以在 AllowedNot Allowed之间进行切换。

       


XML Diff 选项

选项说明
Diff engine指定使用的差异引擎。默认为 XMLUnit;它支持大量的消息、生成大量差异的比较,以及忽略元素顺序变化的能力。在旧版本的 SOAtest 工具中创建的 Diff 工具可以配置为使用 VMTools 或 ExamXML MDCXML。
Ignore element order配置该工具以忽略每个处理过的文档的所有区域中的元素顺序。注意,如果更希望忽略文档特定部分的顺序,那么在将文档传递给 Diff 工具之前,请使用 SOAtest XML 排序工具对该部分进行排序。 
SOAP mode如果选择了该选项,则启用以下操作: 
  • SOAP 多引用在进行差异比较之前被解析,不会被报告为错误。例如,某些服务在使用 SOAP 多引用(如,为引用提供不同的 id 号)时以不可预知的行为重新排列 XML 响应。当这些响应在文本模式中不同时,即使 SOAP 消息在逻辑上等价(但它们的引用不同),也会发生失败。
  • 忽略 type 和 arrayType 属性中命名空间的前缀更改。当自动从 WSDL 中生成控件时,需要这一点,因为前缀不能提前确定 
  • 数值用数字来比较。例如,1 和 1.0 之间的差异不会作为错误来报告。


 

Text Diff / Header Diff 选项

  
Regular expression

确定是否将预期值被解析为正则表达式。如果未选择该框,则控制值将不会被解析为正则表达式。如果选择了该框,则控制值将被解析为正则表达式。

例如,可以输入以下正则表达式:

Java[a-zA-Z ]+\Q(\E[4-9]+th Edition\Q)\E

实际提取的字符串可能如下:如何使用 Java 编程(第四版)

正则表达式将解析上面的字符串,检查“Java”是否作为第一个子字符串出现,后面紧跟一个或多个匹配项(在开括号和闭括号后面用 + 运算符表示),而匹配项仅限于 a-z 和 A-Z 以及空格之间的字母。注意,通过添加 \Q 和 \E 来进行转义。之所以需要这样做,是因为开括号和闭括号可以是正则表达式的一部分,因此如果它们表示为子字符串,则需要转义它们。我们还有一个数字出现在第一个开括号后面,它由 [4-9]+ 表示。这指定介于 4 和 9 之间的数字至少出现一个匹配项,并后面紧跟着“th Edition”。最后,使用 \Q\E 转义闭括号。

Ignore whitespace

确定是否忽略输入行和差异控件行中开始和结尾出现的空白行和空白字符。如果未选择该框,空白行和前导/后置空白将造成回归测试失败。如果选择了该框,将忽略空白行和前导/后置的空白字符。

下列任何一种都表示为空白字符表:水平制表、换行、换页、回车、空格。空白行是包含一个或多个空白字符的行。

  • No labels