51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1629|回复: 2
打印 上一主题 下一主题

VisualStudio负载测试

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-2-28 15:01:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Visual Studio Team System 提供了强大的负载测试功能。

一个负载测试应该有几部分组成:

1.方案:主要是对该负载测试中包含的WebTest的比重、浏览器情况、网络组合、用户数的设置;

2.计数器:性能计数器

3.运行设置:负载测试的结果记录,thinktime的设置,采样速率等等。采样速率是指客户端的每间隔多
长时间获取一次数据,默认为5s

1.创建WebTest,创建一个负载测试的前提是先创建其需要的WebTests,新建时经常会出现 “浏览器扩
展当前在Internet Explorer中处于禁用状态”之类的错误,可以先不考虑此问题,可以按照其提示的信
息,点击确定后,从浏览器的 查看->浏览器栏 -> Web测试记录器 ,并开始记录。在浏览器中输入要
进行的web测试地址,并可以进行与数据库的交互操作。最后停止记录,最自动生成WebTest。
2.优化WebTest,对于在浏览器中生成的WebTest有一些公用的参数可以提取出来,如服务器地址,
通用的querystring,规则大概有以下几点:
1).用户登录类的数据需要进行处理,如:通过在WebTest的Head里加上人员的LoginName 信息,服
务器端可以通过更改配置文件来允许测试,impersonate=true,或者在HttpModule过滤时对请求做处理,
比如对于HttpRequest中只要Head包含某个用户的信息,就以此用户为登录用户。
2).添加上下文参数:每一个请求都包含相似的内容时,添加上下文参数,如:讲服务器IP及端口添加
到一个上下文参数中,而后将参数添加到链接中,之后若对其他服务器进行测试,则只需要改动这一
个参数就可以了。
3).添加数据源:对于登录用户一般使用数据源进行用户的交替登录,可以通过在WebTest中添加数据
源,在每一个请求中添加标头。数据源可以是数据库,CSV,或XML格式。
4).添加验证规则:对于每一次请求,可以添加验证规则来判断请求是否成功。如我预先知道某一个页
面post后返回到客户端的内容,可以在验证规则中查找对应的文本。可以自定义验证规则。
5).添加提取规则:提取规则是为了下一次的请求需要用上一次post返回的数据。可以自定义提取规则。
一个简单的提取规则:
  1. using System;

  2. using Microsoft.VisualStudio.TestTools.WebTesting;
  3. using System.Globalization;

  4. namespace ExtractionRules
  5. {
  6. public class ExtractEventValidation : ExtractionRule
  7. {
  8.   public override string RuleName
  9.   {
  10.    get
  11.    {
  12.     return "ExtractEventValidation";
  13.    }
  14.   }

  15.   public override string RuleDescription
  16.   {
  17.    get
  18.    {
  19.     return "Get the EventValidation value in response";
  20.    }
  21.   }

  22.   public override void Extract(object sender, ExtractionEventArgs e)
  23.   {
  24.    if (e.Response.HtmlDocument != null)
  25.    {
  26.     foreach (HtmlTag tag in e.Response.HtmlDocument.GetFilteredHtmlTags(new string[] { "input" }))
  27.     {
  28.      if (String.Equals(tag.GetAttributeValueAsString("id"), "__EVENTVALIDATION", StringComparison.InvariantCultureIgnoreCase))
  29.      {
  30.       string formFieldValue = tag.GetAttributeValueAsString("value");
  31.       if (formFieldValue == null)
  32.       {
  33.        formFieldValue = String.Empty;
  34.       }

  35.       e.WebTest.Context.Add(this.ContextParameterName, formFieldValue);
  36.       e.Success = true;
  37.       return;
  38.      }
  39.     }
  40.    }
  41.    e.Success = false;
  42.    e.Message = String.Format(CultureInfo.CurrentCulture, "Not Found: {0}, ResponsePageContent:{1} ", "__EVENTVALIDATION", e.Response.BodyString);
  43.   }
  44. }
  45. }
复制代码
6).生成代码,如果配置达不到我们需要的时候,可以通过生成代码,开发来满足我们需要的东西,
复杂的post通常需要我们开发代码,生成的代码很容易被开发人员理解,无非是一个接一个的
WebTestRequest,并且设置请求的一些参数。
3.创建LoadTest,负责测试主要由一组WebTest组成,同时包含这些组合的设置以及技术器的相关
配置。
1).方案,主要设置thinktime,当然也可以在WebTest中进行单独请求的设置。
2).测试组和:将WebTest或UnitTest添加到组合中。
3).测试结果存储:测试结果将储存到Controller的数据库,点击菜单中的【测试】-->【管理测试控
制器】 ,更改设置数据库连接字符串。也可以通过命令创建该数据库,具体要查msdn。
4).SQL跟踪链接字符串与SQL跟踪目录,感觉没什么作用,但还是需要配置,否则会出错。
4.运行负载测试
1).最关键的几个参数配置:方案中的负载模式为指定以多少用户进行迭代,运行持续时间,测试
迭代,采样速率。
2).负载测试最关键的地方不在于如何创建和运行负载测试,最难是如何监控和读取服务器性能;
对于Web服务器,通常我们关心的是ASP.NET下的请求数,w3wp进程占用的内存资源;对于DB服
务器通常查看的是磁盘每秒读和磁盘每秒写,具体应用偏重需要考虑。
3).服务器性能计数器是门很深的学问,我很快学会了负载测试,却要花费更多的时间去看性能计
数器,性能计数器也可以自己开发和注册。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-25 03:12 , Processed in 0.064960 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表