如何:在生成应用程序之后配置和运行计划的测试
您可以在生成完成之后运行测试,以评估生成的质量。 这些测试通常称为生成验证测试 (BVT) 或冒烟测试。 这些测试通常由一组广泛的测试组成,这组测试用于验证特定生成中应用程序的主要区域。 如果 BVT 中的所有测试均已通过,则认为该生成成功。
您可以使用一种或多种类型的自动测试作为生成验证测试的一部分。 可以运行以下类型的测试:
单元测试
数据库单元测试
编码的 UI 测试
Web 性能测试
负载测试
常规测试
创建 BVT 时将使用 Visual Studio、Team Foundation 版本控制和 Team Foundation Build。 首先,使用 Visual Studio 为要用于 BVT 的测试分配测试类别。 接着,使用 Team Foundation 版本控制将标有测试类别的自动测试签入源控件。 然后,在生成定义中添加测试类别筛选器。 最后,使用 Team Foundation Build 使生成入队,如果该生成成功,则将运行测试。
提示
客户端计算机必须安装团队资源管理器,并且 Visual Studio 用户会话必须连接到 Team Foundation Server 计算机。 有关如何连接到 Team Foundation Server 的信息,请参见How to: Connect to a Team Project in Team Foundation Server。
本主题描述创建和运行生成验证测试所需的所有过程:
为 BVT 创建测试类别
签入生成验证测试
创建生成定义
将生成和测试代理的计算机或用户帐户添加到 TeamTestControllerUsers 组
设置代理以运行编码的 UI 测试
运行 BVT 生成定义
提示
您可以使用测试列表运行生成验证测试,但推荐使用测试类别,而不是使用 Microsoft Visual Studio 2010 早期版本中的测试列表功能,除非您必须创建需要测试列表的签入策略。 有关如何创建测试列表的更多信息,请参见如何:创建测试列表。
为 BVT 创建测试类别
可以使用逻辑运算符 & (AND)、| (OR) 和 ! (NOT) 创建筛选器,以基于分配给测试的类别选择要运行的测试。 您可能需要创建多种可用于生成定义的测试类别,以便在选择测试方面具有灵活性。
为测试方法创建测试类别
在“测试”菜单上,单击**“窗口”,然后选择“测试视图”**。
此时将显示**“测试视图”**窗口
选择一个测试。
在所选测试的属性窗格中,单击**“测试类别”列中的省略号(...)。 此时将显示“测试类别”**窗口。
在**“添加新类别”**字段中,键入新测试类别的名称。
单击**“添加”**。
单击**“确定”。 新的测试类别将分配给您的测试,而且提供给“测试视图”**窗口中的其他测试使用。
若要创建更多测试类别,请重复步骤 4 到步骤 6。
有关如何通过向测试方法添加特性来分配测试类别的更多信息,请参见如何:使用测试类别分组和运行自动测试。
签入生成验证测试
在此过程中,将签入解决方案的所有文件。 这将包括添加到测试方法中的测试类别。
将生成验证测试签入到源控件中
连接到 Team Foundation Server 计算机。 有关更多信息,请参见How to: Connect to a Team Project in Team Foundation Server。
如果解决方案尚不在源代码管理中,请将其添加到源代码管理中。 有关更多信息,请参见向版本控制中添加文件。
单击**“视图”,然后单击“挂起的签入”。 此时将显示“挂起的签入”**窗口。
签入解决方案的所有文件。 有关更多信息,请参见签入挂起的更改。
提示
您可能具有特定的团队过程,用于对 BVT 的创建和管理进行控制。 例如,该进程可能会要求您在签入代码和在该代码上运行的测试之前,在本地对您的生成进行验证。
完成签入操作后,解决方案资源管理器中每个文件的旁边将出现一个锁形图标,以指示其为“已签入”状态。 有关更多信息,请参见How to: Identify Version Control Item Status in Solution Explorer。
已签入的测试可在生成中使用。 您现在可以创建一个包含要在 BVT 中运行的测试的生成定义。
创建生成定义
创建 BVT 生成定义
在团队资源管理器中,单击您的团队项目。
右击**“生成”,再单击“新建生成定义”**。
此时将显示**“新建生成定义”**选项卡。
为新生成定义输入信息。有关更多信息,请参见创建基本生成定义。
在“生成定义名称”文本框中指定要与生成定义相关联的名称。
(可选)在**“说明”**中,添加相应的说明。
单击**“工作区”**。
“工作文件夹”表包括要为其创建新生成定义的团队项目的源代码管理文件夹,以及生成代理上的本地文件夹。 生成代理上的本地文件夹在“本地文件夹”列中列出。 生成代理上的所有工作区路径都相对于所显示的默认根目录进行映射。
若要将现有的工作区复制到工作文件夹列表中,请单击**“复制现有工作区”以打开“选择工作区”**对话框。
所选的工作区将规范化为生成代理上的通用根目录 $(SourceDir)。 SourceDir 是一个扩展为 $(BuildDir)\Sources 的环境变量。
您也可以单击“源代码管理文件夹”中的空表单元格,然后单击省略号 (...) 来浏览到要作为工作文件夹添加的源代码管理文件夹。 所选的源代码管理文件夹也会进行规范化,而成为生成代理上的通用根目录。
单击**“生成默认值”**。
在“生成默认值”窗格中,可以从“生成控制器”下拉列表中选择现有的生成控制器。 (可选)您可以单击“管理”以打开“管理生成控制器”对话框。
在**“将生成输出复制到以下放置文件夹”**中,键入 UNC 路径,如 (\\server\share) 位置。 生成完成后,生成的二进制文件和日志文件将位于此文件夹中。 有关如何设置放置文件夹的更多信息,请参见设置放置文件夹。
如果您计划运行编码的 UI 测试、Web 性能测试或负载测试作为生成定义的一部分,则必须使用此位置生成的输出来启动或安装您的应用程序。 若要在生成完成后、测试运行前自动安装您的应用程序,则可以使用可将应用程序部署到虚拟环境的实验室默认模板,也可以修改此实验室默认模板将应用程序部署到物理环境。
提示
完成此步骤之前,您必须已创建了一个公共文件夹,TFSService 帐户对该文件夹具有完全权限。 有关 Team Foundation 服务帐户的更多信息,请参见查看 Team Foundation Server 服务。
单击**“进程”**。
在**“必需”部分中,单击“要生成的项目”**。 然后单击省略号 (...)。
此时将显示**“要生成的项目”**对话框。
单击**“添加”。 然后,在版本控制树中找到要生成的解决方案或项目,再单击“确定”**。
在**“要生成的项目”对话框上,单击“确定”**。
若要为将在生成完成后运行的测试添加测试类别,请打开**“基本”部分。 在“自动测试”部分中,打开“测试程序集”,然后单击“类别筛选器”**。 输入根据测试类别选择测试方法所需的筛选器。
提示
测试类别筛选器包含一个或多个测试类别名称,这些名称由逻辑运算符“&”、“|”、“!”、“&!”分隔。 例如,ShoppingCart&SmokeTest 将运行测试类别为 ShoppingCart 和 SmokeTest 的所有测试。 或者,可以输入 SmokeTest 以仅选择一种类别中的所有测试。 (逻辑运算符“&”和“|”不能一起用于创建测试类别筛选器。)
若要指定用于查找测试程序集的搜索模式,请单击**“测试程序集 Filespec”**。 键入搜索字符串。 例如,如果您的 dll 全部在其名称中包含单词“test”,则键入 **\*test*.dll。
提示
此搜索字符串将按递归方式搜索目录,以查找二进制目录中与 *test*.dll 匹配的任何 dll。 有关这方面的更多信息,请参见定义生成过程。
(可选)若要选择在运行测试时使用的测试设置文件,请依次打开**“自动测试”和“测试程序集”,再单击“TestSettings 文件”**,然后单击省略号 (…)。
此时将显示**“浏览”对话框。 找到包含要使用的测试设置的 .test 设置文件,然后单击“确定”**。
如果测试设置文件使用测试控制器和测试代理,请参见以下过程:将生成和测试代理的用户帐户或计算机添加到 TeamTestControllerUsers 组中。
如果运行的是编码的 UI 测试,请参见以下过程以基于测试设置文件设置您的代理:设置代理以运行编码的 UI 测试。
提示
您可以使用“高级”部分中的“代理设置”来选择要使用的特定代理。 例如,如果您要运行编码的 UI 测试,并且必须选择作为交互进程运行的代理,则可以在此处选择该代理。
有关测试设置文件的更多信息,请参见创建测试设置以从 Visual Studio 中运行自动测试。
提示
存在两个默认的测试设置文件。 默认情况下,Local.testsettings 仅收集系统信息。 如果也需要收集 IntelliTrace 数据,并且需要收集测试影响分析数据以用于确定根据生成更改建议运行的测试,则必须选择名为 TraceAndTestImpact.testsettings 的测试设置文件。
(可选)若要在生成过程中运行负载测试,则必须设置负载测试结果储存库,并将测试设置中指定的测试控制器配置为使用该储存库。 有关更多信息,请参见如何:选择负载测试结果储存库。
若要保存新的生成定义,请单击**“保存”**。
团队资源管理器窗口中的**“生成”**文件夹下将显示新的生成定义。
提示
如果要添加将在生成完成后运行的测试的列表,而不是添加测试类别,则可以添加命令行参数来执行此操作。 有关命令行参数的更多信息,请参见从命令行运行自动测试。
将生成和测试代理的用户帐户或计算机添加到 TeamTestControllerUsers 组中
如果添加到生成定义中的测试设置文件使用测试控制器和测试代理,则您必须将所使用的任何生成或测试代理的计算机添加到该测试控制器计算机上的 TeamTestControllerUsers 安全组中。 例如,如果要在生成过程中运行编码的 UI 测试,则必须将这些计算机添加到此安全组中。
警告
如果将生成代理或测试代理设置为使用不同的用户,而不是使用网络服务帐户,则您必须确保将此域用户帐户改为添加到 TeamTestControllerUsers 组中。
将生成和测试代理的用户或计算机添加到 TeamTestControllerUsers 组中
从测试控制器计算机中,依次单击**“开始”、“控制面板”、“管理工具”和“计算机管理”**。
显示**“计算机管理”**对话框。
打开**“本地用户和组”,然后单击“组”**。
此时将显示组。
若要添加用户或计算机,请右击**“TeamTestControllerUsers”并指向“添加到组”**。
此时将显示**“TeamTestControllerUsers 属性”**对话框。
查看“成员”列表,看是否已经添加了域用户帐户或计算机。 如果没有,请单击**“添加”**。
显示**“选择用户、计算机或组”**对话框。
默认情况下,将只显示用户或组。 若要添加计算机,请单击**“对象类型”,选择“计算机”,然后单击“确定”**。
若要添加某个计算机,请在**“输入要选择的对象名称”中键入该计算机的名称,然后单击“确定”**。
警告
您必须添加运行生成代理的计算机以及测试代理的计算机。
若要添加域用户帐户,请验证位置是否正确,在**“输入要选择的对象名称”中键入该用户帐户的名称,然后单击“确定”**。
重要事项 重复此步骤以添加所需的所有用户帐户。
若要应用所做的更改,请单击**“确定”**。
设置代理以运行编码的 UI 测试
如果要在生成应用程序之后将编码的 UI 测试作为计划测试的一部分来运行,则必须执行下列操作之一:
使用测试设置文件,该文件为应用程序指定用于运行测试的测试控制器和角色。 使用 Microsoft Visual Studio 2010 创建这些测试设置。 对于分配给运行测试设置中测试的角色的任何一个测试代理,您必须执行此过程中的步骤以将测试代理设置为作为进程运行,而不是作为服务运行。 有关测试控制器和测试代理的更多信息,请参见设置测试计算机以运行测试或收集数据和安装和配置 Visual Studio 代理以及测试和生成控制器。
使用不指定测试控制器的测试设置文件。 如果执行此操作,则必须将生成代理服务设置为能够与桌面交互。 将该服务的属性选择为**“允许服务与桌面交互”**。 这使生成代理能够运行编码的 UI 测试。
警告
如果运行的编码的 UI 测试将启动浏览器,则生成服务的服务帐户用于启动该浏览器。 此服务帐户必须是此计算机上某个活动用户的用户帐户。 如果不是同一用户帐户,浏览器将不会启动。
设置测试代理以运行编码的 UI 测试
- 若要设置测试代理以运行编码的 UI 测试,请按照以下主题中的步骤操作:如何:设置测试代理以运行与桌面交互的测试。
使用 Team Build 运行 BVT
使用 Team Build 运行 BVT
在团队资源管理器中,单击您的团队项目。
右击**“生成”,再单击“使新生成入队”**。
(可选)更改生成位置和目录。
单击**“队列”**。
此时将启动生成并显示**“生成资源管理器”**对话框。
当生成完成后,单击**“已完成”**以查看详细信息。
若要查看生成的详细信息,请在列表中双击该生成。
此时将显示一个具有生成信息的新选项卡。 可以查看测试运行的状态。
若要查看测试结果详细信息,请单击箭头以打开测试,然后单击**“查看测试结果”**。
选择文件夹以便以本地方式存储测试结果。
测试结果现在会显示在**“测试结果”**窗口中。
有关更多信息,请参见生成应用程序。