Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

然而,如果不希望运行配置步骤(比如,因为已经配置了测试并不希望重写任何添加的手动配置),则只要验证步骤通过,便不需要配置。

访问和了解负载测试透视图

负载测试透视图旨在帮助你准备负载测试所需的 负载测试透视图旨在帮助您准备负载测试所需的 web 场景。若要打开负载测试透视图:

  • 选择 Window> Perspective> Open Perspective> Parasoft 负载测试

该透视图与 SOAtest 透视图相似,但它也提供了以下功能:

  • 两个工具栏按钮(为负载测试配置和为负载测试验证),这一点允许你运行自动化的测试配置和验证,以及启动负载测试工具的工具栏按钮。两个工具栏按钮(为负载测试配置和为负载测试验证),这一点允许您运行自动化的测试配置和验证,以及启动负载测试工具的工具栏按钮。
  • 负载测试资源管理器列出了可用的 web 场景。注意,任何与负载测试不相关的场景组件(例如,基于浏览器的验证或数据库)将不会显示在该视图。
  • 负载测试资源管理器右键单击菜单,以运行自动化的测试配置和验证(工具栏按钮中也有相同的命令)。
  • 专门化测试配置面板,通过双击负载测试资源管理器中的测试来访问。

...

只要存在一个以下情况,便要求此配置:

  • 负载测试验证没有成功。
  • 你的应用程序已经发展到你现有的负载测试配置不再匹配应用程序功能的地步。您的应用程序已经发展到您现有的负载测试配置不再匹配应用程序功能的地步。

如何配置测试?

Warning
title警告

配置将根据应用程序现有状态重新创建所有现有的负载测试请求。因此,在 SOAtest 设置的任何现有负载测试配置(比如,如果手动配置了 URL 或使用参数化或脚本化值设置请求体)都将被重写。

...

Anchor
HowCanIReview
HowCanIReview
如何审查和修改 SOAtest 配置的请求?

如果双击负载测试资源管理器(可在负载测试透视图中获取)中的浏览器回放工具,那么你将会看见一个特殊配置面板,该面板显示测试应该发出的请求列表。如果需要,它同时呈现 如果双击负载测试资源管理器(可在负载测试透视图中获取)中的浏览器回放工具,那么您将会看见一个特殊配置面板,该面板显示测试应该发出的请求列表。如果需要,它同时呈现 URL、HTTP 方法和请求体。也可以使用配置面板上的控件添加和删除请求。

...

  1. 双击负载测试资源管理器(可在负载测试透视图中获取)中的测试,打开其配置面板。
  2. 选择要参数化其值的特定请求。
  3. URLRequest Body 选项卡中(这取决于你望参数化请求的哪一部分),突出显示要参数化的文本。 选项卡中(这取决于您望参数化请求的哪一部分),突出显示要参数化的文本。
  4. 单击 Parameterize Selected Text
  5. 在打开的对话框中,为参数化的值指定一个名称。URL 或 Request Body 选项卡中的实际值将替换为对变量的引用,并且该变量的条目将被添加到测试配置面板底部的参数化值区域。
  6. 若要配置变量以使用固定值,请在 Value 字段中选择 Fixed ,然后在 Fixed右侧框中选择所需值。
  7. 若要配置变量以使用存储在数据源中或提取自其他测试的值,请在 Value 字段中选择 Parameterized ,然后在 Parameterize右侧框中选择所需值。关于参数化测试的更多详情,请查阅 使用数据源、变量或来自其他测试的值对测试进行参数化 。
  8. 若要配置变量,以使用自定义脚本的结果,请在 Value 字段中选择 Scripted ,然后单击 Edit Script 并指定脚本细节。关于使用自定义脚本的更多详情,请查阅 扩展和脚本基础 。
  9. 如果希望在参数化文本插入其所属的较大值之前将 URL 编码应用于该文本,请保证启用了 URL-encode value 选项。
    • 在运行 "Configure for Load Test”,并且 SOAtest 自动参数化动态值或来自数据源中的值时,该选项的值会根据上下文进行正确设置。
      • 如果参数化值属于 URL,则将在运行 "Configure for Load Test” 之后自动启用此选项。
      • 如果参数化值属于 Request Body,则在运行 "Configure for Load Test” 之后通常不会自动启用此选项。然而,如果请求体的 Content-Type 为 "application/x-www-form-urlencoded",则将自动启用此选项。如果请求体的 Content-Type 为 "multipart/form-data",SOAtest 将不会自动 URL 编码值,因为 multipart 请求主体不需要使用 URL 编码的字符。
    • 例如,假设你正在手动参数化请求体的一部分。如果希望使用需要数据源值对其进行参数化,该值在作为请求体的一部分发送时需要 例如,假设您正在手动参数化请求体的一部分。如果希望使用需要数据源值对其进行参数化,该值在作为请求体的一部分发送时需要 URL 编码,并且此请求体没有使用 multipart 格式,则需要手动启用此选项。否则,该值将逐字插入较大的值中。

...

Anchor
ValidatingTests
ValidatingTests
验证测试

为什么验证测试?

验证测试时,SOAtest 将以负载测试模式运行它们并提醒你任何可能影响负载测试的显出问题。例如,配置了错误的 将以负载测试模式运行它们并提醒您任何可能影响负载测试的显出问题。例如,配置了错误的 HTTP 请求。通过这种方式,可以在实际负载测试开始之前解决这些问题。 

...

为了更好地确定每个测试步骤发生的内容,可以让 SOAtest 显示浏览器呈现负载测试请求时发生的内容。为此,请双击添加到相关测试的浏览器内容视图器。

如果希望对为什么测试没有产生预期结果可视化,这一点非常有用。例如,呈现的页面可能会显示登录不正确。使用此工具,以及检查错误消息,可以帮助你识别和解决问题的原因。如果希望对为什么测试没有产生预期结果可视化,这一点非常有用。例如,呈现的页面可能会显示登录不正确。使用此工具,以及检查错误消息,可以帮助您识别和解决问题的原因。

验证在寻找什么?

验证期间,SOAtest 决定是否需要在场景上进行任何配置,可以是自动化的配置(SOAtest),也可以是手动配置。  如果验证没有成功,它将指示需要运行配置步骤,或者如果已经运行了配置步骤,则需要手动配置参数。

...

  1. 错误将由“Validate for Load Test”报告。  下面是你可能看见的一些错误,以及它们可能的含义:下面是您可能看见的一些错误,以及它们可能的含义:
    1. HTTP 错误码(比如, 404 – 无法找到;或 401 – 未授权)。  这意味着 HTTP 请求的动态参数值不正确,或者配置错误。
    2. 功能测试错误,比如“无法执行用户操作”,“无法验证或提取...”。  出现这些错误是因为无法找到测试失败的指定页面元素。  找不到页面元素通常是因为 HTTP 响应中包含意外数据。同样,这通常是因为 HTTP 请求的动态参数值不正确,或者配置错误。
  2. 浏览器内容视图器将在使用不正确的动态参数时显示不正确或意外的页面。

...

这有一个类,其中 SOAtest 无法对其动态参数值进行自动配置:该值通常由 JavaScript 在浏览器中构造或转换。  由于(转换的)参数值不存在于任何 HTTP 响应中,所以 SOAtest 无法提取它们以便在任何 HTTP 请求中使用。

这些参数需要手动配置。当 web 应用程序需要为每个会话更新这些存在的动态参数时,验证将向你发出警告。应用程序需要为每个会话更新这些存在的动态参数时,验证将向您发出警告。

如何手动配置参数?

使用 How Do I Parameterize or Script Request Values中描述的过程。

...

  1. 在 SOAtest 的负载测试透视图中,打开提交 PDF 文件的测试。在上面成心阿德示例场景中,这是 文件的测试。在上面显示的示例场景中,这是 Test 4:单击 submit
  2. 在测试的 Request Body 选项卡中,突出显示文件内容并单击 Parameterize Selected Text

    Info
    iconfalse
    title如果文件内容不适应 Request Body 文本框怎么办?

    如果 PDF 文件太大,则内容可能不适应呈现请求体的文本框。在这种情况下:

    1. 将场景设置为使用小文件。
    2. 运行"Configure for Load Test”测试配置。
    3. 创建参数化的值。
    4. 将场景重新设置为使用所需 PDF。
  3. 命名参数化的值为 fileContents 并使用 Scripted 值。



  4. 对于脚本化的值,使用下面的 Jython 代码(将你自己的路径替换为二进制文件)。代码(将您自己的路径替换为二进制文件)。

Code Block
from com.parasoft.api import IOUtil 
from java.io import File
def readBinaryFile(context):
     binaryFile = File("c:\\tmp\\binary.pdf")
     return IOUtil.readBinaryFile(binaryFile)

脚本化的值必须返回 byte[] 类型的值。这是一个 Java 类型:无法返回一个 Jython 数组。若要创建 byte[] 值,则可以使用工具方法 IOUtil.readBinaryFile()。也可以返回 Jython jarray。(关于如何创建 jarray 对象的更多信息,请查阅 Jython 文档。)

你的请求体现在应该使用参数化的 您的请求体现在应该使用参数化的 ${fileContents} 值:

Code Block
-----------------------------7d9271373005fa
Content-Disposition: form-data; name="comment1"
first comment
-----------------------------7d9271373005fa
Content-Disposition: form-data; name="binaryFile"; filename="binary.pdf" Content-Type: application/pdf
${fileContents}
-----------------------------7d9271373005fa Content-Disposition: form-data; name="comment2"
second comment
-----------------------------7d9271373005fa Content-Disposition: form-data; name="submit"
submit
-----------------------------7d9271373005fa--

...