虚拟化技术在软件测试的应用

2010-03-14  欧阳辰 

虚拟化技术在软件测试的应用

By QAThinker.com

1)什么是虚拟化

虚拟化技术很早就提出来了,但是真正走向市场是从2005年以后,那时候AMD和Intel公司都开始推出支持虚拟化技术的CPU。简单的说,虚拟机就像一个软件容器,可以安装操作系统和应用软件,像一台物理机一样运行,其有如下特点。

  • 操作系统和软件无法辨别其主机是否是虚拟机。
  • 多台虚拟机器像应用程序一样可以运行在主机上

2) 虚拟化技术的优势

2.1) 提高硬件的利用率

      根据调查数据,通常测试实验室的硬件的使用率是很低的,平均只有10%,通过虚拟化技术可以使利用率提高到80%。

diagram_datacenterexpense

* IDC 的数据中心趋势调查,2007 年。

 2.2) 低碳生活
降低数据中心的成本(省电/空间),能源成本降低 80%。大部分机器5-15%时间处于使用状态,而空闲状态耗电量为满负荷60%以上。

 2.3) 高管理性

通过虚拟化技术,计算机的管理(虚拟机)的管理变得更加简单,创建、修改一个计算机的操作可以瞬间内完成。这种高管理型有助于推动基础设施服务化(Infrastructure as Service)的发展。目前,有很多云计算的基础设施都是大规模使用了虚拟技术。

SaaS%20PaaS%20and%20IaaS_2

大家可能对SaaS都比较熟悉,这里我解释一下IaaS和PaaS。
基础设施作为服务(IaaS):计算机资源通过服务的方式提供出来,包括处理能力,存储和网络能力等等。

平台作为服务(PaaS):平台和工具能通过平台或API方式提供出来,提供更加高层次服务,例如数据库存储服务,J2EE服务,.NET平台等。

3. 虚拟化给软件测试带来的好处

通过虚拟化技术,软件测试可以获得很多好处,以下就是一些例子;

3.1)测试实验室(Test Lab)的建立

  • 空间
  • 时间
  • 电力

image

如图所示的一个例子:168 台式机,被12个服务器主机代替。省空间,省电,方便管理,大大降低了测试实验室建设的成本。

大部分的测试环境对测试机器的性能要求都不是很高(性能测试除外),那么对于这种情况,虚拟机是非常适合的解决方案。虚拟机可以用于测试实验室(Test Lab)的构建,支持自动化测试,也可以为远程的测试和开发人员提供机器服务。

举例来说,一个网站的测试,需要10个手工测试人员进行,那么我们可以创建10个虚拟计算机,那么只需要1-2个主机就行了,并且支持远程工作,那么这些手工测试人员可以在家里进行工作。

3.2) 软件快速部署和连续集成

虚拟机的管理是非常方便,这大大促进了快速部署(Fast Deployment)和连续集成(Continual Integration)。举例来说,在连续集成的时候,往往需要大量机器,并且快速恢复到某个系统的初始状态。虚拟化技术的高管理性能够很好满足这些需求,同时成本比物理机器要低很多。

3.3)测试用例失败后的调查
在测试用例失败后,通过保存机器状态,可以方便问题的调查。如果使用物理机器,这些机器就需要被占用,一直到问题调查完毕。而且,调查的状态具有不可恢复性。如果使用虚拟化技术,计算机状态可以被保持到到文件;在需要调查问题时,随时可以把虚拟机文件恢复到虚拟机进行调查;同时机器的状态可以随时保存,随时恢复,这给一些不容易重现的问题提供了有利的调查方法。

3.4)虚拟硬件的使用
虚拟化不仅仅可以模拟软件,也可以模拟硬件,包括网卡,光驱,USB接口等等。特别是USB接口的虚拟化,使得在很多USB设备驱动的测试提供了便利。另外一个例子是虚拟光驱,Vista开发出来后,安装以前的方法要制作DVD光盘来进行最后的验证。按照传统的做法,需要180张DVD光盘,需要花2个星期。而使用虚拟化解决方案,制作ISO 映像,只需要2天时间。

image

4 虚拟化过程中一些好的实践

4.1 仔细设计网络拓扑结构
  对于一些对网络特别要求的实验室,需要仔细设计网络Top结构,特别是IP地址的数量

4.2 选购主机,注意扩展性
主机的选购需要考虑内存的扩展能力,内存大小很容易成为增加虚拟机的一个瓶颈。当机器映像很多的时候,磁盘空间也容易出现紧张。网络速度也是需要考虑。

4.3) 仔细考虑一些特殊需求的测试
a) USB/驱动 b) 3D效果  c)能源管理 d)性能测试结果的分析应该考虑到虚拟的使用的范围和局限性。

4.4) 自动保持闲置的虚拟机
实验室中有长期不用的虚拟机,可以定时自动保存起来,需要时以后可以再恢复。这样可以提高系统的效率,降低能耗。保存和恢复机器都是需要时间的,其性能和网络的存储位置有很大关系。

总结,虚拟化作为一个重要的技术,不仅仅可以节省成本,而且可以帮助我们保护蓝天,何乐而不为呢?

418°/4117 人阅读/7 条评论 发表评论

王波  2010-03-16

节能减排啊,好东西。


谷明英  2010-03-16

在做产品测试的过程使用虚拟机能解决很大问题。但是当多项目测试,项目版本很多,子分支很多的情况下,感觉就特别复杂。还有一个问题,虚拟机总存在一定不稳定性,备份管理就需要存储空间,得规划


谢明志  2010-03-19

我在测试中尝试使用了infrastructure cloud也就是您提到的infrastructure as a service, 让我可以将测试的重点放到真正有价值的工作上去,而将configuration, deployment 交给Infrastructure team.
同时,敏捷测试中的持续集成,持续测试概念对成本的控制、ROI的要求颇高,使用虚拟技术是必然趋势。


欧阳辰  2010-03-19

谷明英: 在做产品测试的过程使用虚拟机能解决很大问题。但是当多项目测试,项目版本很多,子分支很多的情况下,感觉就特别复杂。还有一个问题,虚拟机总存在一定不稳定性,备份管理
恩,如果使用机器备份、恢复,模板等功能的化,经常需要很大的存储空间。


欧阳辰  2010-03-19

谢明志: 我在测试中尝试使用了infrastructure cloud也就是您提到的infrastructure as a service, 让我可以将测试的重点放到真正有价值的工作上去,而将configuration, depl
同意,测试的基础设施大部分都应该放到虚拟机器上,这是一个方向。


杨阳  2010-03-24

欧阳辰: 同意,测试的基础设施大部分都应该放到虚拟机器上,这是一个方向。
同意。虚拟化是大方向。


赵璨  2010-03-25

我们现在的测试设备已经迁移到公司虚拟平台上。这个虚拟化平台本身运行在分布式系统上,测试还是很有挑战的。


登录 后发表评论