Web 和负载测试 VS 2015 - 从请求的最后一次重定向获取查询字符串

Web and Load testing VS 2015 - getting query string from last redirection of a request

我不熟悉 VS 中的 Web 和负载测试。我没有使用记录器,因为有太多垃圾流量需要清除。录音机往往会让我感到困惑和迷惑,而不是阐明。我正在模拟我们应用程序的登录过程,以便检索身份验证令牌以传递给我要测试的服务。我边走边看Fiddler里的路况

所以第 1 步,导航到 AUT 的 URL。当我这样做时,我看到了一系列重定向,其结果是一个新的 URL,请求中有一个 cookie 和一个查询字符串,响应中有登录表单。

在我的下一个请求中,我想将前一个重定向的 cookie 和查询字符串包含到我现在发出的请求中。此时我还没有编写代码,但正在使用测试设计器。如何检索要包含在下一个请求中的值?

谢谢

可能的方式包括:

(1) 将请求中的 Follow redirects 属性 设置为 False,然后为重定向链中的每个 URL 创建请求。在相关地方添加抽取规则,并在后续请求中使用抽取的值。当只有一个重定向或者可能只有很少的重定向时,这是正常的方法。

(2) 与上面类似,但是编写一个插件来进行重定向处理并将链中的下一个请求添加到测试中。


一般cookies和query string参数是从response中抽取出来写入requests中的,一般不会从requests中抽取。 Visual Studio 网络测试通常无需帮助即可处理 cookie。

查询字符串参数的值可以来自响应中的许多地方。如果需要特殊的 cookie 处理,则可以从 ExtractHttpHeader 字段 Set-Cookie.

字段的 ExtractHttpHeader 提取规则中提取它们

如果您确实需要从请求中提取值,那么 PreRequest 插件可以在发送请求之前访问请求的各个部分。

对于您尝试处理的请求,我设想使用三个请求,每个请求的 Follow redirects 设置为 False。他们是:

(1)

Request: http://localhost:12345
Response: extract port number and other url fragments to context parameters `PortNumber1` and `UrlFragment1`, etc.

(2)

Request: http://localhost:{{PortNumber1}}/{{UrlFragment1}}
Response: extract redirected url to `Url2` and cookie(s) to `Cookies2`

(3)

Request: http://{{Url2}}/
    Query string parameters written to header fields,
        either by fields in the web test
        or by plugin creating the values            
Response: ...

您可能会重新考虑使用网络测试记录器。我发现它在创建网络测试方面做得很好。需要额外的工作来处理动态参数,但不管有没有记录器,都需要这种工作。你说 "there is too much garbage traffic to weed out" 但如果它真的是垃圾,那应该只需要几分钟。然而,它是被测系统的一部分,如果它被删除,那么网络测试是否会正确地模拟被测网站上的真实 activity?