如何:在生成并部署应用程序之后配置和运行计划的测试

可以使用 Visual Studio 实验室管理工具版 检查应用程序生成的质量。 可以将特定实验室模板用于生成定义以生成您的应用程序,将应用程序部署到虚拟环境,然后针对该生成运行自动测试。 使用此过程可以确保使用虚拟环境的已知状态,在干净环境中运行测试。 如果遇到测试失败,则可降低由于未正确配置或损坏的环境而导致失败的概率,因为每次都可以使用同样干净的环境。

可通过从测试计划中选择测试套件来运行测试。 例如,您可以创建一个名为 Build Smoke Tests 的测试套件。 您可以将测试应用程序基本功能的自动测试与测试用例关联,然后将这些测试用例添加到您的套件。 例如,测试可以是编码的 UI 测试,用于测试应用程序中的基本操作。

每当为此生成定义完成生成工作流时,都会保存测试结果。 可以使用这些结果查看生成的稳定程度,也可以使用这些信息确定这是不是测试团队现在应开始使用的生成。 此外,还可以每天进行检查,以了解生成通过这些测试的频率。

使用以下过程可创建生成工作流,以生成、部署和测试应用程序、调查任何问题以及查看或分析结果:

  • 检查系统必备

  • 创建生成定义并启动生成

  • 从生成结果连接到环境

  • 查看和分析生成的测试结果

当您使用 Visual Studio 2010 时,Web 应用程序和其他复杂应用程序可能需要其他步骤才能进行部署。 例如,如果使用 Visual Studio 2010 将 Web 应用程序部署到 IIS 服务器,则可以在此 Microsoft 网页中找到有关其他步骤的介绍。

提示

只能将实验室模板用于具有手动、计划或滚动生成触发器的生成定义。 不建议使用滚动生成触发器,因为在测试失败时仍允许启动下一个滚动生成,或停止整个生成系统。 不支持封闭签入和持续集成触发器。

先决条件

在设置生成工作流以生成、部署和测试应用程序之前,使用此列表验证是否已完成以下任务:

系统必备任务

  1. 配置 实验室管理工具版,包括生成控制器和测试控制器:首次配置 Lab Management

  2. 为您的环境创建虚拟机,并向这些虚拟机添加代理。 然后将虚拟机存储到库共享中:如何:创建和存储 Lab Management 就绪的虚拟机和模板

  3. 从 SCVMM 将虚拟机或模板导入到团队项目中:如何:从 SCVMM 导入虚拟机或模板

  4. 创建在必需的角色中使用这些虚拟机的环境,选择为此环境运行测试和使用工作流,并且启动环境:如何:从虚拟机或模板创建环境

    提示

    必须针对为每个虚拟机选择的角色安装并配置该虚拟机所需的所有软件。 为虚拟机选择角色不会安装任何软件。

  5. 若要将与桌面进行交互的测试(如编码的 UI 测试)作为计划测试的一部分运行,必须执行以下步骤:

    1. 设置测试代理,以作为交互式进程(而不是服务)运行:如何:设置测试代理以运行与桌面交互的测试

      此时您将看到正在处于联机状态的通知区域中运行的测试代理进程。

    2. 如果工作流的生成定义还原为特定快照,则在尝试运行测试时,无法锁定虚拟机。 在拍摄快照以供工作流使用之前,必须使用基于主机的连接或使用控制台会话来连接到虚拟机。 有关这方面的更多信息,请参见如何:连接到虚拟环境

  6. (建议)拍摄环境的快照,用作工作流的干净状态:如何:保存环境的当前状态。 在拍摄环境快照之前,请执行这些步骤:

    1. 确保环境中的虚拟机具有其操作系统的最新更新。

    2. 对环境中任何连接到域的虚拟机运行命令 gpupdate /force,以确保更新对用户策略所做的所有更改。 如果不运行此命令,则部署脚本可能不会正确工作,测试也可能不会正确运行。 确保应用程序的代码项目和测试项目签入到源代码管理中:将文件置于版本控制下

    3. 检查环境状态是否为“正在运行”,以及工作流和测试功能的状态是否为“就绪”。

      提示

      如果快照中的虚拟机加入到域中,并且快照的使用时间超过域控制器的密码过期日期,则虚拟机可能不再能够加入到域中。 有关更多信息,请参见如何:保存环境的当前状态

  7. 在使用实验室模板创建生成工作流时,为应用程序创建可以用于生成应用程序或选择特定生成的生成定义:创建基本生成定义

  8. 将自动测试与某个测试用例关联,然后将该测试用例添加到团队项目测试计划中的测试套件。 有关更多信息,请参见以下帮助主题:

    1. 如何:将自动测试与测试用例关联

    2. 如何:向测试套件添加测试用例

    3. 如何:创建测试计划.

  9. 创建测试设置,以运行在虚拟环境中使用您创建的角色的自动测试:创建作为测试计划一部分的自动测试的测试设置

通过将实验室模板用于生成定义来创建生成、部署和测试工作流

若要创建生成、部署和测试工作流,则必须按以下步骤进行操作:

步骤

操作

1

创建基本生成定义

2

为生成、部署和测试工作流创建其他生成定义

3

添加工作流的详细信息

4

对工作流的生成定义进行排队

创建基本生成定义

您必须先为要部署的应用程序中的代码创建生成定义。 如果计划每次都生成应用程序,请在此定义中禁用测试,因为您将使用实验室模板从工作流运行测试。

为应用程序创建生成定义

为应用程序创建生成定义

  1. 在**“生成”菜单上,单击“新建生成定义”**。

  2. 在**“常规”选项卡上,在“生成定义名称”框中指定名称,在“说明”**框中添加适当的说明。

  3. 按照主题创建基本生成定义中所述的步骤进行操作。

为工作流创建生成定义

接下来,必须为生成、部署和测试工作流创建另一个生成定义,如下图所示:

为工作流创建生成定义

您必须选择 LabDefaultTemplate 文件来创建工作流,方法是选择显示生成过程模板的详细信息,如下图所示:

为工作流选择生成过程模板

为工作流创建生成定义

  1. 在**“生成”菜单上,单击“新建生成定义”**。

  2. 在**“常规”选项卡上,在“生成定义名称”框中指定名称,在“说明”**框中添加适当的说明。

  3. 按照主题创建基本生成定义中所述,在**“触发器”“工作区”“生成默认值”以及“保留策略”**选项卡上选择设置。

    提示

    不必在“生成默认值”选项卡上为生成工作流输入生成放置路径,因为在使用实验室模板时不创建生成输出。 清除“我的生成副本输出”,不需要放置文件夹。

  4. 若要能够为生成定义选择实验室模板,请在**“过程”选项卡上的“生成过程模板”下,单击“显示详细信息”**。

    将显示一个下拉列表。

  5. 选择一个模板。 这是定义您工作流的生成过程文件。

  6. 若要为生成定义创建工作流以将应用程序部署到虚拟环境,请从**“生成过程文件”**的下拉列表选择 LabDefaultTemplate.xaml。

添加工作流的详细信息

现在,您可以添加工作流过程的详细信息,如下图所示。

添加工作流的详细信息

实验室工作流参数向导会引导您完成必须提供的信息。

实验室工作流参数向导

现在可以对此生成进行排队,以运行工作流并查看生成工作流的进度。

添加工作流的详细信息

  1. 若要为工作流输入数据,请在**“生成过程参数”下,单击“实验室过程设置”**,然后单击省略号 (…)。

    这会打开实验室工作流参数向导,您可在其中为工作流输入信息。

  2. 在**“环境”**选项卡上,选择要将应用程序部署到的虚拟环境。

    提示

    此环境必须处于活动状态。 如果您要使用的环境存储在库中,则必须部署该环境,使其处于活动状态。 此外,建议专门为您的工作流创建此环境,且其他用户不应使用此环境。 这可以防止出现以下问题:此环境当前正在使用,而生成工作流将此环境还原为某个特定快照;或者,当另一个用户运行测试时,在此环境中运行部署脚本。

  3. (建议)如果您要使实验室生成定义将环境还原为已知状态,请选择**“还原到环境的特定快照”**,然后单击省略号 (…) 以选择特定快照。

    此时将显示**“选择环境快照”对话框。 选择相应快照,然后单击“确定”**。

    重要说明重要事项

    建议您还原到某个快照,以确保您每次从环境的已知状态生成时,都以一致的方式运行测试。 这可减小确定测试失败原因时的不确定性。 例如,其他用户添加了可能导致测试失败的软件,从而可能改变了当前环境。

  4. 单击**“下一步”**。

  5. 如果您要在每次对此工作流定义进行排队时,都使用此工作流定义生成应用程序,请执行以下步骤:

    1. 选择**“使用 Team Foundation Build”**,然后选择先前创建的定义。

    2. 选择**“为新的生成排队”**。

  6. 如果希望此工作流定义使用现有生成,而不重新生成应用程序,请执行以下操作:

    1. 选择**“使用 Team Foundation Build”**,然后选择先前创建的定义。

    2. 选择**“选择现有生成”**。 然后从下拉列表中选择生成。 您选择的生成定义所创建的现有生成都显示在该列表中。

    3. 从**“选择生成配置”**选择生成配置。

      提示

      生成配置在您为应用程序创建生成定义时指定。 如果存在多个生成配置,则可以从此列表中选择一个配置。

  7. 如果要定义生成的位置,请选择**“使用指定位置的生成”**,然后指定现有生成的 UNC 路径。

  8. 单击**“下一步”**。

  9. 若要在工作流中部署应用程序,请从**“部署”选项卡选择“部署生成”**。

  10. 若要添加部署应用程序所需的脚本或命令,请单击**“添加”**。 选择要为其添加脚本或命令的虚拟机。

    现在,可以为环境中的每个虚拟机添加脚本或命令。 例如,如果应用程序包含 Windows 客户端,则可以借助脚本,将可执行文件复制到编码的 UI 测试将用于在虚拟机上启动测试的位置处。 如果您拥有 Web 服务器,则必须运行脚本或命令以部署该部分应用程序。

    脚本中可使用以下变量:

    • $(BuildLocation):这是生成的位置。 如果指定使用共享位置中的生成,则此变量表示该路径。 对于其他选项,这是生成的完整路径(基于您选择用于生成的配置以及生成定义中的生成放置位置)。 如果在工作流中生成应用程序,则可以使用此变量访问该生成创建的最新文件。

    • $(InternalComputerName)_<VM Name>:这用于获取作为虚拟环境的一部分的虚拟机的计算机名。 您可能知道该虚拟机名称,但不知道计算机名称。 如果您有一个用于设置需要计算机名称的 Web 服务器的部署脚本,则可以将该计算机名称作为参数传递给此脚本。 例如,如果 Web 服务器的虚拟机名称为 VM1,且计算机名称为 MyWebServer,则可以键入“$(InternalComputerName_VM1)”作为脚本的参数,这会将值 MyWebServer 传递给您的脚本。

    • $(ComputerName)_<虚拟机名>:这是虚拟机的完全限定域名。 这可以用于访问计算机(甚至是从虚拟环境外部)。 您可能需要将此变量作为参数进行传递,以设置 Web 服务器。 例如,如果 Web 服务器的虚拟机名称为 VM1,则可以键入“$(ComputerName_VM1)”作为脚本的参数,用于传递该虚拟机的完全限定域名。

    如果为环境使用网络隔离,则 $(InternalComputerName_<VM Name> 的值将与该环境的每个副本中的虚拟机的实例相同,但 $(ComputerName_<VM Name>) 不相同。 例如,虚拟机的计算机名称在该环境的每个副本中可能为 MyWebServer,但完全限定域名是唯一的:VM_<unique identifier>.domain_name.com。

    重要说明重要事项

    如果要添加从 Windows 提示符运行的命令(如 mkdir 或运行批处理文件),则必须使用 cmd /c 作为命令的开头。 例如 cmd /c $(BuildLocation)\copyexe $(BuildLocation),其中 copyexe 为批处理文件 copyexe.bat,该文件将可执行文件复制到虚拟机上的本地目录。

    如果脚本或命令需要特定工作目录,则可以在**“工作目录”**中键入该目录。

    提示

    在部署应用程序后,验证是否可以基于文件的位置运行测试。 例如,如果编码的 UI 测试启动 Windows 客户端应用程序,则验证可执行文件是否位于供测试运行的正确目录中。

    可能还需要验证环境中计算机的名称对于应用程序是否正确。 例如,您可能必须验证,Web 服务器角色的虚拟机是否配置为可访问数据库服务器角色的虚拟机上的数据库服务器实例。

  11. (建议)若要在部署应用程序之后,但在运行任何测试之前拍摄环境快照,必须执行以下操作:

    1. 选择**“部署生成后,拍摄环境的快照”**。

      重要说明重要事项

      如果在夜间工作流过程中运行此生成定义,则环境中的每个虚拟机很快便会具有与之关联的许多快照。 这会降低虚拟机的性能。 此外,最多可以为每个虚拟环境存储 50 张快照。 因此,必须定期删除旧快照。

    2. 在**“输入快照名称”**中,键入此快照的名称。

    提示

    若要调查问题,可使用此快照连接到环境,然后重新运行测试。 团队的其他成员也可以执行此操作。 通过此快照,在安装有相关应用程序的干净系统上重新运行测试,从而确定发生的问题,甚至验证应用程序的安装是否正确,这通常十分有用。

  12. 单击**“下一步”**。

  13. 若要在部署应用程序之后运行自动测试,必须执行以下这些步骤:

    1. 选择**“在环境中运行这些测试”**。

    2. 在**“选择测试计划”**下,选择要使用的测试计划。 测试结果会保存为此测试计划的一部分。

    3. 在**“选择测试套件”下单击省略号 (…),然后在“选择测试套件”**对话框中,选择要运行的测试套件。

      提示

      默认情况下,会选择根测试套件。 如果您不想运行此测试套件中的测试,则必须清除此字段。

    4. 在**“选择测试配置”**下,选择计划用于运行测试的配置。

      提示

      对于所选择的每个测试套件中的每个测试用例,其测试结果都会保存为套件中每个测试用例和所选择的测试配置的配对。 有关测试配置的更多信息,请参见使用测试配置定义测试矩阵

    5. 在**“选择自动测试设置”**下,选择前面在本主题整个过程的步骤 9 中,为匹配虚拟环境中的角色而创建的测试设置。 有关测试设置的更多信息,请参见创建作为测试计划一部分的自动测试的测试设置

  14. 单击**“完成”**。

  15. 单击**“保存”**以保存生成定义。

    创建的生成定义显示在团队资源管理器中的**“生成”**文件夹中。

对工作流的生成定义进行排队

现在可以对此生成进行排队,以运行工作流并查看生成工作流的进度。

对工作流的生成定义进行排队

  1. 若要启动生成定义以生成、部署和测试应用程序,请在“生成”文件夹中右击实验室生成定义,然后单击**“使新生成入队”**。

    此时将显示**“为生成排队”**对话框。

  2. 验证生成工作流的信息,然后单击**“队列”**。

    此时将显示“生成资源管理器”视图。

  3. 若要在进行生成时查看“生成摘要”视图,请双击您的生成。

    您便可以在进行生成时查看状态。

  4. (可选)如果您要在进行生成时查看环境,请打开 Microsoft 测试管理器,找到**“实验室中心”,单击“实验室”**,然后在列表中单击您的环境。 您可以查看生成进度(反映在环境的图像中和此图像上方的环境详细信息中),如下所示:

    • 如果您选择此选项,则会还原快照。

    • 如果您选择此选项,则会拍摄后期部署快照。

    • 功能的状态(当功能准备就绪时,会显示绿色箭头)。

    • 运行时的测试(如果测试与用户界面进行交互)。

    如果生成工作流成功完成,则会看到绿色对号。 如果存在错误,则可以单击**“查看日志”**以查看详细信息。

从生成结果连接到环境

如果在生成工作流过程中测试失败,则可能需要连接到环境以调查问题。 可以连接到后期部署快照(如果在生成工作流中选择了此选项),也可以连接到当前状态下的环境,如下图所示。

从生成结果连接到环境

从生成结果连接到环境

  1. 从团队资源管理器中的**“生成”文件夹中,右击生成工作流定义,然后指向“查看生成”**。

    此时将显示**“生成资源管理器”**视图。

  2. 若要查看已完成的生成,请单击**“已完成”**选项卡。

  3. 双击要查看的生成。

    此时将显示“生成摘要”视图。

  4. 单击“查看环境快照 <生成名称和编号>”旁的链接。

    此时将显示**“连接到环境”**对话框。

  5. 如果要连接到在部署应用程序之后拍摄的快照,请单击**“连接到此环境中的快照”**。

    提示

    通过连接到此快照,会丢弃在此后期部署快照之后进行的所有更改。 如果要保留任何更改,请连接到当前状态下的环境,在拍摄快照之后,再还原为后期部署快照。 有关如何拍摄快照的信息,请参见如何:保存环境的当前状态

  6. 如果要在从工作流运行任何测试之后,连接到当前状态下的环境,请单击**“连接到当前状态下的环境”**。

  7. 单击**“连接”**。

    此时将显示 Microsoft 环境查看器,您已连接到环境中。 现在,可以调查任何问题。

查看和分析生成工作流的测试结果

在生成工作流摘要中,可以查看测试结果摘要。 但是,使用 Microsoft 测试管理器也可以查看和分析测试结果,因为这些结果将存储为测试计划的一部分,如下图中所示。 有关对测试计划的测试结果进行报告的更多信息,请参见报告测试计划的测试进度

从生成工作流查看测试结果

从 Microsoft 测试管理器查看和分析测试结果

  1. 打开 Microsoft 测试管理器。

    提示

    若要显示 Microsoft 测试管理器窗口,请单击“开始”,然后单击“所有程序”。 指向“Microsoft Visual Studio 2010”,然后单击“Microsoft 测试管理器”

  2. 若要查看测试结果,请单击中心组切换器上的下箭头,然后单击**“测试中心”**。

  3. 在中心组菜单栏上,单击**“测试”**,然后从在生成工作流中使用的测试套件层次结构中选择一个测试套件。

    您可以查看在生成工作流中所选的配置的测试结果。

  4. 如果要分析完整的测试运行,请单击**“分析测试运行”**。

    此时将显示**“分析测试运行”**活动。 它显示此测试计划的所有测试运行。

    提示

    运行标题会反映生成定义的名称。 运行 ID 显示在生成的生成摘要页中,以帮助标识运行。

  5. 双击某个测试运行将其打开并查看详细信息。 此时将显示该测试运行的详细信息。

  6. (可选)若要更新测试运行的标题,使其更能体现其意义,请在**“标题”**中键入新名称。

  7. (可选)如果测试未通过,可以更新未通过的原因。 请单击**“解决方法”**,然后从列表中选择未通过的原因。

  8. (可选)若要向测试结果添加注释,请单击**“注释”图标。 键入注释,然后单击“保存注释”**。

  9. (可选)若要查看单个测试的详细信息,请双击该测试。

    此时将显示测试结果。 其中包含测试运行的详细信息、为此测试结果收集的数据附件以及该测试的测试结果历史记录。 您可以关闭此视图以返回到测试运行。

    提示

    如果您确定存在 Bug,则可以从此视图创建 Bug。

  10. 若要保存对该测试运行所做的任何更改,请在工具栏上单击**“保存”**。

请参见

其他资源

使用虚拟环境进行测试

排查在虚拟环境中运行测试时遇到的问题