如何:创建负载测试插件

本主题适用于:

Visual Studio 旗舰版

Visual Studio 高级专业版

Visual Studio 专业版 

Visual Studio 学习版

主题适用 主题不适用 主题不适用 主题不适用

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

提示

还可以创建 Web 性能测试插件。 有关更多信息,请参见如何:创建 Web 性能测试插件

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

  1. 打开一个包含 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. 在解决方案资源管理器中,右击包含负载测试的测试项目(您要在其中添加负载测试插件)的顶部节点并选择**“添加引用”**。

  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. 在测试项目中,您会看到引用警告。 移除和重新添加对插件 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

其他资源

为负载和 Web 性能测试创建和使用自定义插件