HTTP (S) 负载测试向单个 URL 生成并发请求。 它检查目标 URL 是否提供正确的内容、错误和中断的链接。 它支持 POST 和 GET 请求、Cookie、表单提交、自定义标头、密码保护站点(基本 HTTP/HTTPS 授权以及 Cookie/脚本授权机制)和超时阈值。 HTTP (S) 负载测试支持 IPv4IPv6 协议。

您可以将 HTTP (S) 请求参数转换为 上下文参数 以传递值,例如,从负载测试设备中其他请求的响应中检索。 您可以为 URL、标题、请求内容(用于帖子、放置、修补方法)以及准备和发布脚本设置上下文参数。 有关详细信息,请参阅 如何在 HTTP (S) 请求中使用上下文参数

URL

输入要执行任务的页面的 URL。 其格式应为:www.example.com。 您可以通过单击部分顶部的 “详细 切换器”打开视觉友好的输入模式。

SSL/证书检查

安全插座层 SSL 证书检查是 HTTP (S) 测试的一个标准方面。

提供以下其他选项:

  • 授权: 验证证书链是否包含可信或不信任的根证书。
  • 通用名称 (CN): 验证您导航的地址是否与地址签名的地址证书相匹配。
  • 日期: 验证证书到期日期。
  • 撤销: 验证证书的信任链不包含被撤销的证书。
  • 使用: 验证证书链,以不当使用中间证书。
  • 天中的过期提醒: 通知(作为错误)有关证书过期的提醒。
  • 客户证书:客户证书名称。

完成超时(以秒为单位)

输入任务应等待网页响应的秒数,然后结束任务并返回错误。 如果此为空白,则任务的默认超时为 120 秒。

请求类型

您可以向网页发送获取或开机自检请求。 选择 GET 请求只需从 Web 服务器检索数据即可。 选择 POST 请求表示您包括一组数据供服务器执行。

如果您将请求类型设置为 POST,但未在下面的其他参数部分指定 POST 参数,则 POST 值将默认在保存任务后返回 GET。

网址重定向

如果 “关注重定向 “选项设置为 “是“,系统将遵循带有 301 响应发送的 URL 路径,并将每个重定向视为单独的 HTTP 请求。 它使您能够按照测试结果中的完整重定向链(请求重定向通过的所有链接)进行跟踪,包括初始 URL 和后续响应的响应时间。

如果您不仅需要测试初始 URL,还需要测试链中的所有 URL,我们建议您保留 “关注重定向 “选项。 例如,在重定向链中对每个 URL 执行 SSL 证书检查可能很有用。

在仅要测试初始 URL 的情况下,禁用 “关注重定向” 选项。

请注意,默认重定向限制设置为 10 重定向。 如果您希望系统执行特定数量的重定向(少于 10),则可以指定要在 准备脚本 字段中的重定向链中测试的 URL 数量:

string url;
url = "http://wtatour.com/";
(current.Task).TaskMaxRedirectAttempts = N;

N是我们要关注的重定向位置的数目的位置。 要遵循无重定向,只需将重定向位置的数目设置为 0。

内容验证

内容验证关键字用于确保预期内容加载到网页上。 在 关键字 字段中,您可以指定希望在网页内容中搜索的一个或多个单词或短语。 如果找不到预期的关键字,则任务将返回错误。

您可以在关键字字段中输入多个字符串。 输入的值可以通过逻辑表达式分隔,如下所示:

{[("keyword1"&"keyword2")|!"keyword3"]}

哪里:
[ ] 关键字表达式开始;
* = 关键字表达式结束;
() = 对括号进行分组;
和 = 逻辑和;
|• 逻辑 OR;
!• 逻辑不;
“字符串”–关键字。

成功的关键字表达必须包括以下开头和结尾括号:

{["keyword"]}

基本身份验证

基本身份验证计划用于允许用户访问某些网站上的内容。 一旦提供登录凭据,将随请求标题一起传递到 Web 服务器。

  • 用户名: 包含 HTTP/S 基本或摘要访问身份验证的用户名。
  • 用户密码: 包含 HTTP/S 基本或摘要访问身份验证的密码。

不要将基本身份验证与其他身份验证计划混淆,例如涉及无记名令牌的无记名身份验证和使用权限令牌的 OAuth 2.0。

阅读有关 基本身份验证用户名和密码 以及 监控基于 OAuth 2.0 的 API 的文章,了解更多信息。

该选项允许添加任何其他自定义标题。 例如,您可以定义与内容类型标题中的请求一起发送的数据的 MIME 类型:

Content-Type: text/html

如果没有为请求指定内容类型标题,则请求将使用默认内容类型 应用程序/x-www-形式-ulencode 发送

默认用户代理标题设置为:

用户代理:莫齐拉/5.0(兼容:MSIE 10.0;视窗 NT 6.1;三叉星 /6.0; .NET CLR 1.1.4322; .净 CLR 1.0.3705; .净 CLR 2.0.50727; .NET CLR 3.0.04506.648:.NET CLR 3.5.21022:.NET CLR 3.0.4506.2152:.NET CLR 3.5.30729)德布罗瑟/2.1(SV)

但是,用户代理字符串可以替换为任何其他字符串。 为此,添加带有”用户代理”名称和所需特定值的自定义标题。

 

帖子(放,补丁)数据

如果选择了 POST、PUT 或修补程序方法之一,则可以在此指定有效载荷。 HTTP 请求主体内的内容可作为”原始”数据(JSON、XML 等)或静态名称值收集(表单数据)发送。

要处理名称值集合,您可以使用部分顶部的详细切换器打开 详细 的输入模式,并在相应的字段中提供请求参数名称和值。

要将”原始”数据与请求一起发送(如 JSON 对象),请在输入字段中输入 JSON 有效载荷。 您还可以动态更改请求主体。 例如,如果您需要将当前日期和时间作为 POST 请求的一部分发送,或将 JSON 有效载荷中的当前会话 ID 传递给远程服务器。 Dotcom-Monitor 使用剃刀语法和数据口罩实现动态更改 HTTP 请求有效负载。

  • 例。用于 HTTP 帖子请求的动态 JSON 机构

    要更好地了解动态 JSON 机构在 HTTP 请求中的工作原理,请查看以下示例。 假设我们需要在网站上提交订单,提交交易包括按顺序执行的三个基本步骤:

    1. 登录
    2. 入住
    3. 订单提交

    要设置按顺序执行的这些步骤的测试,我们需要 在一个监控设备内创建三个 HTTP 任务 (或负载测试,如果进行负载测试)。

    让我们假设我们需要发送当前时间和JSON中唯一的GUID,并请求HTTP以签入应用程序。 此外,要提交订单,应用程序还需要在登录时生成用户会话 ID 和订单时间。

    要实施此测试,我们首先需要将具有基本身份验证参数的登录请求配置到 Web 应用程序 Web 服务器。 接下来,我们需要配置一个 HTTP 请求,以便通过实际办理登机手续的时间和独特的 GUID 以及 JSON 机构。 例如,我们将使用 JSON 体内的剃刀语法输入以下字符串:

    { "CheckInTime": "@Model["CurrentTime"]", "GenGuid": "@Model["Guid"]" }

    @Model[” < 参数名称 > “] 在剃刀表达式中引用必要的上下文参数名称时。

    我们必须声明上下文参数,并指定在准备脚本字段中应如何处理邮政数据:

    context.Guid = Guid.NewGuid().ToString(); // uniq random string
    context.CurrentTime = DateTime.Now.ToUniversalTime().ToString("yyyy-MM-dd\Thh:mm:ss") + ".0Z"; // get current time in UTC
    ProcessPostDataByRazor(currentTask); // the call to process the Post Data content with the Razor engine

    结果 HTTP 请求将看起来与此类似:

    03:15:23
    POST http://www.dotcom-monitor.com/CheckIn
    { "CheckInTime": "2021-03-30T08:15:22.0Z", "GenGuid": "5c5e3d23-66fd-49d0-bd57-62c516aea7e7" }

    在下一步,我们需要配置 HTTP 请求以提交订单。 为此,我们将通过订单当前时间和会话 ID,以及项目的模型识别号,在 JSON 主体到目标终点。 请参阅以下请求的 JSON 机构:

    { "OrderTime": "@Model["OrderTime"]",   "VIEWSTATE": "@Model["Session"]",  "ModelID": "2128506" }

    要传递当前会话 ID 变量的价值,我们需要使用”查看状态”方法从第一个登录步骤中调用的登录页面检索该变量。 它可以在准备脚本中编码。 此外,为了模拟真实用户的思考时间,我们将用三分钟的偏移设置订单时间变量。 因此,准备脚本字段将包含以下字符串:

    context.OrderTime = DateTime.Now.AddMinutes(3).ToUniversalTime().ToString("yyyy-MM-dd\Thh:mm:ss") + ".0Z"; // order time + 3 min
    context.Session = (Tasks["Login"] as Http).body["//INPUT[@ID='__VIEWSTATE']", "VALUE"]; // track state value from Login page 
    ProcessPostDataByRazor(currentTask);

    由此产生的 HTTP 请求将看起来与此类似:

    03:15:45
    POST http://www.dotcom-monitor.com/Order
    { "OrderTime": "2021-03-30T08:18:45.0Z", "VIEWSTATE": "<Server Generated ViewState>", "ModelID": "2128506" }
                        

要了解如何配置具有动态更改有效载荷的 HTTP 请求,请参阅 HTTP 请求中如何动态更改有效载荷

准备脚本和发布脚本

字段可以包含 C# 代码,可用于特定的 POST、GET、URL 数据或验证或发布自定义标题。 请参阅” 使用准备脚本”和”后脚本” 文章,或联系技术支持以了解有关使用的更多详细信息。

创建负载测试设备后,将提示您 配置负载测试场景