八、监视与分析
—监视器和分析器
—关系图
—表
—错误与阈值
—SQL跟踪
—分析错误
—创建插件
监视器和分析器
—监视器用来实时查看负载测试结果
—分析器用于检查已经保存的所有负载测试结果
—分析前提,设置了负载测试结果存储区
嵌入的状态栏显示测试状态以及错误或阈值冲突的总数。
使用“计数器”窗格中的树结构来快速查看各种性能计数器或各个计算机。
—计数器
显示已添加到负载测试中的性能计数器
—关系图
显示关系图上来自运行期间收集到的数据的绘制点
—点
“关系图”窗格的一部分。显示当前关系图中使用的数据。
—摘要
显示从运行中得来的摘要数据。
—表
显示一组包含运行数据的表,例如“错误”表和“阈值”表。在分析器中可以查看 SQL 跟踪数据。
关系图
图形化计数器的图例显示一些有用的数据列
默认关系图(显示用户负载、吞吐量和响应时间)
表
—表选项:
错误
显示在运行期间创建的错误列表。
页
显示在运行中使用的页列表。
请求
显示在运行期间发送的所有 HTTP 请求。其中包括从属请求,如图像。
测试
显示负载测试中使用的测试列表。
阈值
显示运行期间超过的阈值的列表。
事务
显示运行中的事务列表。
SQL 跟踪
只有在使用 SQL 跟踪时,才可在运行后的分析器中看到该选项。
代理
只有在包含多个代理的 rig 上运行测试时,才可看到该选项。
错误与阈值
—错误和阈值计数在嵌入的状态栏上显示为链接。
—单击其中一个链接便会激活相应的表:“错误”表或“阈值”表。
计数器树显示了阈值冲突。如果当前的采样间隔内发生了阈值冲突,则除了节点名称外,您还会看到一个红色的符号或一个黄色的符号。在运行持续期间,这些符号将保留,但当不再超出阈值时,这些符号就会灰显。
阈值网格显示了前 1,000 个阈值冲突,包括发生冲突的时间。
可以找到一个超出阈值的计数器,并通过把符号拖动到关系图上的方式来绘制该计数器。
警告:
错误:
阈值
—在负载测试中显示阈值冲突时,可以在两种阈值规则中进行选择:
Ø比较常数
将性能计数器的值与一个常数值进行比较。
Ø比较计数器
将一个性能计数器的值与另一个性能计数器的值进行比较。
可以设置一个“警告阈值”级别,当达到该警告级别时,负载测试监视器和分析器中便会出现一个指示此警告的黄色符号。
可以设置一个“关键阈值”级别,当达到该警告级别时,负载测试监视器和分析器中便会出现一个指示此警告的红色符号。
比较计数器属性设置:临界阈值和警告阈值
新建比较常数
新建比较计数器
SQL跟踪
—通过收集跟踪数据,可以识别出在所测试的 SQL 数据库中运行速度最慢的查询和存储过程。
—单击“表”按钮。从“表”列表框中选择“SQL 跟踪”。
—通常,“持续时间”列是第一个要检查的列。此列中收集的数据的单位为毫秒。
—SQL 跟踪面板将列出运行速度最慢的 SQL 操作,并根据持续时间按照最慢的操作放在最上面的方式来排序。
—此面板上可以显示的 SQL 跟踪输出中的数据列:
Ø事件类
Ø持续时间
ØCPU
Ø读取
Ø写入
Ø文本数据
Ø开始时间
Ø结束时间
Ø主机名
Ø应用程序名
Ø登录名
ØNT 用户名
如果需要跟踪 SQL 事件而不是跟踪在这些列中标识出的数据,则必须使用与 Visual Studio Team Edition for Testers 分开提供的 SQL Profiler 工具设置自己的自定义 SQL 跟踪。
分析错误
—提供了两种查看错误的方式:关系图和表
—Demo
—Example:Could not find dependent counter needed to apply threshold rule
—Example:The load test results database could not be opened.
解决参考:
http://msdn2.microsoft.com/en-us/vstudio/aa718685.aspx
创建插件
—负载测试提供了API,Microsoft.VisualStudio.TestTools.LoadTesting
—可以使用API创建负载测试插件
—Demo
using System;
using Microsoft.VisualStudio.TestTools.LoadTesting;
using System.Net.Mail;
using System.Windows.Forms;
namespace DataDrivenUnitTest
{
public class MyLoadTestPlugin : ILoadTestPlugin
{
LoadTest myLoadTest;
public void Initialize(LoadTest loadTest)
{
myLoadTest = loadTest;
myLoadTest.LoadTestFinished += new
EventHandler(myLoadTest_LoadTestFinished);
}
void myLoadTest_LoadTestFinished(object sender, EventArgs e)
{
try
{
// place custom code here
MailAddress MyAddress = new
MailAddress("someone@example.com");
MailMessage MyMail = new MailMessage(MyAddress, MyAddress);
MyMail.Subject = "Load Test Finished -- Admin Email";
MyMail.Body = ((LoadTest)sender).Name + " has finished.";
SmtpClient MySmtpClient = new
SmtpClient("localhost");
MySmtpClient.Send(MyMail);
}
catch (SmtpException ex)
{
MessageBox.Show(ex.InnerException.Message +
".\r\nMake sure you have a valid SMTP.");
}
}
}
}
—有八种事件与负载测试相关联,且可在负载测试插件中进行处理,以使用负载测试运行自定义代码。以下是事件的列表,这些事件提供对负载测试运行的不同时间段的访问:
ØLoadTestStarting
ØLoadTestFinished
ØLoadTestWarmupComplete
ØTestStarting
ØTestFinished
ØThresholdExceeded
ØHeartBeat
ØLoadTestAborted