在手动测试期间,可以使用 SOAtest 智能 API 测试生成器为 web 应用程序自动创建 API 测试。智能 API 测试生成器的开箱即用实现旨在帮助更快地启用 API 测试,但也可以“训练”它为您的项目创建更具体的测试。在本章节中:
概要
可以通过创建智能测试模板(.stt)文件来定义决定测试生成行为的规则。智能测试模板文件由一个或多个资源套件组成,其中允许确定将应用规则的路径。资源套件包含一个或多个资源模板。可以将工具链接到资源模板中,并配置它们来定义特定的测试生成行为。资源模板还允许配置 链接的规则将应用于的特定范围。
在智能 API 测试生成器创建新的 API 测试时,它将读取并应用 .stt 文件中指定的规则。
手动创建并配置测试模板
可以使用 Smart Test Templates View创建并管理 .stt 文件。此外,可以添加多个 .stt 文件并将它们组织到文件夹中。
- 选择 Parasoft> Show View> Smart Test Templates 以打开智能测试模板视图(如果仍没有打开)。
- 单击 Add Template 按钮,为 .stt 文件指定名称和位置。
- (可选项)可以指定一个路径来创建组织 .stt 文件的嵌套文件夹。
e - 单击 Next。
选择要创建的资源套件类型。可以创建一个空的套件,或者基于服务初始化套件。
如果正在使用定义文件,请查阅以下部分以获得更多信息。
- 如果正在基于服务定义创建一个套件,并指定定义文件的位置,请单击 Next 。跳过这一步,创建一个空的套件。
- 单击 Finish。
- 展开 .stt 文件,然后双击 Resource Suite。
- (可选项)可以禁用 Use Default Name 选项并文件指定名称。
- 在 Match 字段中指定一个模式来标识端点 you want the rules in this suite to apply to (请查阅 Defining Smart API Test Generation Scope)。Resolved 字段呈现模式预览。Nested Resource Suites 继承父资源套件的 Match 设置。可以确定如何构造模板文件并相应地配置匹配的模式。关于常见用例,请查阅 Example Smart Test Template 。
- 右键单击 Resource Suite,然后选择 Add New> Resource Template。
- (可选项)禁用 Use Default Name 选项,并在 Name 字段中指定资源模板的名称。
从 Method 下拉菜单中选择一种方法,并在 Match 字段中指定一种模式来标识端点 you want the rules in this suite to apply to (请查阅 Defining Smart API Test Generation Scope)。Resolved 字段呈现模式预览。资源模板继承父资源套件的 Match 设置。如果希望智能 API 测试生成器为 Match 字段中指定的所有子路径生成测试,则可以禁用 Exact Match 选项。Exact Match 选项默认是启用的。
当智能 API 测试生成器匹配资源模板中的设置时,会应用所有链接工具的配置。可以确定如何构造模板文件并相应地配置匹配的模式。关于常见用例,请查阅 Example Smart Test Template 。链接 JSON 断言器
JSON 断言器 工具,链接到资源模板的该工具可以配置为使用当前通讯报文中的值。有关其他信息,请查阅 Adding JSON Assertions
- 右键单击 Resource Suite,然后选择 Add Output...
- 选择要在生成的测试中包含的工具,并且配置设置。例如,可以链接并配置 HTTP 配置工具,以便使用模板生成的所有测试套件都会根据被测试的应用程序自动进行身份验证(关于更多信息,请查阅 Enabling Authentication )。
- 根据需要添加额外的资源套件和资源模板。.stt 文件按顺序从头到尾处理。在下一个套件被处理之前,根据其层级结构处理每个资源套件。可以添加尽可能多的套件和模板,并链接尽可能多的工具,以培训智能 API 测试生成器。
- 保存变更。
从现有通讯报文文件生成测试 或使用 SOAtest 智能 API 测试生成器 将应用的 .stt 文件中定义的浏览器扩展和配置来创建新测试。
定义智能 API 测试生成器范围
在资源套件和资源模板中定义的模式将根据以下规则进行匹配:
- 花括号,如
{},
表示通配符并可以包含任意文本。例如,可以指定翻译为 scheme、host 和 port 的模式:{scheme}://{host}:{port}
- 星号 (
*
) 也表示通配符。一个单星号加一个花括号,如,{},可以互换使用:{scheme}://{host}:*/parabank/*/accounts/{id}
- 可以使用双星号来匹配多个目录。
{scheme}://{host}:*/parabank/**/{id}
- 排除 scheme、host 和 port 将匹配任何 scheme、host 和 port。例如,以下模式匹配任何主机、端口和方法上的特定路径:
/parabank/services_proxy/bank/accounts/{id
}
- 为端口号视为通配符的端口指定一个负数或一个大于
65535
的数。 - 资源模板和嵌套资源套件继承父资源套件的 Match 设置。
- 如果希望智能 API 测试生成器为 Match 字段中指定的所有子路径生成测试,则可以禁用 Exact Match 选项。资源模板中的 Exact Match 选项默认是启用的。
默认范围
默认情况下,智能 API 测试生成器将为场景中调用的所有资源创建测试,并且只对使用资源模板工具标识的资源应用培训工具。然而,可以配置智能 API 测试生成器,通过在 tst_configuration.properties 文件中的 includeURLPatterns
和 excludeURLPatterns
中指定 Ant 风格模式,包含或排出测试生成中特定的资源 URL。有关更多详情,请查阅 Test Creation Properties 。
启用身份验证
智能 API 测试生成器使用 HTTP 身份验证工具来为测试配置身份验证凭证。HTTP 身份验证工具是一种特殊的工具,您只能在 .stt 文件中使用它。当智能 API 测试生成器匹配资源模板工具中的设置时,在 HTTP 身份验证工具中配置的凭证将应用于生成的测试。
- 右键单击 Resource Suite,然后选择 Add Output..。
- 展开 Request 菜单,然后选择 Transport Header。
- 从工具面板选择 HTTP Authentication ,然后单击 Finish。
- 在 HTTP 身份验证工具中配置身份验证设置。支持以下身份验证:
- Basic (HTTP 协议中内置的简单身份验证)
- NTLM
- Kerberos
- Digest
关于配置身份验证设置的更多信息,请查阅以下部分:
SOAtest
Virtualize
添加数据头
智能 API 测试生成器使用 HTTP 数据头工具来为测试添加数据头字段。HTTP 数据头工具是一种特殊的工具,您只能在 .stt 文件中使用它。当智能 API 测试生成器匹配资源模板工具中的设置时, 在 HTTP 数据头工具中配置的任何数据头 都将自动添加到生成的测试。也可以使用功能此工具来覆盖测试在创建期间捕获到的数据值。
- 右键单击 Resource Template 工具,然后选择 Add Output..。
- 展开 Request 菜单,然后选择 Transport Header。
- 从工具面板选择 HTTP Header ,然后单击 Finish。
- 单击工具设置部分中的 Add 选项来定义值。
- 保存变更。
添加 JSON 断言
可以配置链接到资源模板工具的 JSON 断言来使用通讯报文中的值。使用 ==
或 equals
作为操作符,并设置值字段 [Smart - From Traffic]
。
按类型划分的 JSON 断言器行为
可以在测试中使用几种类型的的断言(查阅 JSON 断言器 以获得其他信息)。以下部分描述智能 API 测试生成器如何为每种断言类型应用设置。
值断言
- 如果将值断言的 Expected Value 字段设置为
[Smart - From Traffic]
,则将从记录的通讯报文中设置值断言的 Expected Value 字段。 - 如果将元素值字段设置为
[Smart - From Traffic]
并且操作设置为==
或equal
,那么将根据记录的通讯报文设置值出现断言、数字断言和字符串比较断言的元素值字段和期望值字段。 - 如果将值出现断言的期望值字段设置为
[Smart - From Traffic]
并且操作设置为==
,那么值出现断言的期望值字段被设置为1
或0
。 - 不会从通讯报文中设置正则表达式断言、表达式断言和自定义断言的字段。
结构断言
- 如果出现断言的期望值字段设置为
[Smart - From Traffic]
并且操作设置为==
,那么出现断言的期望值字段被设置为1
或0
。 - 不会从通讯报文中设置 Has内容断言、Has 子断言和类型断言的字段。
差异断言
- 如果 Base Value 字段设置为
[Smart - From Traffic]
并且通讯报文值验证成功,则 Base Value 字段将根据记录的通讯报文设置。 - 如果将数字断言的 Difference Value 字段设置为
[Smart - From Traffic]
,则该字段将被设置为0
。 - 不会从通讯报文中设置日期差异断言、日期时间差异断言的差异配置字段。
范围断言
- 如果 Lower Bound 和 Upper Bound 字段设置为
[Smart - From Traffic]
并且值验证成功,则该字段将根据记录的通讯报文来设置。在本例中,相同的通讯报文值将应用于断言中的所有字段。
其他 JSON 断言器行为
默认情况下,智能 API 测试生成器忽略时间戳,但是可以将其配置为忽略其他参数以满足您的需要。有关更多详情,请查阅 Test Creation Parameters 。
根据 .tst 文件中的断言培训模板
可以将现有 .tst 文件中的断言逻辑应用来培训智能 API 测试生成器。请查阅 Training the Smart API Test Generator Using a .tst File。
添加测试套件引用
可以在您的 .stt 文件中引用其他测试套件,这使您能够包含可能是正确执行测试所必需的额外设置步骤。每个资源模板工具只会添加一个被引用的测试套件。引用包含的测试作为生成套件中的第一个测试添加。 有关引用的更多信息,请查阅 重用和模块化端到端测试的测试套件 。
- 右键单击 Resource Template 工具,然后选择 Add Output...
- 展开 Suite 类别,然后选择 Beginning。
- 在 Smart 类别中选择 Test Suite Reference ,然后单击 Finish。
- 指定要在测试套件引用编辑器中引用的测试套件位置。
可以单击 File System 或 Workspace 浏览要引用的 .tst 文件。 - 保存变更。
使用 .tst 文件培训智能 API 测试生成器
可以使用现有的 REST Clients 来教智能 API 测试生成器身份验证设置和 JSON 断言逻辑。可以从 .tst 文件、测试套件或 REST 客户机节点创建培训规则。SOAtest 将在与 REST 客户机中指定的路径最接近的资源模板下创建 HTTP 身份验证或 JSON 断言器。如果没有找到匹配项,那么将为每个规则创建新的 .stt 文件。.stt 文件将包含资源套件和资源模板,配置它们的 Match 设置以匹配 REST 客户机的端点。
新的 .stt 文件的匹配模式基于正在教的智能 API 测试生成器的规则类型。对于断言,使用 REST 客户机的 basePath 设置父套件匹配。子路径在嵌套套件匹配和/或资源模板匹配中配置。资源模板将配置来匹配特定方法类型上的 "Exact" 字段。
对于身份验证,使用 REST 客户机的 schema、host 和 port 设置父套件匹配。父套件中包含的资源模板将被配置来匹配 REST 客户机的 basePath 和所有子路径和方法类型。
- 右键单击 Test Explorer 中的 .tst 文件、测试套件或 REST 客户机节点,并选择 Train Smart Test Template。
提示时查看规则。智能 API 测试生成器将尝试配置现有 .stt 文件中的资源,并相应地添加新规则。如果没有找到匹配的 .stt,则将创建一个新文件。
使用 JSON 断言器培训智能 API 测试生成器
具有固定值的等价断言(使用
==
或equals
操作符)将基于通讯报文来创建。如果值 使用非等价断言参数化,则链接到资源的断言器将被转换为设置为[Smart - User Input]
的固定值。 关于参数化的等价断言,值将为[Smart - From Traffic]
。新断言将被添加到 .stt 问价浓重的现有断言器。
- 单击 OK 更新或向包含在 REST 客户机中配置的设置的 Smart Test Templates 视图中添加一个新的 .stt 文件。如果创建的一个新的 .stt 文件,则将根据是否教授智能 API 测试生成器身份验证设置或断言逻辑来确定文件名。对于断言,将使用原始客户机的 basePath 作为名称。对于身份验证,该名称将基于原始客户机中配置的主机名。如果主机名和/或 basePath 在原始客户机汇总进行了参数化,则资源将命名为 "Template.stt"。可以右键单击智能测试模板视图中的文件,并重命名它。
- 双击资源套件和资源模板,并配置它们的 Match 设置来定义测试生成范围。请查阅 Defining Smart API Test Generation Scope。
- 可以手动添加其他资源来完成配置 .stt 文件。请查阅 Manually Creating and Configuring Test Templates。
示例智能测试模板
测试模板的结构将取决于您想要如何测试应用程序。在本例中,.stt 表示被测试的应用程序(CTP)。
资源套件配置来匹配主机 "emdemo” 上的任何 schema、port 和路径。因此,为 emdemo 生成的任何测试都将在测试引用套件中包含工具引用。此外,测试将分别在 HTTP 身份验证和 HTTP 数据头工具中配置身份验证和数据头设置。
每个资源模板都指向 emdemo 下的特定路径。每个资源模板中指定路径生成的任何测试都将包含链接工具中的配置。例如, "Resource 3” 配置来匹配 "/em/virtualassets/manage” 路径。因此, 包含此路径的测试 将包括一个 JSON 断言器,该断言器被配置为验证 响应中返回的资产配置。