.NET_STAR

打造技术团队,愿与您共同开创事业!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

(转http://www.cnblogs.com/Ring1981/archive/2007/05/15/745533.html

VSTS提供了一个丰富、强大的工具平台,融合了软件开发领域的各个角色,涵盖软件开发生命周期的各个阶段,包括设计,开发,测试,管理,而这一整套构件的融会贯通,让它可以有效地改善软件开发过程中各个阶段的弊端,提高团队之间不同的角色的协调能力,提高工作效率。

本文就简单介绍一下如何利用VSTS给一个网站做压力测试。
1 建立一个测试项目,起名MyTest



2 建立一个Web Test



点击Web Test...
IE马上就会弹出一个窗口,这样录制脚本工作就可以开始了。

3 在IE里输入要测试的网站地址: 比如 http://localhost/WebSite/Default.aspx

4 对该网站做一些操作, 此时VSTS会纪录下你的这些操作,用以作为压力测试的场景。

5 录制脚本毕,点击 "STOP"

6 点击生成代码,可以看到刚才录制的类似如下的代码:

 

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:2.0.50727.42
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace MyTest
{
    
using System;
    
using System.Collections.Generic;
    
using System.Text;
    
using Microsoft.VisualStudio.TestTools.WebTesting;
    
using Microsoft.VisualStudio.TestTools.WebTesting.Rules;


    
public class WebTest1Coded : WebTest
    
{

        
public WebTest1Coded()
        
{
            
this.PreAuthenticate = true;
        }


        
public override IEnumerator<WebTestRequest> GetRequestEnumerator()
        
{
            WebTestRequest request1 
= new WebTestRequest("http://localhost/WebSite/Default.aspx");
            request1.ThinkTime 
= 1688;
            ExtractHiddenFields rule1 
= new ExtractHiddenFields();
            rule1.ContextParameterName 
= "1";
            request1.ExtractValues 
+= new EventHandler<ExtractionEventArgs>(rule1.Extract);
            yield 
return request1;

            WebTestRequest request2 
= new WebTestRequest("http://localhost/WebSite/Default.aspx");
            request2.ThinkTime 
= 2;
            request2.Method 
= "POST";
            FormPostHttpBody request2Body 
= new FormPostHttpBody();
            request2Body.FormPostParameters.Add(
"__VIEWSTATE"this.Context["$HIDDEN1.__VIEWSTATE"].ToString());
            request2Body.FormPostParameters.Add(
"Button1""Go to Test Page");
            request2Body.FormPostParameters.Add(
"__VIEWSTATEENCRYPTED"this.Context["$HIDDEN1.__VIEWSTATEENCRYPTED"].ToString());
            request2Body.FormPostParameters.Add(
"__EVENTVALIDATION"this.Context["$HIDDEN1.__EVENTVALIDATION"].ToString());
            request2.Body 
= request2Body;
            ExtractHiddenFields rule2 
= new ExtractHiddenFields();
            rule2.ContextParameterName 
= "1";
            request2.ExtractValues 
+= new EventHandler<ExtractionEventArgs>(rule2.Extract);
            yield 
return request2;

            WebTestRequest request3 
= new WebTestRequest("http://localhost/WebSite/test.aspx");
            request3.Method 
= "POST";
            FormPostHttpBody request3Body 
= new FormPostHttpBody();
            request3Body.FormPostParameters.Add(
"__VIEWSTATE"this.Context["$HIDDEN1.__VIEWSTATE"].ToString());
            request3Body.FormPostParameters.Add(
"Button1""Go to default page.");
            request3Body.FormPostParameters.Add(
"__EVENTVALIDATION"this.Context["$HIDDEN1.__EVENTVALIDATION"].ToString());
            request3.Body 
= request3Body;
            yield 
return request3;
        }

    }

}


7 添加一个Load Test ...



8 填写好Load Test的各项参数
 

1) 第一步是填写场景名
2) 第二步是填写装载的样式
    如果选择一次装载固定的用户数,选择第一项Constant Load
    如果选择"Setp Load",表示步增,设置好开始时的用户数,以及经过多久每次增加的用户数
3) Test Mix
4) Browser Mix
5) Network Mix
6) 在Counter Sets 选择Add Compuer...,表示要对某个PC进行监控
7) Run Settings

9 点击Finish

10 点击Run Test,测试就开始了。



压力测试运行后,我们就可以选中某个参数,查看某个时刻机器个方面的性能。参看下图: 



我们也可以运行perfmon,通过Performance查看机器的各项指标。

 

(转http://space.itpub.net/100788/viewspace-246325)vs2005 负载测试

Load Test

负载测试;在负载测试过程中进行监视的一组系统性能计数器。计数器集按不同技术划分,计数集中有不同的计数器,设置每个计数器的阈值(警告值和临界值),如果运行的实际时间超过阈值,则警告或报错。

如何运行负载测试

1.      选中测试项目,右键“添加--〉负载测试”弹出欢迎页面,点击“下一步”

弹出如下图页面:

输入测试方案名,选择思考时间的配置文件。思考时间是模拟用户从打开页面到执行操作之间的时间。

2.      点击下一步,为测试方案编辑负载模式设置

单击分步负载

开始用户计数设置为10个用户。

单步持续时间设置为10秒。

单步用户计数设置为10个用户/步。

最大用户计数设置为100个用户。

单击下一步

3.      向方案中添加测试

下一步是向负载测试方案中添加测试并编辑测试组合

单击添加选择测试。单击可用测试窗格中的测试,再单击箭头将测试添加到选定的测试窗格中。

添加完测试后,单击确定

随即出现测试组合。可以使用滑块来调整测试分发。

将滑块调整到首选组合后,单击下一步

4.      为测试方案选择浏览器组合

从下拉列表中选择IE6浏览器,将其添加到组合中。

还可以添加其他浏览器。使用滑块来调整测试分发和权重。

单击下一步

为测试方案选择网络组合

选择局域网连接类型以添加到网络带宽组合中。

还可以添加其他网络类型。使用滑块来调整测试分发和权重。

单击下一步

5.      指定在负载测试运行期间要使用计数器集监视的计算机

通过单击添加计算机选择要在测试运行期间监视的计算机,并键入承载您前面确定的非生产网站的服务器的名称。

通过添加主机名称,可以收集负载测试中重要的性能信息。(在监视的每个服务器上,都必须具有足够的用户权限以运行性能监视器。否则,将生成错误。)

可以为承载站点的SQL数据库的计算机添加一个单独的项。如果选择不添加任何计算机,则只有本地负载计数器会添加到测试中。

选择要监视的计数器集。将显示一组预定义的计数器集,它们用于向负载测试中添加特定的性能监视器。

如果所测试的站点在ASP.net服务器上运行,则请在“ASP.net”“IIS”选择框中为此测试放选中标记。

单击下一步

6.      编辑负载测试的运行设置

运行持续时间设置为2分钟,以便对负载测试执行冒烟测试。

生成Web测试和负载测试时,最好通过运行一个短暂的小负载测试来验证是否一切都已正确配置并可按预期运行。此过程称为冒烟测试。

单击完成。将在负载测试编辑器中打开负载测试。

7.      运行负载测试

负载测试编辑器中打开一个负载测试,再单击绿色的运行按钮。负载测试开始运行。

若要使可查看区域最大化,请从Visual Studio菜单中单击视图,再单击全屏显示

如果测试模拟超过所有阈值,则树控件节点中将出现图标,以指示阈值冲突。错误上覆盖着红色圆圈,而警告上覆盖着黄色三角形。可以找出超过阈值的计数器,然后通过将图标拖动到关系图上来绘制该计数器。可在测试运行期间进行此操作。通过观察图例中的计算机列,可以确定其所在的计算机。

如何设置计数器,计数器,以及如何设置阈值。

1.有三种计数器类别:百分比、计数和平均数。这三种计数器类别的例子分别为:“% CPU usage”CPU使用百分比)、“SQL Server lock counts”SQL Server锁计数)和“IIS requests per second”(每秒的IIS请求数)。

2.计数器集:将正在测试的服务器添加到需要收集其计数器的计算机的列表中,这一点很重要。这样就可以在负载测试期间收集和监视任何重要的系统数据。

3.阈值:

比较常数:将性能计数器的值与一个常数值进行比较。

比较计数器:将一个性能计数器的值与另一个性能计数器的值进行比较

如果超过则发出警报:将如果超过则发出警报属性设置为“True”,可指示超出阈值将出现问题。例如,如果对“% Processor Time”(处理器时间百分比(%))设置阈值规则,并且希望值大于90时收到警报,请使用比较常数规则类型,将临界阈值设置为90,并将如果超过则发出警报设置为“True”

如果超过则发出警报属性设置为“False”,可指示低于阈值将出现问题。例如,如果对“Requests/Sec”(请求/秒)设置阈值规则,并且希望值低于50时收到警报,请使用比较常数规则类型,将临界阈值设置为50,并将如果超过则发出警报设置为“False”

4.指定计数器集:

负载测试向导计数器集页上,会在预览选定内容窗格中看到现有计数器集。还会显示默认项,包括负载测试计数器集;默认情况下,负载测试计数器集由控制器收集。

(可选)单击添加计算机添加一个新的要监视的计算机。系统会提示您输入名称。键入名称,将在这一新项下看到一些节点,可以选择这些节点。例如,“ADO.NET”“IIS”“SQL”等。选中要选择的节点前面的复选框。新的计数器将出现在预览选定内容窗格中。

选择了计数器集之后,单击下一步可前进到负载测试向导运行设置页。

如何分析测试结果

包括每秒钟的请求数、失败请求的总数、平均响应时间以及平均页面时间。

如何设置sql 数据 数据存储。

 将收集性能计数器数据并将其存储在负载测试结果存储区中

1.在运行SQL Express的本地服务器上创建数据库表 

cd n:"Program Files"Microsoft Visual Studio 8"Common7"IDE

SQLCMD /S localhost"sqlexpress /i loadtestresultsrepository.sql

SQL服务器不在本地机

SQLCMD /S ContosoServer1 -i loadtestresultsrepository.sql

  

SQLCMD /S ContosoServer1 -U <用户名> -P <密码> -i loadtestresultsrepository.sql

2.测试菜单上,单击管理测试控制器。将显示管理测试控制器对话框

3.负载测试结果连接字符串中,单击浏览按钮(…)以显示连接属性对话框。

4.服务器名称中,键入localhost"sqlexpress或您在第2步中使用的服务器的名称(例如ContosoServer1)。

5.登录到服务器下,选择使用Windows身份验证

6.连接到一个数据库下,选择选择或输入一个数据库名。从下拉列表框中选择“LoadTest”。单击确定

7.管理测试控制器对话框中单击关闭

安装sql server 2005 reporting service

  安装成功后,在数据库中有2个数据库reportserverreports,在iis自动配置2个虚拟目录reportserverreports

配置已有的web报告站点

1.数据库的连接

web.config

<add key="ResultDB" value="server=YourDBServerName;User ID=LoadTest;Pwd=LoadTest;Database=LoadTest"/>

改为你连接的数据库相应的服务器,用户名,密码。

b.选中PerfResultReports项目,右键选中属性,设置targeturlhttp://你报表服务器/ReportServertargetfolder为报表部署到报表服务器下对应的目标文件夹

c.双击PerfResultReports项目下的共享文件夹中的LoadTest.rds文件

  将数据源的联接,改为你的数据库连接,

"Data Source=YourDBServerName;Initial Catalog=LoadTest"

d.修改Resultsforprojects.ascx.cssqlConnection2的连接

e.修改ResultsForProjects.ascx.cs中的代码如下:

 switch(e.CommandName)

     {

         case "Results" :                         

Response.Redirect("http://你的报表服务器/ReportServer?%2f报表所部署到的文件夹%2fLoadTestSummary&TestRunId=" + runID, false);

         break;

case "LoadChart" :              

Response.Redirect("http://你的报表服务器/ReportServer?%2f报表所部署到的文件夹%2fPagePerformanceOverTime&TestRunId=" + runID, false);

         break;

         case "WebRequests" :

Response.Redirect("http://你的报表服务器/ReportServer?%2f报表所部署到的文件夹%2fRequestPerformanceDetails&TestRunId=" + runID, false);

         break;

         case "Edit" :

         Session["RunId"] = runID;

         Response.Redirect("home.aspx", false);

         break;

     }

posted on 2008-08-12 13:53  雷明  阅读(4032)  评论(1编辑  收藏  举报