如何:创建负载测试插件

可以创建负载测试插件,以便在负载测试运行过程中的不同时间运行代码。 可以创建插件来扩展或修改负载测试的内置功能。 例如,可以编写负载测试插件代码,以便在负载测试运行过程中设置或修改负载测试模式。 若要执行此操作,必须创建一个继承 ILoadTestPlugin 接口的类。 此类必须实现此接口的 Initialize 方法。 有关详细信息,请参阅 ILoadTestPlugin

备注

还可以创建 Web 性能测试插件。有关详细信息,请参阅如何:创建 Web 性能测试插件

要求

  • Visual Studio 旗舰版

使用 Visual C# 创建负载测试插件

  1. 打开包含 Web 性能测试的 Web 性能和负载测试项目。

    有关详细信息,请参阅如何:为自动测试创建和配置测试项目

  2. 向该测试项目中添加一个负载测试,并对其进行配置以运行 Web 性能测试。

    有关详细信息,请参阅[已停用] 创建负载测试

  3. 在解决方案资源管理器中,右键单击解决方案,选择**“添加”,然后选择“新建项目”**。

    随即出现**“添加新项目”**对话框。

  4. 在**“已安装的模板”下,选择“Visual C#”**。

  5. 在模板列表中,选择**“类库”**。

  6. 在**“名称”**文本框中,键入类的名称。

  7. 选择**“确定”**。

  8. 新的类库项目将添加到解决方案资源管理器中,并且新类会出现在代码编辑器中。

  9. 在“解决方案资源管理器”中,右击新类库中的**“引用”文件夹并选择“添加引用”**。

  10. 将显示**“添加引用”**对话框。

  11. 选择**“.NET”选项卡,向下滚动,然后选择“Microsoft.VisualStudio.QualityTools.LoadTestFramework”**。

  12. 选择**“确定”**。

    将对**“Microsoft.VisualStudio.QualityTools.LoadTestFramework”的引用添加到解决方案资源管理器的“引用”**文件夹中。

  13. 在解决方案资源管理器中,右键单击包含要在其中添加负载测试插件的负载测试的 Web 性能和负载测试项目的顶级节点,然后选择**“添加引用”**。

  14. 将显示**“添加引用”**对话框。

  15. 选择**“项目”**选项卡,然后选择“类库项目”。

  16. 选择**“确定”**。

  17. 在代码编辑器中,为 Microsoft.VisualStudio.TestTools.LoadTesting 命名空间添加一个 using 语句。

  18. 为在类库项目中创建的类实现 ILoadTestPlugin 接口。 有关示例实现,请参见下面的“示例”部分。

  19. 在编写完代码后,生成新项目。

  20. 右键单击负载测试的顶级节点,然后选择**“添加负载测试插件”**。

    随即显示**“添加负载测试插件”**对话框。

  21. 在**“选择插件”**下,选择负载测试插件类。

  22. 在**“选定插件的属性”**窗格中,设置要在运行时使用的插件初始值。

    备注

    可根据需要从插件公开任意多个属性;只需将其设置为公共、可设置并属于 Integer、Boolean 或 String 等基类型。以后,您还可使用“属性”窗口更改 Web 性能测试插件属性。

  23. 选择**“确定”**。

    将插件添加到**“负载测试插件”**文件夹中。

    警告

    在运行使用插件的 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),则会引发这种情况,但插件仍会引用原来的插件版本。若要更正此问题,请执行以下步骤:

    1. 在您的 Web 性能和负载测试项目中,您将看到引用警告。移除和重新添加对插件 DLL 的引用。

    2. 从测试或相应位置移除插件,然后再重新添加。

示例

下面的代码演示在 LoadTestFinished 事件发生后运行自定义代码的负载测试插件。 如果此代码在远程计算机上的某个测试代理上运行,并且该测试代理没有 localhost SMTP 服务,则负载测试将保持“正在进行”状态,因为将打开一个消息框。

备注

下面的代码要求您添加对 System.Windows.Forms 的引用。

using System;
using Microsoft.VisualStudio.TestTools.LoadTesting;
using System.Net.Mail;
using System.Windows.Forms;

namespace LoadTestPluginTest
{
    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 = myLoadTest..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.", "LoadTestPlugin", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
            }
        }
    }
} 

有八种事件与一个负载测试相关联,可在负载测试插件中处理该负载测试,以便使用该负载测试运行自定义代码。 以下是事件的列表,这些事件提供对负载测试运行的不同时间段的访问:

请参见

任务

如何:创建 Web 性能测试插件

参考

ILoadTestPlugin

其他资源

为负载测试创建自定义代码和插件