实验室管理功能是Visual Studio 2010种非常酷的项功能,同时也是稍微复杂的,需要进行配置才能使用。这篇博客的内容结构乱了些,是配置过程中一些临时笔记,以后会逐步细化让它更有条理。
TFS实验室管理 (Team Lab Management) 中涉及到了很多概念,由于其依赖于虚拟化技术,特别是SCVMM来管理虚拟机,所以很多这方面的概念,例如:Host、Host Group、Library Share、Environment等, MSDN的帮助“Using a Virtual Lab for Your Application Lifecycle”详细介绍了这些概念。下面这张图展示了配置整个运行环境的步骤:
环境的配置过程并不复杂,但对硬件有较高的要求,至少需要一台强大的64位支持Hyper-V服务器,可以将Hyper-V Host、SCVMM和Library这三个服务器组件装在上面, TFS和其它Controllers则可以装在飞64的机器就可以。
- Configuring Lab Management for the First Time 建给出了如何安装Hyper-V,SCVMM等Lab的基础构架环境。(创建VM的三种方法,其中就有如何从Template创建,但是又该如何去创建Template呢?参见 Creating Virtual Machines from a Template)。此外,也经常需要由一台虚拟机来创建VM Template,参见 How to Create a Template from a Virtual Machine
- Using a Virtual Lab for Your Application Lifecycle
下面这幅图来自于 《How to: Create and Store Virtual Machines and Templates Ready for Lab Management》,清晰展示了在Lab中各个服务器上部署的组件软件的结构图。如何来安装和配置Agents请参见《Installing and Configuring Visual Studio Agents》
在上述的构架中提到了三个Agents: Lab agent, test agent和test agent,它们三个各司其职一起才能完成build - deploy - test的整个自动化过程。这里有篇好文章 Setting up agents/controllers for lab详细介绍了他们之间的关系以及安装配置。
在所有Lab相关的概念中,Environment是一个值得重点关注的概念,整个测试环境的建立、应用程序的部署、以及测试用例执行都要依赖于它。Environment是一组机器的集合,如果管理的是虚拟机则称为Virtual Environment,普通的物理硬件机器,则称为Physical Envrionment。两者都可以用于建立Lab,但最常用的是Virtual Environment(以下就简称为VE)。关于VE的MSDN帮助有很多,很容易就让人晕头,下面几个是比较关键:
- 什么是VE?
- 如何创建VM Template和VE? 需要注意:如果要使用应用部署功能,即LabDefaultTemplate.xaml,创建的Build定义,则一定要在上面安装Build Agent。Build Agent和Team Foudnation Server是一安装包,在安装的时只选Build Service就可以了,详细请参见 Install a Build Controller or a Build Agent。
- 如何把要被测试的应用软件部署到VE上?
- 如何在VE上执行测试用例(手动和自动)?
- 如何在编译和部署完应用程序后自动执行测试用例?
注意:在由虚拟机创建Template之前,一定要确认Administrator被Enable了,并且其密码为空。
注意:在使用VM安装软件时候,经常发现虚拟机的网络速度出奇的慢,用ping命令简单测试了一下,每个包的时间大概为340ms,而在其他机器上测试则只要1ms,很显然配置的网络有问题。开始还以为系统不稳定,随意从起了几次机器,但并不解决问题。随即在网上搜索了一下,发现这确实是一个Hpyer-V上存在的问题,简单设置一下就可以绕过去,即 禁止网卡的TCP Offload选项,参见 Very slow network performance with Intel NIC when TCP Large Send Offload is enabled。经过配置后,速度提高到 <2ms 。
Environment作为一个整体也可以进行Snapshot,这是一个很酷很有用的功能,详细的使用参见 - Using Snapshots to Store, Reproduce, and Share the State of Virtual Environments。
参考资料: