HTTP (S) 负载测试向单个 URL 生成并发请求。 它检查目标 URL 是否提供正确的内容、错误和中断的链接。 它支持 POST 和 GET 请求、Cookie、表单提交、自定义标头、密码保护站点(基本 HTTP/HTTPS 授权以及 Cookie/脚本授权机制)和超时阈值。 HTTP (S) 负载测试支持 IPv4 和 IPv6 协议。
您可以将 HTTP (S) 请求参数转换为 上下文参数 以传递值,例如,从负载测试设备中其他请求的响应中检索。 您可以为 URL、标题、请求内容(用于帖子、放置、修补方法)以及准备和发布脚本设置上下文参数。 有关详细信息,请参阅 如何在 HTTP (S) 请求中使用上下文参数。
URL
输入您希望测试的网址。 地址应与在浏览器中使用地址(如 http://www.example.com)时完全一样。您必须在地址开头包括 http:// 或 https://。 您可以在 URL 的末尾包含任何 GET 参数。
时间验证阈值(秒内)
输入系统在返回错误之前应等待目标资源响应的秒数。 如果这是空白的默认超时是120秒。
请求类型
在 “请求类型 ”字段中,您可以选择一种最常用的 HTTP 方法将监视请求发送到网页。 如果需要发送包含 HTTP 请求的有效负载,请在相应的字段中提供(有关详细信息,请参阅 请求正文 一章)。 可以指定有效负载,并将其与除 跟踪 (RFC2616) 之外的所有类型的请求一起发送。
网址重定向
如果 “关注重定向 “选项设置为 “是“,系统将遵循带有 301 响应发送的 URL 路径,并将每个重定向视为单独的 HTTP 请求。 它使您能够按照测试结果中的完整重定向链(请求重定向通过的所有链接)进行跟踪,包括初始 URL 和后续响应的响应时间。
如果您不仅需要测试初始 URL,还需要测试链中的所有 URL,我们建议您保留 “关注重定向 “选项。 例如,在重定向链中对每个 URL 执行 SSL 证书检查可能很有用。
在仅要测试初始 URL 的情况下,禁用 “关注重定向” 选项。
内容验证
内容验证关键字用于确保预期内容加载到网页上。 在 关键字 字段中,您可以指定希望在网页内容中搜索的一个或多个单词或短语。 如果找不到预期的关键字,则任务将返回错误。
您可以在关键字字段中输入多个字符串。 输入的值可以通过逻辑表达式分隔,如下所示:
{[("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 发送。
DNS 选项
DNS 选项功能允许用户选择在监控任务期间如何执行域名服务器 (DNS) 请求。 在 “自定义 DNS 主机 ”部分中,指定 IP 地址到主机名的自定义映射。 在迁移期间对网站进行负载测试可能很有用。 因此,您可以在新服务器上测试您的网站,同时所有用户继续在熟悉的 IP 地址上使用它。
请注意,该选项不受 LoadView 现场代理支持。 若要查找有关如何为现场代理设置自定义 DNS 主机的详细指南,请访问知识库的 如何设置自定义 DNS 主机以进行使用现场代理进行负载测试 一文。
帖子(放,补丁)数据
Dotcom-Monitor 允许您在 HTTP(S) 请求中发送有效负载(跟踪请求除外)。 HTTP 请求主体内的内容可作为”原始”数据(JSON、XML 等)或静态名称值收集(表单数据)发送。
要处理名称值集合,您可以使用部分顶部的详细切换器打开 详细 的输入模式,并在相应的字段中提供请求参数名称和值。
要将”原始”数据与请求一起发送(如 JSON 对象),请在输入字段中输入 JSON 有效载荷。 您还可以动态更改请求主体。 例如,如果您需要将当前日期和时间作为 POST 请求的一部分发送,或将 JSON 有效载荷中的当前会话 ID 传递给远程服务器。 Dotcom-Monitor 使用剃刀语法和数据口罩实现动态更改 HTTP 请求有效负载。
-
例。用于 HTTP 帖子请求的动态 JSON 机构
要更好地了解动态 JSON 机构在 HTTP 请求中的工作原理,请查看以下示例。 假设我们需要在网站上提交订单,提交交易包括按顺序执行的三个基本步骤:
- 登录
- 入住
- 订单提交
要设置按顺序执行的这些步骤的测试,我们需要 在一个监控设备内创建三个 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 https://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 https://www.dotcom-monitor.com/Order { "OrderTime": "2021-03-30T08:18:45.0Z", "VIEWSTATE": "<Server Generated ViewState>", "ModelID": "2128506" }
要了解如何配置具有动态更改有效载荷的 HTTP 请求,请参阅 HTTP 请求中如何动态更改有效载荷。
准备脚本和发布脚本
字段可以包含 C# 代码,可用于特定的 POST、GET、URL 数据或验证或发布自定义标题。 请参阅” 使用准备脚本”和”后脚本” 文章,或联系技术支持以了解有关使用的更多详细信息。