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

Pha*_*mer 3 webtest load-testing visual-studio-2010

我有一个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);
Run Code Online (Sandbox Code Playgroud)

问题是虽然这一切在我运行负载测试时都能正常工作,但这意味着我无法单独运行任何Web性能测试,因为如果负载测试初始化​​程序没有运行那么就没有cookie,所以web性能测试将不会登录并将失败.

这种情况有没有推荐的解决方案?换句话说,如果Web性能测试需要登录,是否有任何方法可以让它独立运行并且何时进行负载测试?

单独运行每个Web性能测试的明显方法是让它首先调用登录测试,但我不能这样做,因为这对于负载测试来说是不正确的行为(每个用户只登录一次,在负载测试开始时).

age*_*ega 5

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

这样,无论是在负载测试内还是外,您都只能获得一次登录.