我有一个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的SetUp
和TearDown
方法,无论您选择了单个测试还是程序集中的所有测试,这些方法都可以为所有测试运行一次。
一些搜索意味着等效的是Init
和Term
测试。
1) 右键单击负载测试中的方案节点,然后选择编辑测试 混合。。。
2)在编辑测试组合对话框中,查看底部的表单。 你会 请参阅2个复选框。 一个用于初始化测试,一个用于学期测试。
初始化测试将在每个用户之前运行,术语测试将在以下情况下运行 用户完成。 要确保术语测试运行,您还需要设置 负载测试的冷却时间。 冷却时间是 的属性 "运行设置"节点。 此设置使测试有机会排出 持续时间完成时。 您可以将其设置为 5 分钟。 冷却时间 周期不一定运行 5 分钟。 当所有 学期测试已完成。 如果这需要 20 秒,那么那就是 负载测试何时完成。