本教程描述了如何部署 Parasoft 录制器、录制 API 通讯报文、生成智能 API 测试以及配置智能 API 测试生成。章节目录:
前提条件
要完成本教程,您需要远程访问 SOAtest 桌面端或服务器以及为您的许可证激活的高级测试生成功能。详情请参阅初步了解 Parasoft 录制器。
部署 SOAtest Web 代理
- 为您的平台运行 Parasoft 录制器安装程序:parasoft_recorder_<version>_win32.exe(Windows)或 parasoft_recorder_<version>_macos.dmg(Mac OS)。对于 Mac OS,程序安装后,请双击 Parasoft Recorder.pkg。
- 在提示时接受许可协议。
- 在提示时选择安装位置。对于 Windows,默认为
C:\Program Files\Parasoft\Parasoft Recorder
;对于 Mac OS,默认为/Applications/Parasoft
。 - 如果您使用的是 Windows,安装程序将提示您将 SOAtest Web 代理作为 Windows 服务安装。这样就能使用 Windows 服务控制代理。默认端口为 40090。选择是并点击下一步。
- 选择是,然后在提示安装 Parasoft 录制器 Chrome 扩展程序时点击下一步。需要一个可以访问谷歌 Chrome 商店的互联网连接。
- 如果您使用的是 Mac OS,安装向导将提示您确认是否在安装之后启动 web 代理,以及每次登录安装机器时是否启动代理。默认端口为 40090。启用两个选项并点击继续。必须运行 web 代理才能在 SOAtest 中生成智能测试。稍后可以禁用自动启动。
- 点击安装,完成操作。
- 安装程序将查找 Parasoft Web 根证书颁发机构(CA),如果找不到,则提示您安装 CA。CA 通常作为正常的 SOAtest 或 Virtualize 桌面安装程序的一部分安装,并且对于通过 SSL 录制通讯报文而言是必需的(请参阅安装说明)。如果出现提示,请确认是否要安装 CA 并继续。
- 打开 Chrome 浏览器并在地址栏中输入
chrome://extensions
。 - 点击滑块以启用插件。
启用插件之后,您需要配置与 SOAtest 服务器的连接。
连接到 SOAtest 服务器
- 点击出现在地址栏旁边的 Parasoft 图标。如果稍后需要更改配置,还可以右键点击图标并选择选项。
- 点击选项链接以访问连接设置。
- 指定以下设置:
- Web Proxy API 端口:40090(默认)。
- SOAtest 主机:运行 SOAtest 服务器的机器名或 IP 地址。
- SOAtest 端口:SOAtest 服务器主机的端口号。
- 如果 SOAtest 服务器被配置为通过 SSL 通信,请启用安全连接 (HTTPS) 选项。
- 用户名/密码:SOAtest 服务器登录凭证。
- 点击测试连接验证设置是否正确,然后点击保存,完成连接设置的配置。
创建测试
在本节中,我们将为 ParaBank 样例应用程序创建一组测试场景。还将演示如何修改测试生成设置,以及如何教智能 API 测试生成器应用资源模板的 HTTP 身份验证、HTTP 头和 JSON 断言设置。在开始本教程之前,先启动 ParaBank 服务器 更多信息,请参阅设置 ParaBank。
场景 1 - 登录
在 Chrome 浏览器中打开 ParaBank。
- 点击 Parasoft 图标,启用 Parasoft SOAtest API 通讯报文录制选项。
- 选择开始录制,然后登入应用程序(username: john, password: demo)。
- 点击 Parasoft 图标并选择停止录制。
- 根据提示将测试命名为 "parabank-login",然后点击创建测试资产。
- 当在 CTP 中打开测试资产出现提示时,点击确认对话框。
还可以在 SOAtest 桌面中查看资产。 - 双击测试 1,检查其配置。该测试提交登录凭据。
- 双击测试 2,检查其配置。该测试获取帐户概述信息。
- 只要值保持不变,测试就会在连续执行时传递。
场景2 - 转账
- 登录到 Parabank,开始录制一个新的场景。
- 点击 Transfer Funds 链接,在 Amount 字段中输入 100。
- 将默认的 From 和 To 帐户字段设置为帐户编号 12345 并点击 Transfer。
- 停止录制,根据提示指定测试的名称(例如 parabank-transfer)。
- 点击创建测试资产并点击在 CTP 中查看测试的通知。还可以在 SOAtest 桌面中审查测试。在这个场景中,我们将使用 CTP。
- 您将被定向到 API 测试模块以检查测试。测试将出现在用户名下的
users
目录中。 - 点击测试 1("GET parabank ...")以检查配置。该测试类似于登录场景中的测试 2,但是添加了一个 JSON 数据库,用于捕获和存储响应值。
- 点击测试 2,检查配置。传输数据被附加到 API 调用 URL。
- 返回测试。测试将失败。
- 点击查看报告链接,调查错误。
- 存在几个问题,但最重要的是 401 错误,它涉及未经授权的访问。点击查看通讯报文链接以获得更多详情。响应显示 SOAtest 无法登录来执行该场景。
启用身份验证
- 点击转移场景中的测试 1,并激活启用 HTTP 身份验证选项。
- 指定登录凭据并保存更改。
- 重新运行测试。测试 1 通过,但是测试 2 仍然失败,因为没有为特定的测试配置身份验证设置。像在测试 1 中那样指定身份验证设置。
- 我们需要一种更可伸缩的方法,为将来的测试启用身份验证。因此,我们将培训 SOAtest,以便为所选端点生成的所有测试启用身份验证设置。在 SOAtest 桌面端中,右键点击 parabank-transfer.tst 文件,然后选择训练智能测试模板。
- 在提示时,确认将 HTTP 身份验证设置添加到智能测试模板中。
- 点击智能测试模板视图中的新资源,并验证身份验证设置是否出现。
我们将录制另一个场景,以验证是否使用了身份验证设置。
场景 3 - 开立新账户
- 登录到 Parabank,开始录制一个新的场景。
- 点击 Open New Account 链接,并指定要使用帐户 12345 中的资金开立一个新的支票帐户。
- 点击 Open New Account 并停止录制。
- 当出现提示时,指定“parabank-new-account”作为新资产的名称,并点击“创建测试资产”。
- 退出 ParaBank,并在 SOAtest 桌面或 CTP 中查看新的测试资产。您将看到,即使我们在录制场景之前已经登录过,测试中仍然包含 HTTP 身份验证设置。
- 执行测试,测试失败是因为每次执行测试时,与帐户关联的余额都会更改。
- 如果值的更改不重要,则可以删除与测试一起生成的比较工具,这样就不会考虑初始值。
- 重新运行测试,测试将会通过。有关如何配置在测试生成期间处理的比较和 JSON 断言器工具的详情,请参阅配置测试的创建。
添加断言
- 重新运行 parabank-login 测试。测试 2 将失败,因为响应中返回的值已经更改。
- 删除比较工具并重新运行测试。测试将通过。
- 尽管我们不关心 GET 调用在此阶段返回的值,但是我们希望通过添加一个 JSON 断言器来验证调用是否返回数据。右键点击测试 2,并在 SOAtest 桌面端中选择添加输出...。
- 在左窗格中选择响应> 通讯报文,在工具选项面板中选择JSON 断言器。
- 点击完成并点击配置选项卡。
- 点击添加并从结构断言文件夹选择有内容断言。
- 点击下一步并选择一个 id 元素。
- 点击下一步并选择应用于所有的 "item[*]" 选项,以便断言器应用于响应中的所有同级元素。
- 在配置选项卡中,为有内容选择固定值,将值设为 true。
- 保存更改并运行测试。
- 测试通过了,但是我们希望确保所有生成的测试都以相同的方式对
id
元素断言。右键点击测试并选择训练智能测试模板。 - 检查更改并点击 OK。
- 将向资源模板中添加一个 JSON 断言器工具。该工具被配置为使用来自通讯报文的值。
- 按照Scenario 1 -Logging In中描述的流程,创建名为“parabank-login2”的新测试。
- 测试将在智能测试模板中配置身份验证和断言设置。
- 运行测试以验证它是否通过。
配置测试的创建
使用比较和 JSON 断言器工具的测试在测试执行期间要求特定的值。如果测试场景不需要特定的值,则您可以通过在 tst_create.properties 配置文件中禁用这些工具来防止 web 代理自动创建这些工具。详情请参阅Parasoft 录制器高级配置。
- 打开配置文件。该文件位于 SOAtest 桌面端工作空间的
TestAssets
目录中。如果您使用 CTP 而不是 SOAtest 桌面端来创建和执行 API 测试,则可以配置与 Parasoft 录制器一起提供的位于安装目录中的 tst_creation.properties 文件。对于 Mac OS,您需要右键点击 SOAtest Web 代理应用程序图标,并选择 Show Package Contents。 - 取消对
disableDiffCreation
和disableAssertorCreation
属性的测试,并将其设置为true
。 - 保存文件。
- 您可以通过创建一个新的测试来验证测试创建设置。