需要登录的 Web 性能测试:如何使其在隔离和负载测试中工作



我有一个Visual Studio 2010负载测试,其中包含许多Web性能测试。 运行 Web 性能测试需要您登录到受测网站。因此,负载测试包含一个初始化步骤 - 一个小型 Web 性能测试,它执行登录,并使用插件缓存由此获得的 cookie。"真正的"Web性能测试 - 实际完成工作的测试也每个都有一个插件,用于读取缓存的cookie并将其添加到测试中,以便每个测试正常运行:

public override void PreWebTest(object sender, PreWebTestEventArgs e)
{
    if (CookieCache.Cookies != null) // CookieCache is a static class of mine
        e.WebTest.Context.CookieContainer.Add(CookieCache.Cookies);

问题是,虽然当我运行负载测试时,这一切都可以正常工作,但这意味着我无法单独运行任何 Web 性能测试,因为如果负载测试初始值设定项尚未运行,则没有 cookie,因此 Web 性能测试不会登录并且会失败。

对于

这种情况,是否有任何推荐的解决方案?换句话说,如果 Web 性能测试需要登录,有没有办法让它在隔离和负载测试中运行时运行?

单独运行每个 Web 性能测试的明显方法是让它首先调用登录测试,但我不能这样做,因为这将是负载测试的错误行为(每个用户登录应该只发生一次,就在负载测试开始时)。

解决方案是将登录测试添加到您的个人 Web 性能测试中(通过"插入对 Web 测试的调用"),但由"上下文参数存在"条件规则限制,该规则查找上下文参数$LoadTestUserContext缺失。 仅当 Web 测试在负载测试中运行时,该参数才存在。

这样,无论是在负载测试内部还是外部,您都只能获得一个登录名。

为什么不尝试使用 PreRequest 函数而不是 PreWebTestFunction

Public Overrides Sub PreRequest(sender As Object, e As PreRequestEventArgs)
  MyBase.PreRequest(sender, e)
  Dim cookie As System.Net.Cookie = New System.Net.Cookie(...)
  e.Request.Cookies.Add(cookie)

这样,负载测试和 Web 测试都将正常工作。

我不

熟悉Visual Studio 2010负载测试,但听起来您需要等效的NUnit的SetUpTearDown方法,无论您选择了单个测试还是程序集中的所有测试,这些方法都可以为所有测试运行一次。

一些搜索意味着等效的是InitTerm测试。

1) 右键单击负载测试中的方案节点,然后选择编辑测试 混合。。。

2)在编辑测试组合对话框中,查看底部的表单。 你会 请参阅2个复选框。 一个用于初始化测试,一个用于学期测试。

初始化测试将在每个用户之前运行,术语测试将在以下情况下运行 用户完成。 要确保术语测试运行,您还需要设置 负载测试的冷却时间。 冷却时间是 的属性 "运行设置"节点。 此设置使测试有机会排出 持续时间完成时。 您可以将其设置为 5 分钟。 冷却时间 周期不一定运行 5 分钟。 当所有 学期测试已完成。 如果这需要 20 秒,那么那就是 负载测试何时完成。

最新更新