...
Table of Contents | ||
---|---|---|
|
创建可重用的(模块化的)测试套件
Anchor | ||||
---|---|---|---|---|
|
在许多情况下,您可能希望创建一个可由其他测试套件重用的测试套件。一个常见的示例是登录网站的测试套件。一旦创建了这样的测试套件,其他测试套件就可以在需要登录的各种情况下使用它。
...
- 请如下创建名为
ReusableModule.tst
的测试套件(.tst)文件:- 右键单击测试用例资源管理器中的 Examples 项目节点,然后选择 Add New> Test (.tst) file。
- 在 File name下,输入
ReusableModule
。 - 单击 Next。
- 选择 Empty,然后单击 Finish。
- 如下创建一个 SOAP 客户端。
- 展开 ReusableModule.tst 测试用例资源管理器节点。
- 右键单击 Test Suite:Test Suite 节点,然后选择 Add New> Test。
- 在打开的对话框中,选择 SOAP Client,然后单击 Finish。
- 如下配置 SOAP 客户端:
- 在测试配置面板的 WSDL 选项卡中,输入 WSDL URL
http://localhost:8080/parabank/services/store-01?wsdl
。 - 在 Request 选项卡中,将 Operation 设置为 getItemByTitle。
- 将变更保存到 SOAP 客户端工具。
- 在测试配置面板的 WSDL 选项卡中,输入 WSDL URL
- 如下定义变量:
- 双击 Test Suite:Test Suite 节点,打开配置面板的测试套件。
- 在 Variables 选项卡中,单击 Add 按钮。
- 在对话框的 Name 字段,输入
title variable
。 - 将 Type 更改为 String。
- 保持 Use value from parent test suite (if defined)选项。这将允许变量使用在引用此测试套件的测试套件中设置的值。如果选择更改为 Use local value,则变量的值将始终为 Value 字段中指定的值。
- 输入
PowerBuilder
作为 Value。如果 SOQtest 没有找到名为store
且列为title
的数据源,将使用该默认值。 - 然后单击 OK。
- 保存测试套件配置更改。
- 如果可用,将配置 SOAP 客户端测试以使用指定的数据源值,如下所示:
- 在 SOAP 客户端测试配置面板中,跳转至 Request 选项卡,检查 titleKeyword框,然后将 Fixed 更改为 Parameterized。
- 在复合框中选择 title variable 。
- 将变更保存到 SOAP 客户端工具。
- 通过选择 ReusableModule.tst,然后单击 Test 工具栏按钮运行测试套件。
- 双击 SOAP 客户端测试的 Traffic Viewer 节点,查看通讯报文。注意,使用的 titleKeyword 为 PowerBuilder。SOAtest 使用默认的变量值,因为它没有找到指定的数据源(由于我们还未创建)。
- 请如下创建一个名为
TestStoreTitles.tst
的空的测试套件(.tst)文件:- 右键单击测试用例资源管理器中的 Examples 项目节点,然后选择 Add New> Test (.tst) file。
- 在 File name下,输入
ReusableModule
。 - 单击 Next。
- 选择 Empty,然后单击 Finish。
- 如下定义变量:
- 双击 TestStoreTitles.tst> Test Suite:Test Suite 节点,打开配置面板的测试套件。
- 在 Variables 选项卡中,单击 Add 按钮。
- 在对话框的 Name 字段,输入
title variable
。 - 将 Type 更改为 Data Source。
- 输入
store
作为 Data SourceName ,然后输入title
作为 Column Name。
注意,该测试变量将重写引用 .tst 文件中定义的字符串测试变量。
- 然后单击 OK。
- 添加数据源到测试套件中,如下所示:
- 右键单击 TestStoreTitles.tst> Test Suite:Test Suite 节点,然后选择 Add New> Data Source。
- 选择 Table,然后单击 Finish。
- 在数据源配置面板中,将数据源名称更改为
store
。 - 选择 First row specifies column names。
- 添加名为
title
的列。 - 想该列添加两个值:
Linux
和C++
。 - 保存数据源变更。
- 配置该测试套件引用我们在该练习中创建的第一个测试套件,如下所示:
- 右键单击 TestStoreTitles.tst> Test Suite:Test Suite 节点,然后选择 Add New> Test Suite。
- 选择 Reference Test (.tst) File。
- 单击 Next。
- 从 SOAtest 工作空间中选择 ReusableModule.tst 文件。
- 单击 Finish。
- 通过选择 TestStoreTitles.tst,然后单击 Test 工具栏按钮运行当前测试套件。
- 双击 Traffic Viewer 节点,以查看通讯报文。
- 验证是否使用 Linux,然后将 C++ 用作 titleKeyword。
循环直到测试成功或失 - 使用测试流程逻辑
Anchor | ||||
---|---|---|---|---|
|
在大多数情况下,您可能希望 SOAtest 在某个条件满足之前反复执行某个操作。测试套件流逻辑允许对此进行配置。
...
- 请如下创建一个名为
TestFlowLogic.tst
的空的测试套件(.tst)文件:- 右键单击测试用例资源管理器中的 Examples 项目节点,然后选择 Add New> Test (.tst) file。
- 在 File name下,输入
TestFlowLogic
。 - 单击 Next。
- 选择 Empty,然后单击 Finish。
- 通过展开测试套件,打开测试套件配置面板,然后双击 Test Suite:Test Suite 节点。
- 打开 Execution Options> Test Flow Logic 选项卡。
- 将 Flow type 设置为 While pass/fail。
- 将 Maximum number of loops 设置为
20
。 - 将 Loop until 设置更改为 One test 和 Succeeds。
- 保存测试套件配置设置。
- 如下创建一个 SOAP 客户端。
- 右键单击 TestFlowLogic.tst> Test Suite:Test Suite 节点,然后选择 Add New> Test。
- 在打开的对话框中,选择 SOAP Client,然后单击 Finish。
- 如下配置 SOAP 客户端:
- 在测试配置面板的 WSDL 选项卡中,输入 WSDL URL
http://localhost:8080/parabank/services/store-01?wsdl
。 - 在 Request 选项卡中,将 Operation 设置为 getItemByTitle。
- 针对 titleKeyword,请选择框,然后输入
PowerBuilder
作为值。 - 将变更保存到 SOAP 客户端测试。
- 在测试配置面板的 WSDL 选项卡中,输入 WSDL URL
- 为该测试创建回归控制,如下所示:
- 邮件单击 SOAP Client 测试节点,然后选择 Create/Update Regression Control。
- 选择 Create Regression Control。
- 单击 Finish。
- 在回归控制中修改预期价格,如下所示:
- 双击新建的 Diff control 节点,打开 Diff 工具编辑器。
- 在 price 元素中修改值。在多次调用 getItemByTitle 之后,商店服务会将这本书的价格提高了 1.00 美元,因此,根据您在本教程中运行测试的次数,当前价格可能会与显示的价格有所不同。
- 双击新建的 Diff control 节点,打开 Diff 工具编辑器。
通过选择测试套件节点,然后选择 Test 工具栏按钮运行当前测试套件。即使特定测试失败,测试套件也会成功,因为在循环 20 次之前将达到预期响应中输入的价格。可以在 Console 选项卡中看到:
Info title Higher prices than expected? 您调用 getItemByTitle 的次数越多,价格上涨的幅度就越大。要降低价格,请重新启动 Parabank 服务器,然后重新运行调用 getItemByTitle 的 SOAP 客户端。- 双击以前创建的 Diff Control 节点,打开 Diff 工具编辑器。
- 修改价格,以使测试在达到价格之前将循环播放完整的 20 次。
- 再次运行测试套件。测试套件将失败,因为在循环 20 次之后,价格永远无法达到。
使用脚本扩展 SOAtest
Anchor | ||||
---|---|---|---|---|
|
如果您有一个测试要求,要求您向测试用例中添加自定义功能或逻辑,则 SOAtest 允许您轻松地将自定义脚本集成到测试环境中。
...
- 请选择上次练习的 Test Suite:Functional Tests 节点(在 単体テストのためのテスト スイートの作成中所创建),然后单击 Add Test Suite 工具栏按钮。
- 在添加测试套件向导中,单击 Empty,然后单击 Finish。
- 双击新建的 Test Suite:将Test Suite 节点添加到测试套树,然后输入
Custom Scripting
到测试配置面板中的 Name 字段,然后单击 Save。 - 请选择上次练习的 Test Suite:Custom Scripting 节点,然后单击 Add test or output 按钮。
- 在添加测试向导右侧选择 SOAP Client ,然后单击 Finish。将 SOAP 客户端工具添加到测试套件。
- 双击 测试1:SOAP Client 节点,该节点位于 Test Suite:Custom Scripting 节点下,然后输入
Validate Price Value
到右侧 GUI 面板中的 Name 字段。 - 在测试配置面板的 WSDL 选项卡中,输入
http://localhost:8080/parabank/services/store-01?wsdl
到 WSDL URL 字段中。 - 打开 Request 选项卡,然后从 Operation 下拉框中选择 getItemByTitle 。
- 在 SOAP body 选项卡中,单击 getItemByTitle ,然后启用 titleKeyword 选项。
- 从下拉菜单中选择 Fixed ,然后输入
Linux
作为值。 - 单击 Save 工具栏按钮。
- 右键单击 Test 1:Validate Price Value 节点,然后选择 Add Output。
- 在 Add Output 向导左侧选择 Response> SOAP Envelope ,右侧选择 XML Assertor ,然后单击 Finish。这告诉 SOAtest 将 XML 断言器链接到 SOAP 客户端的 XML 响应输出。
- 单开 XML 断言器测试配置面板中的 Configuration 选项卡,然后单击 Add 按钮。
- 在 Select Assertion 对话框中,展开 Value Assertion 节点,选择 Custom Assertion,然后单击 Next 按钮。
随后,Custom Assertion 对话框将显示 XML 消息的树状视图,您可以从中选择一个要执行的值。 - 在 XML 树状视图中选择 price 元素,然后单击 Finish 按钮。
现在将使用自定义断言填充测试配置选项卡。 - 在 Language 下拉菜单中选择 Jython 。
在测试配置选项卡的 Text 字段中输入以下脚本,以确保价格值是均匀的:
Code Block def checkPrice(input, context): price = float(input) if price % 2 == 0: return 1 else: return 0
- 在 Method 下拉菜单中选择 checkPrice() 。
- 单击 Save 工具栏按钮。
- 选择 Test 1 节点,然后单击 Test 按钮。请注意,测试失败。如果双击测试的 Traffic Viewer 节点,您将看到 Linux 书的价格是一个奇数,从而导致测试失败。
进一步扩展 SOAtest
您可以在脚本中使用 SOAtest 的内置可扩展性框架,从而可以在 SOAtest 中定义和使用自定义传输协议和消息实现。有关更多信息,请跳转至 Parasoft> Help> Parasoft SOAtest Extensibility API。