Parasoft SOAtest 具有两项功能,可在您测试的服务发生更改时帮助您对测试进行批量更新:
- 变更指导助手标识对服务的更改,这些更改会影响针对该服务的不同版本创建的任何测试,并允许您批量更新测试,而无需手动修改。
- 查找和替换允许您在测试中搜索您知道服务中已更改的值,并使用新值立即更新所有这些值。
这两个功能通常同步使用,以确保快速、准确的更新。本课程将向您展示如何使用这两种功能来更新测试。
针对服务的“旧”版本创建测试
首先为旧版本的书店服务创建一组测试。稍后,我们将使用变更指导助手和搜索查询功能来更新这些测试。
要与书店服务的旧版本进行测试,请执行以下操作:
- 创建一个新的空项目并将其命名为
变更指导助手课程
:- 前往文件> 新建> 项目。
- 选择常规> 项目。
- 点击下一步。
- 在项目名称下输入
变更指导助手课程
。 - 点击完成。
- 向此项目添加一个新的 .tst:
- 右键点击所添加项目的变更指导助手课程节点,然后选择新建> 测试 (.tst) 文件。
- 将
变更指导助手
输入到文件名称中,然后点击下一步。 - 选择 SOA> WSDL,点击下一步。
- 在 WSDL URL 中输入
http://localhost:8080/parabank/services/store-01?wsdl
。 - 确保已启用通过 WSDL 创建功能测试。
- 点击完成。
- 双击测试套件: 测试套件> 测试 2: addNewItemToInventory 打开编辑器。
- 启用 book 元素,点击编辑。
- 填充以下字段:
- Id: 输入
10
- Price: 启用 price 并输入
9.99
- stockQuantity: 输入
5
- Id: 输入
- 点击工具栏中的保存。请注意,当我们更新测试以测试书店的较新版本时,我们将确认这些值是否正确保留。
- 在测试用例浏览器中点击测试 2: addNewItemToInventory 并运行。
- 点击工具栏中的添加测试或输出。
- 在左侧窗格中选择响应 > SOAP Envelope,在右侧窗格中选择 XML 断言器,然后点击完成。
- 在断言器编辑器中,打开配置选项卡,点击添加,选择结构断言> 出现次数断言,然后点击下一步。
- 在显示的 XML 树中,点击 price,然后点击完成。
- 在出现次数断言配置下,确保选中了下拉菜单中的 == 和固定,然后在输入字段中输入
1
。
使用该断言器,我们声明元素 price
在 SOAP 响应消息中仅发生一次。如果以后在服务的更新版本中更改了此元素,我们将必须重新配置更新的测试的 XML 声明器。
执行变更影响分析
要在这些测试资产上执行变更影响分析,请执行以下操作:
- 前往窗口> 透视图> 打开透视图> Parasoft 变更指导助手打开变更指导助手透视图。
- 在测试用例浏览器中,选择变更指导助手课程> 变更指导助手课程 .tst> 测试套件: 测试套件。
- 点击工具栏中的执行变更影响分析。
- 在打开的对话框中,启用根据当前的服务描述扫描所选资产,然后点击完成。
在质量任务视图汇总,将输出更改为 SOAtest 变更影响输出,其旨在查看运行变更影响分析的结果。可以通过点击质量任务视图的 SOAtest 修改影响布局工具栏按钮
或者从下拉菜单进行选择来切换布局。没有变更影响布局工具栏按钮?
如果绿色的 SOAtest 修改影响布局工具栏按钮不存在,请选择配置内容,然后启用 SOAtest 修改影响布局。
此变更影响分析配置为将测试中保存的服务信息与测试当前引用的“实时”WSDL 中包含的服务信息进行比较。它将报告可能影响测试用例的所有 WSDL 更改。由于我们所有的测试都是在几分钟前使用此 WSDL 创建的(此后 WSDL 从未更改过),因此分析未报告任何更改。接下来,我们将看到如果运行变更影响分析和其他 WSDL 会发生什么。
- 在测试用例浏览器中,选择变更指导助手课程> 变更指导助手课程.tst> 测试套件: 测试套件。
- 点击工具栏中的执行变更影响分析。
- 启用根据指定的服务描述扫描所选资产,确保在工件类型下选择 WSDL,然后完成对话框设置,如下所示:
- 扫描使用下面的 WSDL 的资产:
http://localhost:8080/parabank/services/store-01?wsdl
- 将资产与下面的 WSDL 作比较:
http://localhost:8080/parabank/services/store-01V2?wsdl
第一个选项告诉 SOAtest 对哪个测试执行分析。第二个选项告诉 SOAtest 将比较哪些 WSDL 的测试。由于这些 WSDL 中发现的服务差异,结果现在将报告变更。
- 扫描使用下面的 WSDL 的资产:
- 点击完成。
- 在质量任务视图中,可以查看报告的变更。对于许多测试,namespace 和 targetURI 均已更改。
- 查看测试 2: addNewItemtoInventory 的结果。
- 发现报告了许多其他变更内容:
- 添加了新元素
productInfo
。 - 更改了元素
price
的名称。 - 更改了消息中元素的顺序。
- 添加了新元素
- 查看测试 2: addNewItemtoInventory 的结果。
注意,变更影响结果不会显示服务定义中的所有更改;它们仅显示实际上影响测试的服务定义更改。例如,如果当前未测试的操作中有更改,则将不会报告这些变更的变更影响结果。
创建变更模板
运行变更影响分析时,服务目录视图将自动填充有关正在分析的测试所测试的服务和服务版本的信息。
请注意如何填充商店服务和版本。默认情况下,SOAtest 不知道要测试的服务和版本的正式名称,因此它使用服务定义作为服务名称。 它还使用名称“旧版本”来表示测试当前正在测试的服务的版本,并且使用名称“当前版本”来表示新服务定义所表示的版本。通过服务目录,您可以浏览针对每个版本检测到的操作。
- 将服务和版本重命名为我们可以更好地理解的名称:
- 在服务目录中,右键点击顶部服务节点,然后选择重命名服务。
- 输入
Bookstore
作为服务名称。 - 右键点击书店服务的旧版本节点,选择重命名版本,然后使用
1.0
代替旧版本
。 - 右键点击书店服务的当前版本节点,选择重命名版本,然后使用
2.0
代替当前版本
。
接下来我们要定义一个变更模板,该模板将定义我们应该如何更新测试,以便它们测试服务器的新版本。
- 创建变更模板,如下所示:
- 在服务目录中,选择节点 1.0 和 2.0。
- 右键点击所选项,然后选择添加变更模板 1.0 -> 2.0。
- 输入
课程模板
作为文件名称,将/Change Advisor Lesson
作为位置。 - 点击完成。将打开变更模板编辑器。
- 查看已创建的变更模板的第一个选项卡。您会发现:
- 映射操作选项卡显示两个 WSDL 中定义的操作,以及不同版本的 WSDL 之间的默认映射。当 SOAtest 首次创建变更模板时,它会在不同版本之间创建默认映射,以尝试匹配它认为相同的节点。
- 绿色匹配表示 SOAtest 确信映射正确,因此不需要进行审查。
- 黄色匹配表示 SOAtest 不太确信映射的正确性,建议进行审查以确认或更新映射。
- 在这里,所有操作映射都以绿色显示 — 除了
getItemById
和getItemByIdentifier
操作之间的映射。似乎此操作已更改名称,但该操作的含义相同。这似乎是一个很好的搭配。
- 表示我们已经审查了操作
getItemById
和getItemByIdentifier
之间的映射可以通过右键点击 getItemById 并选择 标记匹配 getItemById -> get-ItemByIdentifier 为已审查”来实现。这会使匹配变成绿色。 - 查看已创建的变更模板的第二个(Map Schemas)选项卡。您会发现:
- 此选项卡显示为每个操作定义的 schema。您可以双击编辑器选项卡将其展开,这样编辑器就会变得更大。
- 这个
addNewItemToInventory
操作标有红色的“ X”,表示该操作的模式存在差异,需要检查。 - 其他操作不需要审查,因为 SOAtest 并未在那些需要审查的操作中检测到任何变更。如果您选择的每个操作都没有红色的“X”图标,则会看到所有匹配项均为绿色。
- 选择 addNewItemToInventory 操作对其进行探索。您会发现:
- SOAtest 将
price
和genre
元素匹配,但提示需要进行审查。 - 这个操作包含名为
amount
的新元素,该元素未出现在早期版本中。
- SOAtest 将
- 表示
price
和genre
元素之间的映射不正确可以通过选择 price 元素,然后点击 断开连接来实现。
这样看来,price
元素已重命名为amount
,并且genre
是 WSDL 中的新元素。 - 表示
price
元素已重命名为amount
可以通过选择 price 和 amount,然后点击连接来实现。
这个genre
元素是此操作显示的新元素。为了正确地更新测试,我们必须为将在每个更新的测试中配置的元素配置默认值。否则,更新的测试将为该新元素发送一个空值。 - 为
genre
元素配置一个默认值,如下所示:- 右键点击 genre,然后选择 为已添加元素 "genre" 配置默认值。
- 在打开的对话框中,在输入字段中输入
文学
,然后点击 OK。 - 注意,现在
genre
有一个绿色的 ‘?’,并且所有匹配和不匹配的节点现在都是绿色。这表示我们已经完成了审查和配置此操作。
- 右键点击 genre,然后选择 为已添加元素 "genre" 配置默认值。
- 通过右键点击最高的 productInfo 元素并选择 标记"productInfo" 和子系列为已审查来表示金额的三个父节点已经过审核。
- 点击工具栏中的保存,保存该模板。至此,我们的模板已经定义好,可以应用于我们的测试了。双击变更模板编辑器选项卡以将其恢复为正常大小。
应用变更模板批量更新测试
要更新受此服务变更影响的测试,请执行以下操作:
- 在测试用例浏览器中,选择变更指导助手课程.tst,然后点击工具栏中的使用变更模板重构。
- 在打开的向导中,完成第一页的内容:
- 版本:
1.0
- 更新 Parasoft 资产使用服务版本:
2.0
- 通过应用变更模板:
LessonTemplate
- 版本:
点击下一步。
在第二页,启用新的位置,然后点击工作空间并选择变更指导助手课程项目。这将导致更新的测试被保存在变更指导助手课程项目中的新文件夹中。请注意,在某些情况下,您可能想覆盖以前的测试。但是,除非您备份了测试(例如,使用源码控制系统),否则不建议这样做。不然您将会丢失原始的测试。
点击完成。将创建一个名为“变更指导助手课程”的新文件夹。此文件夹包含更新的测试。
- 打开该 .tst 文件,然后打开测试套件: 测试套件> 测试套件: CartService-Port > 测试 2: addNewItemToInventory 的编辑器。您会发现:
- 如果选择 productInfo 元素,您将看到我们为
price
元素配置的值已经转移到 amount 元素,如变更模板中所定义。 - 我们之前输入的其他值已延续到新测试中。选择 genre 元素,并注意值
文学
出现在此处,如我们的变更模板中所定义。 - 已将新的更新环境添加到新文件夹的环境节点中,并将其设置为活动环境。
- 如果选择 productInfo 元素,您将看到我们为
- 选择新文件夹 变更指导助手课程> 测试套件: 测试套件,点击工具栏中的运行变更影响分析,启用根据当前的服务描述扫描所选资产,然后点击完成。请注意,没有报告更改,因为现在更新了新测试以测试该服务的当前版本。
使用搜索和替换更新测试
变更指导助手适用于以下配置的测试:
- 针对一种支持的工件类型,并且
- 处于表单输入模式。
但是,在某些情况下不适用。例如,变更指导助手不支持采用 XML 格式的消息传送客户端。XML 声明器中的 XPath 也不会由变更指导助手更新。为了支持这种情况,SOAtest 提供了搜索和替换功能,可用于批量更新这些类型的字段。否则,在重复使用相同修改值的情况下,逐个更新字段将非常麻烦。
要使用搜索和替换来更新值,请执行以下操作:
- 右键点击新版本的 课程.tst,然后选择 使用示例配置执行测试。
- 在质量任务视图工具栏中,点击SOAtest 默认布局显示功能测试结果。
- 查看针对测试 2: addNewItemToInventory 报告的错误,并注意发生故障是因为
price
元素不再出现在响应 XML 中(请记住,它已重命名为amount
,现在出现在productInfo
元素下)。 - 选择新的变更指导助手课程文件夹中新 课程.tst,然后从工具栏转到搜索> Parasoft 查询。
- 在包含的文本字段中输入 book/price,从字段类型选项框中选择 Xpath,启用选择的资源,然后点击搜索.
搜索视图将填充搜索结果。 - 右键点击 XML 断言器下的 XPath,选择替换所选。
- 在打开的对话框中,将
book/productInfo/amount
输入到替换为字段中,然后点击 OK。 - 在为新 WSDL 创建的文件夹中选择 测试 2: addNewItemToInventory,递增 id 字段,选择运行测试工具栏按钮。现在测试应该成功,因为 XML 断言中的 Xpath 是最新的。