(转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个数据库reportserver和reports,在iis中自动配置2个虚拟目录reportserver和reports
配置已有的web报告站点
1.数据库的连接
web.config中
<add key="ResultDB" value="server=YourDBServerName;User ID=LoadTest;Pwd=LoadTest;Database=LoadTest"/>
改为你连接的数据库相应的服务器,用户名,密码。
b.选中PerfResultReports项目,右键选中属性,设置targeturl为http://你报表服务器/ReportServer和targetfolder为报表部署到报表服务器下对应的目标文件夹
c.双击PerfResultReports项目下的共享文件夹中的LoadTest.rds文件
将数据源的联接,改为你的数据库连接,
"Data Source=YourDBServerName;Initial Catalog=LoadTest"
d.修改Resultsforprojects.ascx.cs中sqlConnection2的连接
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;
}