如何:创建 Web 性能测试插件
使用 Web 性能测试插件,可以隔离代码并在 Web 性能测试中的主要声明性语句外部重用代码。 自定义的 Web 性能测试插件为在运行 Web 性能测试时调用某些代码提供了途径。 在每个测试迭代中,Web 性能测试插件都要运行一次。 此外,如果重写测试插件中的 PreRequest 或 PostRequest 方法,这些请求插件将分别在每个请求之前或之后运行。
通过从 WebTestPlugin 基类派生您自己的类,可以创建自定义的 Web 性能测试插件。
可以将自定义的 Web 性能测试插件用于已记录的 Web 性能测试,这样您只需编写极少量的代码即可获得对 Web 性能测试的更大程度控制。 此外,还可以将它们用于编码 Web 性能测试。 有关更多信息,请参见如何:创建编码的 Web 性能测试。
备注
也可以创建负载测试插件。有关更多信息,请参见如何:创建负载测试插件。
要求
- Visual Studio 旗舰版
创建自定义 Web 性能测试插件
打开Web性能,负载测试包含Web性能测试的测试项目。
有关如何创建Web性能测试和负载测试的更多信息,请参见 如何:为自动测试创建和配置测试项目项目。
在解决方案资源管理器中,右击对解决方案和选择的 添加 然后选择 新建项目。
随即出现**“添加新项目”**对话框。
在**“已安装的模板”下,选择“Visual C#”**。
在模板列表中,选择**“类库”**。
在**“名称”**文本框中,键入类的名称。
选择**“确定”**。
新的类库项目将添加到“解决方案资源管理器”中,而且新类会出现在代码编辑器中。
在“解决方案资源管理器”中,右击新类库中的**“引用”文件夹并选择“添加引用”**。
将显示**“添加引用”**对话框。
选择 *** .NET *** 选项,使,然后选择 ***** Microsoft.VisualStudio.QualityTools.WebTestFramework *****向下滚动
选择**“确定”**。
对**“Microsoft.VisualStudio.QualityTools.WebTestFramework”的引用将添加到“解决方案资源管理器”的“引用”**文件夹中。
在解决方案资源管理器中,Web性能的顶部节点中右击测试和负载测试包含负载测试添加到的项目要添加Web性能测试插件并选择 添加引用。
将显示**“添加引用”**对话框。
选择 项目 选项并选择选件类库项目。
选择**“确定”**。
在代码编辑器中,编写插件的代码。 首先,创建一个从 WebTestPlugin 派生的新公共类。
实现 PreWebTest 或/和 PostWebTest 事件处理程序内的代码。 有关示例实现,请参见下面的“示例”部分。
在编写完代码后,生成新项目。
打开 Web 性能测试。
若要添加Web性能测试插件,在工具栏上选择 添加 Web 测试插件 。
随即显示**“添加 Web 测试插件”**对话框。
在**“请选择一个插件”**下,选择 Web 性能测试插件类。
在**“选定插件的属性”**窗格中,设置要在运行时使用的插件初始值。
备注
可根据需要从插件公开任意多个属性;只需将其设置为公共、可设置并属于 Integer、Boolean 或 String 等基类型。以后,还可以使用“属性”窗口更改 Web 性能测试插件属性。
选择**“确定”**。
该插件将添加到**“Web 测试插件”**文件夹中。
警告
在运行使用插件的 Web 性能测试或负载测试时,可能会出现类似如下的错误:
Request failed: Exception in <plug-in> event: Could not load file or assembly '<"Plug-in name".dll file>, Version=<n.n.n.n>, Culture=neutral, PublicKeyToken=null' or one of its dependencies.The system cannot find the file specified.
如果对任何插件进行代码更改并创建新 DLL 版本 (Version=0.0.0.0),则会引发这种情况,但插件仍会引用原来的插件版本。若要更正此问题,请执行以下步骤:
-
在Web性能测试和负载测试项目中,您会看到引用警告。移除和重新添加对插件 DLL 的引用。
-
从测试或适当位置移除插件,然后再重新添加。
-
示例
下面的代码用于创建一个自定义的 Web 性能测试插件,该插件向表示测试迭代的 WebTestContext 添加一项。
运行 Web 性能测试后,可使用此插件在 Web 性能结果查看器的**“上下文”选项卡中查看名为“TestIteratnionNumer”**的已添加项。
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.VisualStudio.TestTools.WebTesting;
namespace SampleRules
{
public class SampleWebTestPlugin : WebTestPlugin
{
// start counting iterations at 1 not 0
// so that the iteration number we give matches the run number
static int testIterationNumber = 1;
public override void PostWebTest(object sender, PostWebTestEventArgs e)
{
}
public override void PreWebTest(object sender, PreWebTestEventArgs e)
{
e.WebTest.Context["TestIterationNumber"] = testIterationNumber;
testIterationNumber++;
}
}
}
请参见
任务
如何:使用 Web 性能测试编辑器编辑现有 Web 性能测试