指定 Visual Studio 测试的测试设置

 

发布时间: 2016年7月

当你从 Visual Studio 或在生成服务中运行测试时,测试框架可以收集数据,如诊断跟踪信息、系统信息或编码的 UI 测试的视频录制。 你还可以在测试计算机上模拟潜在瓶颈,减少可用系统内存或模拟慢速网络。

Visual Studio 测试设置

如果你的应用程序在多台计算机上运行,则可以为每台计算机单独配置这些选项,然后选择哪台计算机应该运行测试代码。

重要

.testsettings 和 .runsettings

如果你对早期版本的 Visual Studio 中的测试很熟悉,则会注意到 .testsettings 文件不再包含在单元测试项目中。Visual Studio 2012 中引入的更新的测试框架可使用 .runsettings 文件进行配置。

如果使用 .testsettings 文件,则 MSTest 测试框架将用于运行测试。这将使运行速度变得更慢,并且不允许你运行来自第三方测试框架的测试。

因此:

  1. 如果可以的话,请使用默认配置。

  2. 若要使其他文件(如测试数据或配置文件)在测试期间可用,请将这些文件合并到项目中并设置“复制到输出”属性。如果不可行,则通过在测试类或方法上使用 DeploymentItemAttribute 来部署其他文件或目录。

  3. 若要配置测试运行的某些方面(例如,部署目录或代码复盖率分析),请使用 .runsettings 文件。

  4. 使用 .testsettings 文件可配置诊断数据集合并控制在多台计算机间分发的测试。

    必须在 Web 性能和负载测试以及编码的 UI 测试中使用 .testsettings 文件。

要求

  • Visual Studio Enterprise 或 Visual Studio 专业测试工具版

本主题介绍如何在 Visual Studio 中定义测试设置。 如果你在 Microsoft 测试管理器中运行系统测试,请参见使用 Microsoft 测试管理器为自动系统测试创建测试设置

应何时使用测试设置文件?

需要执行以下操作时:

  • 收集诊断数据来帮助隔离应用程序中的 Bug。

  • 模拟你的应用程序可能会在生产环境中遇到的潜在瓶颈。

  • 在不同的计算机上运行客户端、服务器和应用程序的其他部分,以验证其在分发环境中的行为是否符合预期。

  • 在其他计算机之间分发大量测试。

  • 运行 Web 性能和负载测试。 如果你已将 Web 性能和负载测试项目添加到解决方案中,则它将包含一个 .testsettings 文件。 可以只编辑此文件。

警告

如果使用测试设置文件,则单元测试的运行速度会更慢。建议你不要将测试设置文件用于单元测试。你可以改用 .runsettings 文件来配置单元测试。若要部署其他文件,请使用 DeploymentItemAttribute

但 Web 性能和负载测试始终使用测试设置文件。

如何使用测试设置文件?

将测试设置文件添加到你的解决方案中,然后选择要使用的设置。 如果你希望能在不同的设置之间快速切换,则可以添加多个测试设置文件。

  1. 将 .testsettings 文件添加到解决方案中。

    在 Visual Studio 解决方案的上下文菜单中,依次选择**“添加”“新建项”“测试设置”**。

  2. 编辑测试设置文件

  3. 选择要使用的测试设置:

    • 选择单元测试和编码的 UI 测试的测试设置:
      在**“测试”菜单上,选择“测试设置”,再选择“选择测试设置文件”**。

      设置有效的测试设置文件单元和编码的 UI

      选择单元测试和编码的 UI 测试的测试设置

    • 选择 Web 性能和负载测试的测试设置:
      打开要使用的解决方案中的 .testsettings 文件的上下文菜单,然后选择**“活动负载和 Web 测试设置”**。

      设置有效的测试设置负载和 Web 性能

      选择 Web 性能和负载测试的测试设置

  • 我应该知道哪些其他内容?
    备注

    • 系统必备 将测试设置添加到解决方案而不是项目中。

    • 系统必备 提供了用于选择 Web 性能测试和其他类型的测试的测试设置的单独命令。 Web 性能测试始终需要测试设置文件。 单元测试和编码的 UI 测试不需要测试设置文件。

    • “警告”图标 警告 建议不要将测试设置应用于 Visual Studio 单元测试项目,除非你确实需要它提供的设置。 如果应用测试设置,则旧测试框架将用于运行测试,并且你将丢失新框架的性能和弹性优点。

      如果你使用一个测试设置文件,并且随后决定不需要该文件,则可以通过选择**“测试设置”“测试”**菜单上将其取消。

      此建议不适用于始终具有设置文件的 Web 性能和负载测试。

    • 系统必备 测试设置将选择并控制诊断数据适配器。 提供了多种不同类型的适配器,这些适配器可收集各种信息并配置运行测试的环境。

    • 系统必备 测试设置还将选择测试控制器。 若要在多台计算机上运行应用程序,请使用测试控制器。

    • 系统必备 当你将 Web 性能和负载测试项目添加到解决方案中时,将创建一个默认的 Local.testsettings 文件。 它将被自动添加到**“解决方案项”**文件夹下的解决方案中。 这将在未选择诊断数据适配器的情况下本地运行你的测试。 你可以添加或编辑 .testsettings 文件以指定诊断数据适配器和测试控制器。

    • 提示 有关其他指南,请参见使用 Visual Studio 2012 对连续交付进行测试 - 第 6 章:测试工具箱

编辑测试设置

可以使用**“测试设置”**对话框中的以下页来为测试设置配置多个值:

  • 常规

  • 角色

  • 数据和诊断

  • 部署

  • 安装脚本和清理脚本

  • 主机

  • 测试超时

  • 单元测试

  • Web 测试

测试设置:角色

在“角色”页上,可以将测试配置为在本地计算机上运行或远程运行:

选择本地执行

  • **“本地执行”**为默认设置。 这意味着,在签入代码后,测试和应用程序将在 Visual Studio 计算机或生成服务器上运行。 继续数据和诊断。

  • **“使用远程集合的本地执行”**是用于测试 Web 应用程序或客户端服务器系统的典型配置。 测试代码在本地计算机上运行,但你还可以从安装在其他计算机上的应用程序组件中收集测试数据。

  • 如果不想本地运行应用程序的任何部分,可使用**“远程执行”**。 这是一个典型配置,其中应用程序需要多个特定平台(例如,特定的 Web 浏览器或数据库)。 可以在每台计算机上收集测试数据和配置测试环境。

配置用于远程数据收集和执行的测试控制器和角色

远程执行意味着,除了本地计算机外,还可以将应用程序安装到一台或多台计算机上。 测试设置可为这些计算机指定数据收集和测试环境配置。 每台计算机都必须具有一个链接到测试控制器的测试代理。 测试控制器读取测试设置,并使用代理来配置每台计算机的测试环境和诊断数据适配器。 可以手动安装测试控制器和代理,也可以使用 Microsoft 测试管理器来创建实验室环境

对于远程测试,计算机由角色名称标识,例如“SQL Server”、“Web 服务器”和“桌面客户端”。 该名称允许你指定每台计算机的配置。 安装用于测试的应用程序时,使用角色名称为应用程序的每个组件选择正确的计算机。

测试设置角色

  1. 从**“控制器”**下拉列表中,为测试代理选择将用于运行测试或收集数据的测试控制器。

  2. 若要添加要用于运行测试和收集数据的角色,请选择**“添加”**。 例如,你可以指定“桌面客户端”或“Web 服务器”等角色名称。

  3. 选择要运行测试的角色,然后选择**“设置为运行测试的角色”**。 通常,这是将应用程序的客户端组件安装到的角色。

    备注

    你定义的其他角色将不运行测试代码,而仅用于根据在“数据和诊断”页中为角色指定的数据和诊断适配器收集数据。

  4. 若要选择可用于角色的测试代理,你必须为相应角色创建特性并将这些特性分配给测试代理。 若要在多台计算机上同步运行测试,你必须从设置为运行测试的角色中为多个测试代理分配一个特性。 若要创建特性,请选择角色,然后在特性列表上方的工具栏中选择**“添加”**。

  5. 此时将显示**“代理选择规则”**对话框。

  6. 在**“特性名”中键入名称,在“特性值”中键入值,然后选择“确定”**。 根据需要添加多个特性。

  7. 例如,可以添加一个名为“RAM > 16GB”的值为“True”或“False”的特性,以对内存大于 16GB 的测试代理计算机进行筛选。 但是,你必须手动选择测试代理上的特性值。 不会基于计算机的规范自动设置特性值。

  8. 若要将某一特性应用于一个或多个测试代理,你需使用管理 Test Controller对话框来将该特性分配给测试代理。

测试设置:数据和诊断

在**“测试设置”对话框中,选择“数据和诊断”**页。 此时,可根据你在角色页中配置选项的方式,使用下列选项之一:

  • 收集本地计算机上的数据和诊断数据

    若要包括要在本地计算机上收集的数据和诊断,请根据测试需求选择诊断数据适配器。 若要配置已包含的诊断数据适配器,请选择特定的诊断数据适配器,然后选择数据和诊断适配器列表上方的**“配置”**选项。

  • 使用角色在远程计算机上收集数据和诊断数据

    在**“数据和诊断”页中,通过选择角色将用于收集数据的诊断数据适配器来定义角色所起的作用。 因此,如果对角色启用了一个或多个数据和诊断适配器,则测试控制器将基于为角色定义的特性选择一个可用的测试代理计算机来为指定的数据和诊断适配器收集数据。 若要选择要为每个角色收集的数据和诊断数据适配器,请选择角色。 根据测试要求为每个角色选择诊断数据适配器。 若要配置你为每个角色选择的每个诊断数据适配器,请选择数据和诊断适配器列表上方的“配置”**选项。

    角色和诊断数据适配器示例:

    例如,可以创建一个名为“桌面客户端”且“使用 SQL”特性设置为“True”的客户端角色,以及一个名为“SQL Server”且特性设置为“RAM > 16GB”的服务器角色。 如果通过在**“角色”页中选择“设置为运行测试的角色”**指定“桌面客户端”将运行测试,则测试控制器将选择具有“使用 SQL”特性设置为“True”的测试代理的计算机来运行测试。 测试控制器还将选择具有包含“RAM > 16GB”特性的测试代理的 SQL Server 计算机来仅收集角色中包含的数据和诊断适配器所定义的数据。 “桌面客户端”测试代理还可以为运行此代理的计算机收集数据,但是你必须为该角色选择数据和诊断适配器。

备注

此表仅显示可用于 Visual Studio 中的测试的适配器。有关 Microsoft 测试管理器 中使用的针对数据适配器的其他信息,请参见使用测试设置来设置计算机和收集诊断信息

用于自动测试的诊断数据适配器

诊断数据适配器

关联主题

用于 IntelliTrace 和测试影响的 ASP.NET 客户端代理:此代理允许你为 IntelliTrace 和测试影响诊断数据适配器收集有关从客户端到 Web 服务器的 http 调用的信息。

收集此信息不需要任何配置。

如何:收集 IntelliTrace 数据以帮助调试难题

如何:收集数据来检查在代码更改后应该运行的测试

IntelliTrace 可以为 IntelliTrace 配置诊断数据适配器,使其收集特定诊断跟踪信息,从而帮助隔离难以重现的 Bug。 此适配器会创建扩展名为 .iTrace 的 IntelliTrace 文件,用于包含此信息。 测试失败时,可以创建 Bug。 随测试结果一起保存的 IntelliTrace 文件会自动链接到此 Bug。 IntelliTrace 文件中收集的数据可减少重现和诊断代码中的错误所需的时间,从而提高调试效率。 通过此 IntelliTrace 文件,可以在另一台计算机上模拟该本地会话,这降低了 Bug 不可重现的概率。

有关更多信息,请参见使用 IntelliTrace

如何:收集 IntelliTrace 数据以帮助调试难题

ASP.NET 探查器 可以创建包含 ASP.NET 分析的测试设置,该分析收集 ASP.NET Web 应用程序的性能数据。

备注

此诊断数据适配器仅用于使用需要 Visual Studio Enterprise 的网站的负载测试。

如何:在 Visual Studio 中使用测试设置为负载测试配置 ASP.NET 探查器

如何:为分布式负载测试创建测试设置

代码覆盖率(Visual Studio 2010) 可以创建包含代码覆盖率信息的测试设置,该信息用于调查测试覆盖的代码范围。

备注

此诊断数据适配器仅适用于 Visual Studio 测试设置。它不用于 Microsoft 测试管理器 中的测试设置。

备注

这仅针对于与 Visual Studio 2010 的兼容性。

有关代码覆盖率的详细信息,请参见使用代码覆盖率确定所测试的代码量

使用测试设置的代码覆盖率已弃用

事件日志 可以将测试设置配置为包含事件日志收集,该事件日志将包含在测试结果中。

How to: Configure Event Log Collection Using Test Settings

网络仿真 可以使用测试设置指定你希望在测试中放置人工网络负载。 网络仿真将仿真特定网络连接(如拨号连接)的速度,从而影响计算机的往来通信。

备注

此诊断数据适配器仅适用于 Visual Studio 测试设置。它不用于 Microsoft 测试管理器 中的测试设置。

备注

网络仿真不能用于提高网络连接速度。

如何:在 Visual Studio 中使用测试设置配置网络仿真

系统信息 可以设置测试设置来包含有关在其上运行测试的计算机的系统信息。 通过使用测试设置可在测试结果中指定系统信息。

收集此信息不需要任何配置。

测试影响 可以收集在运行某个测试用例时应用程序代码使用了哪些方法的相关信息。 此信息可与开发人员进行的应用程序代码更改结合使用,以确定这些开发更改影响了哪些测试。

如何:收集数据来检查在代码更改后应该运行的测试

视频录制器 运行自动测试时可以创建桌面会话的视频录制。 此视频录制对查看编码的 UI 测试的用户操作可能有用。 该视频录制可帮助其他团队成员确定难以重现的应用程序问题。

如何:使用测试设置在测试期间包括屏幕和语音录制

测试设置:部署

  1. 在**“测试设置”对话框中,选择“部署”**页。

  2. 若要在每次运行测试时都为部署创建一个单独的目录,请选择**“启用部署”**。

    备注

    如果选择此配置,则在运行测试时可以继续生成应用程序。

  3. 若要将测试所需的文件添加到用于运行测试的目录中,请选择**“添加文件”**,然后选择要添加的文件。

  4. 若要将测试所需的目录添加到用于运行测试的目录中,请选择**“添加目录”**,然后选择要添加的目录。

    备注

    有关如何使用相关属性和 DeploymentItem 特性为各个测试部署文件和目录的更多信息,请参见如何:为测试部署文件

测试设置:安装脚本和清理脚本

  1. 若要在测试前后运行脚本,请在**“测试设置”对话框中选择“安装脚本和清理脚本”**页。

  2. 在**“安装脚本”中键入脚本文件的位置,或选择省略号(“...”**)以找到安装脚本。

  3. 在**“清理脚本”中键入脚本文件的位置,或选择省略号(“...”**)以找到清理脚本。

测试设置:主机

  1. 若要使用其他主机运行测试,请在**“测试设置”对话框中选择“主机”**页。

  2. 若要在与 ASP.NET 站点相同的进程中运行单元测试,请在**“主机类型”中选择“ASP.NET”**。

  3. 使用“在 32 位或 64 位进程中运行测试”可选择要将测试作为 32 位进程还是 64 位进程运行。

    为了最大限度地提高灵活性,你应使用**“任何 CPU”配置来编译测试项目。 然后,可以在 32 位和 64 位代理上运行。 使用“64 位”**配置编译测试项目没有什么特别的用处。

测试设置:测试超时

  1. (可选)若要限制每个测试运行和各个测试的时间长度,请在**“测试设置”对话框中选择“测试超时”**页。

  2. 若要在超过一定时间限制时中止测试运行,请选择**“在总执行时间超过以下值时中止测试运行”**,然后键入此时限的值。

  3. 若要在超过一定时限时使单个测试未通过,请选择**“在单个测试的执行用时超过以下值时,将其标记为未通过”**,然后键入此时限的值。

测试设置:单元测试

(可选)如果你必须指定单元测试需要加载的程序集位置,请选择**“单元测试”**。

  1. 对于**“要加载的程序集的根文件夹”,请选择“浏览”**以定位该文件夹并填充文本框。

    指定的根文件夹可以包含环境变量,并且代表将用做在其中运行测试的 AppDomain 的 ApplicationBase 的目录。 此目录中的所有程序集都可由你的单元测试来加载。 在生产环境中,最好将此目录设置为安装测试程序集代码的目录。 在开发环境中,最好将此目录设置为生成测试程序集代码的目录。 这样就可以确保对产品二进制文件的任何引用都可以在测试的发现和执行期间加载并解决,而无需在测试时复制产品二进制文件。

    如果未在此处设置任何值,则在其中运行测试的 AppDomain 的 ApplicationBase 将设置为包含这些测试的目录。

  2. 选中或清除**“对测试目录中的程序集使用加载上下文”**复选框。

    默认情况下,大多数程序集都会加载到正确的“加载上下文”中。 通常,应将**“对测试目录中的程序集使用加载上下文”**保持选中状态。 不过,有时也可能需要禁用此选项:

    如果测试目录中有大量程序集,在**“要加载的程序集的根文件夹”**下指定了一个位置,并且你的测试不依赖于在加载上下文中加载,则在不使用加载上下文来加载这些测试程序集的情况下,你可能会看到性能提高。

    如果你的测试依赖于在加载上下文以外的上下文中进行加载(不是典型情况)。

    有关更多信息,请参见适用于程序集加载的最佳做法

  3. 在**“运行测试时要使用的文件夹”下,选择“添加文件夹”**。

    此时将显示**“浏览文件夹”**对话框。

  4. 找到要使用的文件夹并选择**“确定”**。

    **“运行测试时要使用的文件夹”**设置可能是最常用的设置。 可以指定在测试的发现和执行阶段将从中解析程序集的多个文件夹路径。 在此部分中指定的每个路径都可以包含环境变量。 除了这里指定的每个路径外,还有两个与其关联的选项:

    第一个选项   选中**“使用加载上下文”**复选框来指定目录应在解析此目录中的程序集时使用加载上下文(如果不需要加载上下文即可正确运行测试,则可通过清除此复选框来提高性能)。

    第二个选项   选中**“包括子文件夹”**复选框来指定在解析此目录中的程序集时要包括的子文件夹。

  5. 在**“发现测试时要使用的其他文件夹”下,选择“添加文件夹”**。

    此时将显示**“浏览文件夹”**对话框。

  6. 找到要使用的文件夹并选择**“确定”**。

    在 Team Build 下远程执行测试或从 Microsoft 测试管理器自动运行时,**“发现测试时要使用的其他文件夹”**选项非常有用。 这里提供的路径将用于程序集解析,但仅在测试发现期间使用。 这些路径可以包含环境变量。 当对测试进行安排以通过生成放置来远程执行并且并不是所有的测试程序集依赖项都在同一目录中时,可以使用这些路径来确保 MSTest 或测试控制器可以找到足够多的依赖程序集来发现测试,并将它们安排到远程计算机以便执行。

    对于已计划从 Microsoft 测试管理器完成的运行,一般还有一个可用来引用生成放置位置的附加标记“%BuildDrop%”。 这样就无需在每次测试新的生成时都创建或更新测试设置。 遗憾的是,此标记并不直接受 Team Build 支持。 不过,如果通过生成定义在名为 BuildDrop 的环境变量中设置了生成放置位置,将会有同样的效果。

    有关更多信息,请参见单元测试代码

测试设置:Web 测试

必需:Visual Studio Enterprise

(可选)若要在测试设置中配置用于控制 Web 性能测试的运行方式的属性,请选择**“Web 测试”**。

  1. 选择**“固定的运行计数”“每个数据源行运行一次”**。

  2. 使用**“浏览器类型”下拉列表选择进行 Web 性能测试要使用的 Web 浏览器。 例如,“Internet Explorer 9.0”**。

  3. (可选)选择模拟思考时间以启用模拟的人为暂停。

  4. (可选)选择**“将请求 URL 的目录用作 Cookie 的默认路径”**。

    如果禁用**“将请求 URL 的目录用作 Cookie 的默认路径”**,则你的 Web 测试将遵循此行为:

    如果一个请求(如 www.abc.com/myapp/abc.aspx)在其响应中设置了 cookie,且未指定路径,则该测试将使用整个请求 URL 作为该 cookie 的路径。 这意味着,Cookie 将只与 URL www.abc.com/myapp/abc.aspx 的后续请求一起发送。

    如果启用**“将请求 URL 的目录用作 Cookie 的默认路径”**,则你的 Web 测试将遵循此行为:

    如果一个请求(如 www.abc.com/myapp/abc.aspx)在其响应中设置了 cookie,且未指定路径,则该测试将使用请求 URL 的目录作为该 cookie 的路径。 这意味着,Cookie 将与子路径 www.abc.com/myapp 的所有请求一起发送(例如,www.abc.com/myapp/xyz.aspx)。

    该行为与 RFC 2109 中指定的版本 1 的 Cookie 一致。 有关详细信息,请参见请求评论:2109

请参阅

使用 Visual Studio 2012 对连续交付进行测试 - 第 6 章:测试工具箱
如何:通过 Microsoft Visual Studio 添加测试设置文件
如何:通过 Microsoft Visual Studio 编辑测试设置文件
如何:通过 Microsoft Visual Studio 选择活动测试设置
使用测试设置来设置计算机和收集诊断信息
在手动测试中收集更多诊断数据
创建测试设置以从 Visual Studio 运行自动测试
将测试控制器和测试代理用于负载测试
设置测试计算机以运行测试或收集数据
如何:为分布式负载测试创建测试设置
如何:使用测试设置中指定的测试控制器和测试代理运行负载测试
演练:在负载测试中使用测试控制器和测试代理
Compatibility of Test Settings with Visual Studio 2010