Parasoft SOAtest有两个功能,可以帮助您在测试服务发生更改时对测试进行批量更新:SOAtest 具有两项功能可在您测试的服务发生更改时帮助您对测试进行批量更新:
- Change Advisor 标识服务的更改,这些更改将影响针对不同版本服务创建的任何测试,并允许批量更新测试,而无需逐个手动修改。 可识别对服务的更改,这些更改会影响针对该服务的不同版本创建的任何测试,并允许您批量更新测试,而不必手动逐一修改它们。
- Search 和 and Replace 允许在测试中搜索您所知道服务中已经更改的值,并立即用一个新值更新它们。 使您可以在测试中搜索您知道服务器中已更改的值,并立即使用新值更新所有这些值。
这两个功能通常同时使用,以保证快速且准备的更新。本课将向您展示如何使用这两种功能来更新测试。这两个功能通常同步使用,以确保快速准确的更新。本课程将向您展示如何使用这两种功能来更新测试。
创建针对“老”版本服务的测试
首先,为旧版本的书店服务创建一组测试。随后使用变更指导助手和搜索替换工具更新这些测试。
若要创建测试 vs. 老版本书店服务:
针对服务的“旧”版本创建测试
首先为旧版本的书店服务创建一组测试。稍后,我们将使用 Change Advisor 和 Search 和 Replace 功能来更新这些测试。
要与书店服务的旧版本进行测试,请执行以下操作:
- 创建一个新的空项目并将其命名为 创建一个空项目,并将其命名为
Change Advisor Lesson
: 课程:- 选择 File> New> Project。
- 选择 General> Project。
- 单击 Next。
- 在 进入在 Project Name下输入 下
Change Advisor Lesson
。 - 单击 完成 Finish。
- 向该项目添加一个新的 向此项目添加一个新的 .tst 文件:tst。
- 右键单击该添加项目中的 右键单击已添加该项目中的 Change Advisor Lesson 节点,并选择 节点,然后选择 Add New> Test (.tst) File。
- 在 进入在 File name下输入 下的
Change Advisor Lesson
,然后单击 Next。 - 选择 SOA> WSDL,然后单击 Next。
- 键入输入
http://localhost:8080/parabank/services/store-01?wsdl
作为 WSDL URL。 - 确保选中了确保 Create Functional Tests from the WSDL is 。已选中。
- 点击 单击 Finish 按钮。
- 双击 Test Suite:Suite:Test Suite> Test 2: addNewItemToInventory 打开它的编辑器。 打开其编辑器。
- 选择 选中 book 元素,紧接着单击 元素接着单击 Edit 按钮。
- 填写以下字段:填充以下字段:
- Id:输入 : 输入
10
- Price:选择 price 框,然后输入 : 选中 price 框, 然后输入
9.99
- stockQuantity:输入 : 输入
5
- Id:输入 : 输入
- 单击 Save 工具栏按钮。注意,在将测试更新为测试新版本的书店时,需要确认这些值是否正确结转。 工具栏按钮。请注意,当我们更新测试以测试书店的较新版本时,我们将确认这些值是否正确保留。
- 选中测试用例资源管理器中的 在 Test Case Explorer 中选择 Test 2: addNewItemToInventory 并运行它。
- 单击 Add test or output 工具栏按钮。
- 选择 选中 Response> SOAP Envelope> XML Assertor,然后单击 , 然后单击 Finish。.
- 在断言程序的编辑器汇总,打开 Configuration 选项卡,单击 Add,然后选择 在声明器的编辑器中, 打开 Configuration 选项, 单击 Add, 然后选中 Structure Assertions> Occurrence Assertion,单击 , 并单击 Next。.
- 在显示的 XML 树中,选择 树中,选中 price,然后单击 Finish。
- 在出现断言配置中,确保在下拉菜单中选择了 在出现断言配置下,确保在下拉菜单中选择了== 和 Fixed ,然后在 input 字段中输入 ,然后在输入字段中输入
1
。
使用此断言器,将声明实际上元素 price
只能在 SOAP 响应消息中出现一次。如果该元素在服务更新版本中变更,则将必须对更新测试的 XML 断言器进行重新配置。
执行变更影响分析
使用此断言器,我们声明元素价格
在 SOAP 响应消息中仅发生一次。如果以后在服务的更新版本中更改了此元素,我们将必须重新配置更新测试的 XML 声明器。
变更影响分析
要对这些测试资产执行变更影响分析:若要在这些测试资产上执行变更影响分析:
- 通过选择 Window> Perspective> Open Perspec-tive> Parasoft Change Advisor,打开变更指导助手视图。 来打开 Change Advisor 透视图。
- 在测试用例浏览器中选中 在测试用例资源管理器中,选择 Change Advisor Lesson> Change Advisor Lesson .tst> Test Suite:Suite:Test Suite。.
- 单击 Perform Change Impact Analysis 工具栏按钮。 工具按钮。
- 在打开的对话框中,选择 在打开的对话框中,选中 Scan the selected assets against their current service description,然后单击 , 然后单击 Finish。
在质量任务视图中,将布局更改为 SOAtest 变更影响布局,该布局用于审查运行变更影响分析的结果。通过单击质量任务视图的 在 Quality Tasks 视图中,将布局更改为 SOAtest 更改影响布局,该布局旨在查看运行更改影响分析的结果。你可以通过单击 Quality Tasks 视图的 SOAtest Change Impact Layout 工具栏按钮... 工具按钮
,或者从下拉框选择它,可以切换布局。
来切换布局,也可以从下拉菜单中选择布局。Info title 没有 Change Impact Layout 工具栏按钮? 没有更改影响布局工具栏按钮? 如果绿色的 SOAtest 更改影响布局工具栏按钮不存在,请选择配置目录命令,然后选中 如果不存在绿色的 SOAtest Change Impact Layout 工具栏按钮,则选择 Configur Contents 命令,然后选择 SOAtest Change Impact Layout 多选框。
此 Change Impact Analysis 被配置为将保存在测试的服务信息与包含在测试当前引用的“实时”WSDL 的服务信息进行比较。它将报告任何可能影响测试用例的 WSDL 更改。由于我们就在几分钟之前使用该 WSDL 创建了所有测试(并且在这之后 WSDL 没有任何变更),所有分析将不会报告更改。接下来,我们将看到如果运行变更影响分析与运行不同的 WSDL 时会发生什么。
复选框。
此变更影响分析配置为将测试中保存的服务信息与测试当前引用的“实时” WSDL 中包含的服务信息进行比较。它将报告任何会影响测试用例的 WSDL 更改。由于我们所有的测试都是在几分钟前使用此 WSDL 创建的(此后 WSDL 从未更改过),因此分析报告没有任何更改。接下来,我们将看到如果运行变更影响分析与其他不同的 WSDL 会有什么变化。
- 在测试用例浏览器中,选中 在测试用例资源管理器中,选择 Change Advisor Lesson> Change Advisor Lesson .tst> Test Suite:Suite:Test Suite。.
- 单击 Perform Change Impact Analysis 工具栏按钮。 工具按钮。
- 选择 选中 Scan the selected assets against a specified service description,确保选中了 ,确保在 Artifact 类型下的 类型下选中WSDL ,然后按照以下步骤完成对话框:,然后完成对话框,如下所示:
- Scan Assets that use the following WSDL::
http://localhost:8080/parabank/services/store-01?wsdl
- Compare assets to the following WSDL::
http://localhost:8080/parabank/services/store-01V2?wsdl
The first option that tells SOAtest which tests to perform the analysis against.第二个选项告诉 SOAtest 测试要与什么 WSDL 进行比较。现在由于在这些 WSDL 中发现了服务差异,所以结果将报告变更。 第一个选项告诉 SOAtest 对哪个测试执行分析。第二个选项告诉 SOAtest 将比较哪些 WSDL 的测试。因为这些 WSDL 中发现的服务差异,结果现在将报告更改。
- Scan Assets that use the following WSDL::
- 单击 Finish。
- 在 Quality Tasks 视图中,探索报告的更改。 对于许多测试,名称空间和 targetURI 均已更改。
- 查看测试2的结果:addNewItemtoInventory。
- 请注意,报告了许多其他更改:
- 查看测试 2:addNewItemtoInventory 的结果。
- 注意,报告中还有其他一些变化:
- 添加了新元素
productInfo
- 元素
price
的名称发生了变化 的名字被改变 - 消息中的元素顺序发生了变化信息中元素的顺序已更改
- 添加了新元素
- 查看测试2的结果:addNewItemtoInventory。
注意,变更影响结果不会显示服务定义中的所有变更;它们只会显示实际影响测试的服务定义变更。例如,如果不是当前测试中的操作发生了变化,则不会报告这些变更的变更影响结果。
请注意更改影响结果不会显示服务定义中的所有更改; 它们仅显示实际上影响测试的服务定义更改。例如,如果当前未测试的操作中有更改,则不会报告这些更改的更改影响结果。
创建变更模板
当运行变更影响分析时,服务目录视图将自动填充关于服务的信息,以及正在被测试的服务的版本(该测试正在被分析)。
注意,存储服务和版本是如何填充的。默认情况下,SOAtest 不知道正在测试的服务和版本的官方名称,因此它使用服务定义作为服务名称。 它也使用名称“Old Version”表示当前正在测试的测试服务版本,使用名称“Current Version”表示新服务定义代表的版本。服务目录允许浏览为每个版本检测到的操作。
当变更影响分析运行时,服务目录视图将自动填充有关被分析的测试所测试的服务和服务版本的信息。
注意已经填充了存储服务和版本。默认情况下 SOAtest 不知道被测试的服务和版本的官方名称,因此它使用服务定义作为服务名称。 它还使用名称“Old Version”表示测试当前测试的服务的版本,并使用名称“Current Version”表示新服务定义所表示的版本。服务目录允许您浏览每个版本检测到的操作。
- 将服务和版本重命名为我们可以更好地理解的名称:将服务和版本重命名为更容易理解的名称:
- 在服务目录中,右键单击顶级服务节点,然后选择 Rename Service。
- 输入
Bookstore
作为服务名称。 - 右键单击书店服务的 Old Version 节点,选择 Rename Version,然后使用 , 然后将
Old Version
替换为1.0
代替Old Version
。 - 右键单击书店服务的 Current Version 节点,选择 Rename Version,然后将
Current Version
,然后使用 当替换为2.0
代替Current Version
.
接下来。希望定义变更模板,它将定义我们应该如果更新我们的测试,以便它们测试新版本的服务。
。接下来,我们要定义一个更改模板,该模板将定义如何更新测试以使他们测试服务的新版本 。
- 创建更改模板,如下所示:按照以下步骤创建变更模板:
- 在服务目录中,选择节点 1.0 和 2.0。
- 右键单击选择项,然后选择 右键单击所选内容,然后选择 Add Change Template 1.0 -> 2.0。
- 输入
LessonTemplate
作为文件名称,然后保留 作为文件名,然后保留/Change Advisor Lesson
作为位置。 - 单击 Finish。将打开变更模板编辑器。。更改模板编辑器将打开。
- 查看已创建的更改模板的第一个选项卡。注意:审查创建的变更模板的第一个选项卡。注意:
- Map Operations 选项卡显示在两个 选项卡显示两个 WSDL 中定义的操作,以及 中定义的操作,以及不同版本的 WSDL 不同版本之间的默认映射。当 之间的默认映射。当 SOAtest 首次创建变更模板时,将创建不同版本之间的默认映射,尝试与它认为相同的节点进行匹配。首次创建变更模板时,它会在不同版本之间创建默认映射,以尝试匹配它认为相同的节点。
- 绿色匹配表示 SOAtest 确信它所做的映射是正确的,并且不需要检查。确信它创建的映射是正确的,不需要进行审查。
- 黄色匹配表示 SOAtest 对它所做的映射是否正确不太自信,建议使用 review 来确认或更新映射。对其创建的映射是否正确不太确定,建议检查以确认或更新映射。
- 这里,除了操作 除了操作
getItemById
和getItemByIdentifier
之间的映射外,所有操作映射都以绿色显示。看起来此操作更改了名称,但是操作的含义是相同的。这看起来很般配。 之间的映射外,所有操作映射都以绿色显示。该操作似乎更改了名称,但操作的意义是相同的。这似乎是一个很好的匹配。
- 表示我们已经检查了操作
getItemById
和getItemByIdentifier
之间的映射,检查方法是通过右键单击 getItemById 并选择 通过右键单击 getItemById 并选择 Mark Match getItemById -> get-ItemByIdentifier as Reviewed"。这将使匹配变成绿色。,表明我们已经查看了操作getItemById
和getItemByIdentifier
之间的映射”。这会使匹配变绿。 - 检查已创建的更改模板的第二个(Map Schemas)选项卡。注意:
- 此选项卡显示为每个操作定义的模式。您可以双击编辑器选项卡以使其展开,以使编辑器更大。
- 标有红色 ‘ X’的
addNewItemToInventory
操作,表示需要检查该操作存在差异的模式。
- 该选项卡显示为每个操作定义的 schema。可以双击编辑器选项卡使其展开,以便编辑器更大。
- 使用红色‘X’标记
addNewItemToInventory
操作,指明需要检查该操作的模式中存在差异。 - 其他操作不需要检查,因为 因为 SOAtest 没有检测到这些需要检查的操作中的任何更改。如果选择每一个不带红色‘X’图标的操作,您都将看到所有匹配都是以绿色显示。没有检测到需要检查的那些操作中的有任何更改,所以其他操作不需要检查。如果您选择的每个操作都没有红色的“ X”图标,则会看到所有匹配项均为绿色。
- 选择 addNewItemToInventory 操作对其进行探索。注意 操作进行浏览。注意
- SOAtest 匹配
price
和genre
元素,但表示它们需要检查。 元素,但表示需要进行检查 - 此操作包含名为 该操作包含一个名为
amount
的新元素,该元素在原来版本中没有出现。 的新元素,该元素未出现在原始版本中。
- SOAtest 匹配
- 通过选择 price 元素并单击 Disconnect,指明 .
来指示price
和genre
元素之间的映射不正确。
看起来price
元素被重命名为amount
,而这个genre
时 元素之间的映射不正确,显示price
元素已重命名为amount
,而genre
是 WSDL 中的新元素。 - 通过选择 选择price 和 amount,然后单击 Connect 按钮指明
price
元素被重命名为amount
。 然后单击 Connect 按钮
这个genre
元素看起来是该操作中出现的新元素。 为了能够正确地更新测试,必须为将在每个更新测试中配置的该元素配置一个默认值。否则,更新的测试将给新元素发送一个空值。
表示元素amount
替换了元素price
,genre
元素是这个操作中出现的新元素。 为了正确地更新测试,我们必须为将在每个更新的测试中配置的元素配置默认值。否则更新测试将为该新元素赋一个空值。 - 为
genre
元素配置一个默认值,如下所示: 元素配置默认值,如下所示:- 右键单击 右击genre 并选择 然后选择 Configure Default Value for Added "genre" element。
- 在打开的对话框中,在 input 字段输入 在打开的对话框中,在输入字段中输入
Literature
,然后单击 OK。 - 注意,
genre
现在是否有个绿色的 ‘?’ 并且所有匹配和不匹配的节点都是以绿色显示的。这表示我们已经对该操作完成了审查和配置。 - 注意
genre
现在带有绿色的“?”,并且所有匹配项和未匹配节点现在都是绿色的。这表示我们已经完成了检查和配置此操作。
- 右键单击 右击genre 并选择 然后选择 Configure Default Value for Added "genre" element。
- 通过右键单击最高处 productInfo 元素,然后选择 Mark和 右键单击最高的 productInfo 元素并选择 Mark"productInfo" and Children as Reviewed,表示数量的三个父节点已被审查。,表示三个父节点已被检查。
- 单击 通过单击 Save 工具栏按钮保存模板。此时,模板将被定义,并可以应用到我们的测试中。双击变更模板编辑器选项卡,将其恢复至正常大小。 工具栏按钮保存模板。至此,我们的模板已经定义好可以应用于我们的测试了。双击更改模板编辑器选项卡以将其恢复为正常大小。
...
应用更改模板批量更新测试
若要更新该服务变更影响的测试:要更新受此服务更改影响的测试:
- 在测试用例资源管理器中,选择 在测试用例浏览器中,选中 Change Advisor Lesson.tst,然后单击 然后点击 Refactor Using a Change Template 工具栏按钮。 工具按钮。
- 按照以下步骤完成向导:按照以下步骤完成向导:
- 在测试用例资源管理器中,选择 如下所示完成第一个页面,然后单击 Next。
版本:Version:1.0
更新 Parasoft 资产以使用服务版本:Update Parasoft assets to use service version: 2.0
应用变更模板:By applying the change template: LessonTemplate 在第二页中,保留 在第二页中,保留已选 New Location 为选中状态,然后使用 ,然后使用 Workspace 按钮,以选择 按钮选择 Change Advisor Lesson 项目。这将导致更新的测试被保存在 Change Advisor Lesson 项目内的新文件夹中。注意,在某些情况下,您可能希望重写以前的测试:然后,除非将测试进行了备份,否则这是非常不鼓励的。否则,将失去原来的测试。项目中的新文件夹中。注意,在一些案例中你可能想重写你以前的测试。但是,除非您备份了测试(例如,使用源代码控制系统),否则不建议这样做。否则,您将丢失原始测试。
单击 Finish。将创建一个名为 "。将创建一个名为“ Change Advisor Lesson” 的新文件夹。该文件夹包括更新的测试。Lesson”的新文件夹。这个文件夹包括更新测试。
- 在测试用例资源管理器中,选择 如下所示完成第一个页面,然后单击 Next。
- 打开 .tst 文件,并打开编辑器用于 文件然后打开 Test Suite:Suite: 的编辑器Test Suite> Test Suite:Suite:CartService-Port> Test 2: addNewItemToInventory。注意:.注意:
- 如果选择 如果您选择元素 productInfo 元素,您将看到为 ,则会看到我们为元素
price
元素配置的值被转换为 amount 元素,如变更模板中所定义。 配置的值已经转移到数量元素,如更改模板中所定义。 - 我们之前输入的其他值已经转移到新的测试中。选择 genre 元素,并注意在那里将显示 我们之前输入的其他值已延续到新测试中。选择类型元素,然后注意
Literature
值,如变更模板中所定义。 的值出现在此处,如我们的更改模板中所定义。 - 新文件夹的 已将新的更新环境添加到新文件夹的 Environments 节点中添加了一个更新的新环境,并将其设置为活跃环境。 节点中,并将其设置为活动环境。
- 如果选择 如果您选择元素 productInfo 元素,您将看到为 ,则会看到我们为元素
- 选择新文件夹 选中新文件夹 Change Advisor Lesson> Test Suite;Suite:Test Suite,单击 Run Change Impact Analysis 工具栏按钮,并选择 工具栏按钮,选择 Scan selected assets against their current service description 单选按钮,然后选择 Finish。注意,不会报告任何变更,因为现在新测试已经更新到当前版本的服务中。。请注意,没有报告更改,因为现在更新了新测试以测试该服务的当前版本。
...
使用搜索和替换更新测试
变更指导助手可应用于配置了以下内容的测试:Change Advisor适用于已配置的测试:
- 针对受支持的构件类型之一,以及针对其中一种受支持的工件类型,并且
- 使用表单输入模式。
然而,也有不适用的情况。例如,变更指导助手不支持表单 XML 中的消息传递客户端。XML 断言器中的 Xpath 也不会被变更指导助手更新。为了支持这种情况,SOAtest 提供了搜索替换功能,它可以用于批量更新这些类型的字段。否则,在反复使用相同的修改值的情况下,逐个更新字段将是单调乏味的。
若要使用搜索替换工具更新值:
- 在表单输入模式下。
但是,在某些情况下不适用。例如,Change Advisor不支持格式为 XML 的信息传递给客户端。Change Advisor也不会更新 XML 声明器中的 Xpaths。为了支持这种情况,SOAtest 提供了搜索和替换功能,可用于批量更新这些类型的字段。否则,在反复使用相同修改过的值的情况下,逐一更新字段会很乏味。
用搜索和替换更新值
- 右击 右键单击新版本的 Change Advisor Lesson.tst,并选择 ,的新版本然后选择 Test Using Example Configuration。
- 在质量任务视图工具栏中,单击 在 Quality Tasks 视图工具栏中,单击 SOAtest Default Layout 按钮,显示功能测试结果。 按钮以显示功能测试结果。
- 查看测试2报告的错误:addNewItemToInventory,并注意出现故障是因为元素
price
不再出现在 XML 响应中(记住,它被重命名为amount
,现在出现在元素productInfo
下)。 查看测试 2:addNewItemToInventory 报告的错误,并注意出现故障是因为price
元素不再显示在响应 XML (记得其重命名为amount
并且现在出现在productInfo
元素下)中。 - 在新的 Change Advisor Lesson 文件夹中选择新的 Change Advisor Lesson.tst ,然后从工具栏选择 然后从工具栏选择 Search> Parasoft Search。
- 在 Containing text 字段中输入 book 字段中输入书籍/price,从价格,从 Field type 选择框选择 选择框中选择XPath,启用 Selected resources,然后单击Search。.
该 Search 视图将填充搜索结果。
。搜索视图就会显示搜索结果。 - 右键单击 XML 断言器下的 声明器下的 XPath,然后选择 Replace Selected。
- 在打开的对话框中,输入 在打开的对话框中,在 With 字段中输入
book/productInfo/amount
到 With 字段,然后单击 ,然后单击 OK。
- 选择为新的 在新 WSDL 创建的文件夹中的创建的文件夹中选择 Test 2: addNewItemToInventory,增加 id 字段,选择 字段,然后选择 Run Tests 工具栏按钮。现在测试应该成功了,因为现在 工具栏按钮。因为 XML 断言中的 Xpath 是最新状态。是最新的,所以测试应该成功,