本主题介绍比较工具,它在 SOAtest 和 Virtualize 中将传入的数据和报告差异与保存的数据进行对比。
章节目录:

了解比较工具

比较工具支持二进制、文本、XML 和 JSON,是当前最佳实践回归测试解决方案的支柱。比较工具将编辑器中的数据与从另一个工具输出中(或从指定的另一个输入中)接收到的数据进行比较,并在发现差异时报告失败。

比较项目配置面板划分为两个主要部分。上半部分包含常规选项。下半部分包含回归控制忽略区别选项选项卡,可以在其中配置选项用于比较文本、二进制、JSON 和 XML 格式的数据。

在测试套件中为比较工具配置回归选项

若要在测试套件中对所有用于比较回归控制的逻辑和数据源使用进行自定义:

  • 双击测试套件的测试用例浏览器节点并修改可用选项,这在回归选项中有所描述。

和其他工具一样,如果向项目中添加源,则可以为该工具指定数据源。用于比较工具的数据源指定用于提供控制值的数据源。 有关数据源的更多详情,请参阅使用数据源、变量或来自其他测试的值对测试进行参数化

二进制比较模式

比较模式下拉菜单中选择二进制。查看二进制文件的差异。

回归控制

此设置确定将什么数据源值、文件或文本用作“control”值(用于比较所有后续结果的值)。选择其中一项以下选项。

  • 编辑器:从下拉菜单中选择此选项,并在相关字段中输入用作回归控制的文本内容。

  • 文件:从下拉菜单中选择此选项,并指定用作回归控制的文件。如果要保证该文件路径始终相对于项目文件,则启用保留为相对路径选项。

  • 数据源列:从下拉菜单中选择此选项,并指定特定数据源列中的值作为回归控制。该选项仅适用于包含数据源的项目。

文本比较模式

比较模式下拉菜单中选择文本,以访问该模式的以下配置选项。

回归控制

确定将什么数据源值、文件或文本用作“control”值(用于比较所有后续结果的值)。从以下选项中选择一项。

  • 编辑器:从下拉菜单中选择此选项,并在相关字段中输入用作回归控制的文本内容。

  • 文件:从下拉菜单中选择此选项,并指定用作回归控制的文件。如果要保证该文件路径始终相对于项目文件,则启用保留为相对路径选项。

  • 数据源列:从下拉菜单中选择此选项,并指定特定数据源列中的值作为回归控制。该选项仅适用于包含数据源的项目。

忽略区别

在比较工具文本模式的忽略区别选项卡中,可以通过点击删除按钮删除任何已忽略的文本差异

选项

文本模式的比较工具选项选项卡中提供以下选项。

  • 正则表达式:确定是否将预期值被解析为正则表达式。如果未选择该框,则控制值将不会被解析为正则表达式。如果选择了该框,则控制值将被解析为正则表达式
    例如,可能输入以下正则表达式:
    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 转义闭括号。有关支持的正则表达式语法的更多信息,请点击此处
  • 忽略空格:确定是否忽略输入行和比较控件行中开始和结尾出现的空白行和空白字符。如果未选择该框,空白行和前导/后置空白将造成回归测试失败。如果选择了该框,将忽略空白行和前导/后置空白。
    空白字符包括:水平制表、新行、表格回馈、回车、空格。空白行是包含一个或多个空白字符的行。
  • 输出结果为 UNIX 类型差异:确定比较输出格式。如果未选择该框,则输出将以表格式进行显示。如果选择了该框,则输出将以 UNIX 格式进行显示

XML 比较模式

比较模式下拉菜单中选择 XML 比较选项,以访问 XML 格式的选项。XML 模式解析 XML 文件,并按元素和属性对它们进行比较。(忽略 “ignorable” 空白字符)。比较结果表现为 XML 文档。如果希望使用该模式,请确保两个输入都是格式良好的 XML 文档,且它们具有相同类型的文档元素。 

回归控制

确定将什么数据源值、文件或文本用作“control”值(用于比较所有后续结果的值)。回归控制设置包含两个配置 XML 消息的图形表现形式。

字面量 XML 回归控制

在比较工具的回归控制选项卡中,XML 字面量模式有以下选项可用。

    • 编辑器:从下拉菜单中选择此选项,并在相关字段中输入用作回归控制的文本内容。

    • 文件:从下拉菜单中选择此选项,并指定用作回归控制的文件。如果要保证该文件路径始终相对于项目文件,则启用保留为相对路径选项。

    • 数据源列:从下拉菜单中选择此选项,并指定特定数据源列中的值作为回归控制。该选项仅适用于包含数据源的项目。

  • 从 WSDL 设置:使用基于 WSDL 的预期响应初始化表单 XML 内容。该按钮仅在特定 SOAP 客户端存在 WSDL 文档时可用。

表单 XML 回归控制

将表单 XML 选择作为回归控制模式时,回归控制选项卡中的选项被划分为 XML 视图树和 XML 配置选项卡。

XML 树将字面量 XML 显示为树,每个树节点表示一个元素。比较面板中树的选项可以使用与 SOAP 客户端工具的表单 XML SOAP Envelope 选项相同的风格进行配置。  更多信息,请参阅操作 XML 视图树

在 XML 配置选项卡中可对 XML 组件进行添加、删除和重命名操作。用于 XML 配置选项卡的选项可以使用与 SOAP 客户端工具的表单 XML SOAP 消息封套选项相同的风格进行配置。更多信息,请参阅操作 XML 配置选项卡

XML 忽略区别

XML 模式下比较工具的忽略区别选项卡中,可以通过点击相应按钮对 Xpath 设置进行添加修改操作。有关配置忽略区别的更多信息,请参阅Understanding XPaths

XML 选项

XML 模式下比较工具的选项选项卡中有以下选项可用。

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

使用  ExamXML MDCXML

ExamXML 是 A7Soft 独立购买且授权的第三方工具。如果选择 ExamXML MDCXML,请确保指定可执行文件和选项文件的位置。
注意:

  • 使用此集成测试的版本包括 4.74 和 4.38。
  • MDCXML.exe 选项文件包括 mdcxml 的各种设置,其中包括忽略的元素列表。在 A7Soft Web 网站 http://www.a7soft.com/mdcxml.html中提供了一个选项文件的示例。
  • 该选项文件需要包含以下最小设置(使用不支持以下参数的不同值):

    • ValidationErrorAsFatal=0
    • InsertPI=1
    • InsertTags=0
    • InsertComments=0
  • 要使用 ExamXML 模式,比较工具的控制台内容必须在文件中提供。 

可以通过将预期内容保存到文件中自动创建外部回归控制,而不是按照配置回归测试中的描述将其嵌入到比较工具。

使用 VMTools

 产品中包含了 VMTools。不需要额外的许可证。如果选择 VMTools,那么可以指定以下内容:

  • 输出结果为 XML:确定比较输出格式。如果未选择该框,则输出将以表格式进行显示。如果选择了该框,则输出将以 XML 格式进行显示。只有当另一个工具链接到比较工具的消息输出时,才会反映出差异。

  • SOAP 模式:如果选择了该框,则启用以下操作:
    • SOAP 多引用在进行差异比较之前被解析,不会被报告为错误。例如,某些服务(如 Axis)在使用 SOAP 多引用(如,为引用提供不同的 id 号)时以不可预知的行为重新排列 XML 响应。当这些响应在文本模式中不同时,即使 SOAP 消息在逻辑上等价(但它们的引用不同),也会发生失败。
    • 忽略 type 和 arrayType 属性中命名空间的前缀更改。当自动从 WSDL 中生成控件时,需要这一点,因为前缀不能提前确定
    • 数值用数字来比较。例如,1 和 1.0 之间的差异不会作为错误来报告。

在特定条件下,VMTools 将回调基于文本的差异。如果 XML 非常复杂,并且产生了过多的差异,或者需要花费过多的时间来完成,就会发生这种情况。

如果发生这种情况,其中一项以下消息将被打印到控制台视图中,以解释发生了什么。

未运行 XML 比较,差异过多。相反地,指定文本模式进行差异比较。

没有运行 XML 比较,没有在 30.0 秒内完成。相反地,指定文本模式进行差异比较。

切换为文本模式之前执行 XML 比较允许的最大时间为首选项面板的 Misc 选项卡中(连接设置> 默认的超时)指定的默认超时值,但不超过 120 秒。

JSON 比较模式选项

从比较工具的比较模式下拉菜单中选择 JSON 后,可以使用回归控制和已忽略差异选项。

回归控制

JSON 模式下比较工具的回归控制卡中有以下选项可用。

  • 名称:指定比较工具名。
  • 回归控制源:确定将什么数据源值、文件或文本用作“control”值(用于比较所有后续结果的值)。

    • 编辑器:从下拉菜单中选择此选项,并在相关字段中输入用作回归控制的文本内容。

    • 文件:从下拉菜单中选择此选项,并指定用作回归控制的文件。如果要保证该文件路径始终相对于项目文件,则启用保留为相对路径选项。

    • 数据源列:从下拉菜单中选择此选项,并指定特定数据源列中的值作为回归控制。该选项仅适用于包含数据源的项目。

忽略区别

JSON 模式下比较工具的忽略区别选项卡中,可以通过点击相应按钮对 XPath 设置进行添加删除操作。

了解 XPath

当以 XML 模式配置比较工具时,在实际值和预期值之间发现的任何差异都用 XPath 表示。XPath 表示 XML 元素的位置,指定发生差异的位置、发生的差异类型,以及此差异是因为更改、插入还是因为删除引起的。

可以确定在运行比较工具时忽略哪些 XPath。可以选择是忽略完整路径,还是忽略特定 Xpath 操作,如 Content: Insert 操作。

对于忽略通常会导致回归测试失败的瞬态值,忽略 Xpath 非常有用。例如,实际输出可能包含一个不断变化的时间戳值。由于该值是不一样的,它将更不可能匹配比较工具中配置的值,该值正好造成测试失败。因此,可以指定忽略此值的 XPath,这样测试就不会失败。

将 Xpath 设置为忽略有三种不同的方法:

  • 通过质量任务视图忽略 XPath:这是配置比较工具忽略 Xpath 最简单的方式。回归测试失败后,只需右键点击质量任务视图节点,选择要忽略的 XPath 即可。
  • 在比较工具 GUI 中手动输入 XPath:可以通过点击比较工具 GUI 中的配置忽略区别按钮手动输入 XPath。
  • 通过表单 XML 树忽略 XPath:可以右键点击表单 XML 树中的元素节点,并根据所选元素将 XPath 配置为忽略。

忽略质量任务视图中的 XPath

在比较工具中输入要忽略的 XPath 时,最简单方法的就是在质量任务视图中右键点击,而不是手动在比较工具 GUI 中输入 Xpath 位置。回归测试失败后,XPath 位置显示在质量任务视图的树表单中:

回归测试失败后,若要忽略质量任务视图中的 XPath:

  1. 右键点击该错误,然后从快捷菜单中选择忽略 XPath。将显示一个忽略的 XPath 设置对话框,并自动输入所选的 XPath。



  2. 选择要忽略的 XPath 操作的相应复选框。可选择以下选项:
    • XPath:指定所选定的 XPath 位置。
    • 递归:选择将已忽略的 Xpath 设置应用于子元素。
    • 文本内容(修改/插入/删除):选择要忽略的内容操作。
    • 元素/子树(插入/删除):选择要忽略的元素或子树操作。
    • 属性(修改/插入/删除):选择要忽略的属性操作。如果选择了该字段,SOAtest 将只忽略 XPath 中指定的属性名。若要忽略指定的属性,请在紧靠属性复选框的字段中输入属性名。如果希望忽略元素 Xpath 位置上的多个属性,请保留属性名为空或使用通配符 * (例如,myAttribute*)。
    • 元素名和命名空间(修改/插入/删除):选择要忽略的元素名操作。
  3. 然后点击 OK

    现在将在以后的测试运行中忽略指定的 XPath。此外,指定的 Xpath 现在出现在比较工具中 XML 模式的忽略区别选项卡中。若要修改 XPath,请参阅Modifying XPath Settings

手动输入要忽略的 XPath

也可以将要忽略的 XPath 手动键入或粘贴到比较工具配置面板中。

若要手动输入 XPath:

  1. 则可在比较工具的文本XMLJSON 模式中选择忽略区别选项卡。
  2. 点击添加按钮。将在已忽略的 XPath 列表的 XPath 列中显示一个空字段。默认,Settings 列填充指定的所有 XPath 操作,它意味着您添加的整个 Xpath 将被忽略。若要指定要忽略的单个 XPath 操作,请参阅Ignoring XPaths from the Form XML Tree
  3. 要么在空的 XPath 字段中输入 XPath 位置。
  4. 若要添加额外的 Xpath,请重复步骤 1 到步骤 3。
  5. 点击 OK 按钮。

在以后运行修改的回归测试中,所有添加的 Xpath 将都被忽略。有关修改被忽略的 Xpath 的信息,请参阅Modifying XPath Settings

忽略表单 XML 树中的 XPath

通过完成以下内容,也可以直接忽略表单 XML 选项卡中表单 XML 树中的 XPath:

  1. 右键点击树中的元素节点,然后从快捷菜单选择设置忽略的 XPath
    • 如果从表单 XML 树中选择的元素不是重复元素,则将显示一个忽略的 XPath 设置对话框,并自动输入所选定 XPath。



    • 如果从表单 XML 树中选择的元素是具有相同本地名称的兄弟元素的重复元素,则会显示一个重复的 XPath 设置对话框。



      您可以选择忽略全部的重复元素,或者选择仅忽略所选元素。选择并点击 OK后,将显示一个忽略的 XPath设置对话框,并自动输入所选定的 XPath。
  2. 选择要忽略的 XPath 操作的相应复选框。可选择以下选项:
    • XPath:指定所选定的 XPath 位置。
    • 递归:选择将已忽略的 Xpath 设置应用于子元素。
    • 文本内容(修改/插入/删除):选择要忽略的内容操作。
    • 元素/子树(插入/删除):选择要忽略的元素或子树操作。
    • 属性(修改/插入/删除):选择要忽略的属性操作。如果选择了该字段,则只会忽略 Xpath 中指定的属性名。若要忽略指定的属性,请在紧靠属性复选框的字段中输入属性名。如果希望忽略元素 Xpath 位置上的多个属性,请保留属性名为空或使用通配符 * (例如,myAttribute*)。

    • 元素名和命名空间(修改/插入/删除):选择要忽略的元素名操作。
  3. 点击 OK
    选中的元素节点在表单 XML 树中显示为灰色。在以后运行修改的回归测试时,指定的所有 Xpath 操作都将被忽略。
    若要重新配置并不再忽略 Xpath 时,那么右键点击忽略的 Xpath 节点并从快捷菜单中选择删除忽略的 XPath。然后节点将以黑色显示并不再被忽略。

创建被忽略的 Xpath 的共享列表

比较工具可以有自己的本地、排他的忽略 Xpath 设置,也可以引用其他比较工具可以使用的 Xpath 列表。 

修改 Xpath 设置

默认情况下,当向忽略区别选项卡添加 Xpath 时,该 Xpath 的所有可能操作都将显示在设置列。由于 Xpath 的所有可能操作都是默认指定的,所以在下一次运行回归测试时将忽略所有这些操作。然而,可以通过修改 Xpath 设置指定忽略哪些操作,而不是忽略所有操作。

若要修改 Xpath 设置:

  1. 在忽略设置选项卡中,选择想要修改的 XPath,然后点击修改按钮。将显示一个忽略的 Xpath 设置对话框。



  2. 选择要忽略的 XPath 操作的相应复选框。可选择以下选项:
    • 递归:选择将已忽略的 Xpath 设置应用于子元素。
    • XPath:指定所选定的 XPath 位置。
    • 文本内容(修改/插入/删除):选择要忽略的内容操作。
    • 元素/子树(插入/删除):选择要忽略的元素或子树操作。
    • 属性(修改/插入/删除):选择要忽略的属性操作。如果选择了该字段,则只会忽略 Xpath 中指定的属性名。若要忽略指定的属性,请在紧靠属性复选框的字段中输入属性名。如果希望忽略元素 Xpath 位置上的多个属性,请保留属性名为空或使用通配符 *(例如,myAttribute*)。

    • 元素名和命名空间(修改/插入/删除):选择要忽略的元素名操作。
  3. 然后点击 OK

在以后运行修改的回归测试中,所有指定的 Xpath 操作将都被忽略。


视频教程

在此视频中,您将了解如何生成和更新回归控制。

  • No labels