...
Table of Contents | ||
---|---|---|
|
建议准备过程
建议过程是按照 Configuring Tests中所描述为负载测试配置和然后按照 Validating Tests中所描述验证它们是否将正常工作。
然而,如果不希望运行配置步骤(比如,因为已经配置了测试并不希望重写任何添加的手动配置),则只要验证步骤通过,便不需要配置。
访问和了解负载测试透视图
负载测试透视图旨在帮助您准备负载测试所需的 web 场景。选择 Window> Perspective> Open Perspective> Parasoft Load Test ,打开 Load Test 透视图。
...
- 两个工具栏按钮(为负载测试配置和为负载测试验证),这一点允许您运行自动化的测试配置和验证,以及启动负载测试工具的工具栏按钮。
- 负载测试资源管理器列出了可用的 web 场景。注意,任何与负载测试不相关的场景组件(例如,基于浏览器的验证或数据库)将不会显示在该视图。
- 负载测试资源管理器右键单击菜单,以运行自动化的测试配置和验证(工具栏按钮中也有相同的命令)。
- 专门化测试配置面板,通过双击负载测试资源管理器中的测试来访问。
Anchor | ||||
---|---|---|---|---|
|
为什么需要配置测试?
负载测试接受浏览器测试将使用并将这些结果发送到浏览器上下文之外的一组请求。有时,在浏览器请求被重新提交到浏览器之外时,它们变得无效。比如,因为请求中包含依赖于会话的信息,比如会话 ID。在这些情况下,要求配置。若要促进配置,SOAtest 识别这类问题并自动配置要在无浏览器负载测试环境中运行的请求。
...
- 运行测试两次,以识别动态参数(比如,会话 ID)。
- 设置文本数据库以为每个动态请求参数提取有效值(比如,使用从上次测试或当前测试中的更早响应中所提取的值)。有关该工具的更多详情,请查阅 文本数据库 Text Data Bank。
- 配置测试,为每个动态参数使用合适的提取值。这些请求使用合适的测试保存,并可按照 How Can I Review and Modify the Requests that SOAtest Configured? 中所描述对其进行访问。
只要存在一个以下情况,便要求此配置:
- 负载测试验证没有成功。
- 您的应用程序已经发展到您现有的负载测试配置不再匹配应用程序功能的地步。
如何配置测试?
Warning | ||
---|---|---|
| ||
配置将根据应用程序现有状态重新创建所有现有的负载测试请求。因此,在 SOAtest 设置的任何现有负载测试配置(比如,如果手动配置了 URL 或使用参数化或脚本化值设置请求体)都将被重写。 |
...
- 在负载测试资源管理器中,选择要配置的测试套件。
- 可以单击 Configure for Load Test 工具栏按钮,也可以右键单击测试套件并从快捷菜单选择 Configure for Load Test 。
接下来,按照 Validating Tests所描述的那样验证测试。
Anchor | ||||
---|---|---|---|---|
|
如果双击负载测试资源管理器(可在负载测试透视图中获取)中的浏览器回放工具,那么您将会看见一个特殊配置面板,该面板显示测试应该发出的请求列表。如果需要,它同时呈现 URL、HTTP 方法和请求体。也可以使用配置面板上的控件添加和删除请求。
...
关于参数化值的更多详情,请查阅 Parameterizing Tests with Data Sources, Variables, or Values from Other Tests。
关于脚本化值的更多详情,请查阅 扩展和脚本基础Extensibility or Scripting Basics。
使用固定值,可以使用
${var_name}
语法对数据源值进行访问。 也可以使用指定的环境变量。有关环境的更多详情,请查阅 Configuring Testing in Different Environments
Anchor | ||||
---|---|---|---|---|
|
如果希望对请求的任何部分使用动态值,则可以使用数据源中的值或其他测试中所提取的值,或者使用自定义脚本或固定值生成的值对请求进行参数化。
...
- 双击负载测试资源管理器(可在负载测试透视图中获取)中的测试,打开其配置面板。
- 选择要参数化其值的特定请求。
- 在 URL 或 Request Body 选项卡中(这取决于您望参数化请求的哪一部分),突出显示要参数化的文本。
- 单击 Parameterize Selected Text。
- 在打开的对话框中,为参数化的值指定一个名称。URL 或 Request Body 选项卡中的实际值将替换为对变量的引用,并且该变量的条目将被添加到测试配置面板底部的参数化值区域。
- 若要配置变量以使用固定值,请在 Value 字段中选择 Fixed ,然后在 Fixed右侧框中选择所需值。
- 若要配置变量以使用存储在数据源中或提取自其他测试的值,请在 Value 字段中选择 Parameterized ,然后在 Parameterize右侧框中选择所需值。关于参数化测试的更多详情,请查阅 Parameterizing Tests with Data Sources, Variables, or Values from Other Tests 。
- 若要配置变量,以使用自定义脚本的结果,请在 Value 字段中选择 Scripted ,然后单击 Edit Script 并指定脚本细节。关于使用自定义脚本的更多详情,请查阅 扩展和脚本基础Extensibility or Scripting Basics 。
- 如果希望在参数化文本插入其所属的较大值之前将 URL 编码应用于该文本,请保证启用了 URL-encode value 选项。
...
注意,如果功能测试已经配置为使用参数化值,则配置步骤将设置测试,以便参数化的值也将用于负载测试。
测试配置期间会发生什么?
在运行“Configure for Load Test”步骤时,SOAtest 执行测试套件两次并执行三中类型的自动化配置:
- 以前设置来对功能测试场景使用数据源值的 HTTP 请求,自动配置以对负载测试配置使用相同的数据源值。
下面是 SOAtest 参数化 HTTP 请求中的用户名和密码参数的例子,其中使用功能测试已经配置的相同数据源值,以便使用:
注意,“password”参数配置为使用 "Login Values” 数据源的 “Password”列。 - HTTP 请求中的动态参数值(比如,会话 ID)配置为使用当前会话更新的值
SOAtest 通过在包含动态值的 HTTP 响应上创建文本数据库实现这一点。然后,将该数据库值用于合适的 HTTP 请求中。
例如,在下面呈现的示例中,测试 2 添加了一个文本数据库。
注意,一个值被提取到列名“qid”中。已自动配置了左右文本的边界。
将把其中一个 HTTP 请求配置为使用所提取值:
有关该工具的更多详情,请查阅 文本数据库Text Data Bank。 - 场景配置为提取相同的数据库值,该值为功能测试所提取。
此配置事该值可在混合的 web/SOA 负载测试场景中的其他工具中使用。
例如,假设是测试 2:单击“Google Search”,会有一个浏览器数据库,其中提取了一个名为“Extracted: bookName”的列。 SOAtest 找到包含相同值的 HTTP 响应,并创建了一个文本数据库,该数据库将该值提取到具有相同名称的列中(“Extracted: bookName”)。该值稍后将用于 SOAP 客户机中,如下所示:
Anchor | ||||
---|---|---|---|---|
|
为什么验证测试?
验证测试时,SOAtest 将以负载测试模式运行它们并提醒您任何可能影响负载测试的显出问题。例如,配置了错误的 HTTP 请求。通过这种方式,可以在实际负载测试开始之前解决这些问题。
如何验证测试?
运行自动化的验证,如下所示:
- 在负载测试资源管理器中,选择要验证的测试套件。
- 可以单击 Validate for Load Test 工具栏按钮,也可以右键单击测试套件并从快捷菜单选择 Validate for Load Test 。
...
如果检测到可以问题,则它将报告在该测试套件用于负载测试工具前需要解决的问题。然后,可以在质量任务视图汇总查看所报告的问题。
如何查看浏览器中显示的测试步骤?
为了更好地确定每个测试步骤发生的内容,可以让 SOAtest 显示浏览器呈现负载测试请求时发生的内容。为此,请双击添加到相关测试的浏览器内容视图器。
如果希望对为什么测试没有产生预期结果可视化,这一点非常有用。例如,呈现的页面可能会显示登录不正确。使用此工具,以及检查错误消息,可以帮助您识别和解决问题的原因。
验证在寻找什么?
验证期间,SOAtest 决定是否需要在场景上进行任何配置,可以是自动化的配置(SOAtest),也可以是手动配置。 如果验证没有成功,它将指示需要运行配置步骤,或者如果已经运行了配置步骤,则需要手动配置参数。
如果报告了问题怎么办?
如果无法通过“Configure for Load Test”自动配置动态参数,则将发生以下一种或两种情况:
...
如果出现这种问题,请运行“Configure for Load Test”。 如果已经运行了“Configure for Load Test”却仍然出现这些错误,则可能需要手动配置导致问题的 HTTP 请求和/或参数。
什么时候需要手动配置测试?
这有一个类,其中 SOAtest 无法对其动态参数值进行自动配置:该值通常由 JavaScript 在浏览器中构造或转换。 由于(转换的)参数值不存在于任何 HTTP 响应中,所以 SOAtest 无法提取它们以便在任何 HTTP 请求中使用。
这些参数需要手动配置。当 web 应用程序需要为每个会话更新这些存在的动态参数时,验证将向您发出警告。
如何手动配置参数?
使用 如何参数化或脚本化请求值中描述的过程。
下面是一个参数示例,该参数将当前时间传递给服务器。 这是一个动态参数,由 JavaScript 构造,在以前的任何 HTTP 响应中都不存在。 它可以手动配置为使用计算并返回当前时间的脚本进行参数化。
Web 负载测试注意事项
- Web 负载测试专注于导致文本响应的请求。它不会转换二进制文件(比如图片、flash 文件、JavaScript、 CSS 等)。这允许模拟在用户机器上缓存所有内容的模式,它为回头客/现有用户提供了准确的响应时间。
- web 负载测试的请求被配置为模拟测试套件的 Browser Playback Options 选项卡中指定的浏览器。通过发送合适的数据头内容(User-Agent 和 Accept)来模拟浏览器类型。
- 如果应用程序要求基本或 NTLM 身份验证,则测试套件的 Browser Playback Options 选项卡中使用的设置也将应用于 web 负载测试。
配置浏览器测试以发送二进制数据
如上所述,在负载测试 web 场景时不使用浏览器。相反地,负载测试工具发送一系列模拟浏览器中用户操作结果的请求。因此,如果希望在浏览器请求中发送二进制数据,则需要配置测试,以便负载测试不会将内容作为文本发送。最常见的用例是需要通过 web 页面提交二进制文件。
记录场景后,首先使用"Configure for Load Test”运行场景(如 Configuring Tests中所述)。这将使用在负载测试期间发出请求所需的动态参数来配置场景。
...
现在,在负载测试工具中或者在 SOAtest 中使用"Validate for Load Test”测试配置运行场景时,PDF 文件内容将作为二进制数据发送。
配置浏览器测试以添加自定义数据头
有时负载测试验证失败,因为服务器要求在其接收的任何请求中都存在 HTTP 数据头,但实际上没有这个数据头。在这种情况下,可以添加一个全局自定义 HTTP 数据头,以便在 web 浏览器负载测试期间随请求一起发送。
...
注意,为了简洁,此示例使用 Jython,然而,由于此扩展工具将在负载测试上下文中使用,所以在 Java 中定义脚本将提供最佳性能:
在 Web 负载测试工具中支持 GWT 应用程序
在某些情况下,Google Web Toolkit 应用程序将自定义 HTTP 数据头追加到所有 HTTP 请求中,以防止已知的安全问题,如扩展点请求伪造(XSRF)。 例如,这是在使用 smart-gwt 工具包的应用程序中完成的。名为 X-GWT-Permutation
的自定义数据头通过 GWT 的 JavaScript 库添加到请求中。
...