部署测试环境¶
第 12 章¶
部署测试环境¶
测试执行是在一定的环境上进行的,环境的设置直接影响测试结果。如果环境设置不对,就可能造成不正确的测试结果。测试结果需要测试环境来保证,所以在测试计划时,就要开始考虑、设计测试环境,并准备相应的测试环境所需的资源。测试环境的建立是测试工作的基础,在项目计划阶段就要规划测试环境,并能根据需要对测试环境进行调整,合理的计划安排可以节约软件成本,缩短测试周期。
12.1 测试环境的重要性¶
配置测试环境是测试实施的一个重要阶段,测试环境适合与否会严重影响测试结果的真实性和正确性。
1. 测试环境的定义¶
软件测试环境包括设计环境、实施环境和管理环境。本章的内容讲述的是通常意义上的测试环境,即测试的实施环境。
1)设计环境¶
设计环境指编制测试计划、说明、报告及与测试有关的文件所基于的软、硬件设备和支持。在软件设计阶段,不仅要设计测试用例,绘制系统工作流程图、数据流程图等,需要一些设计工具支持,而且还有开发测试工具或测试脚本,需要集成开发环境的支持,以及对技术讨论、沟通等必要的支持手段,如即时消息(IM)、邮件、在线会议系统等。
2)实施环境¶
实施环境指对软件系统进行各项测试所基于的软、硬件设备和支持。测试实施环境包括被测软件的运行平台和用于各项测试的工具。实施环境必须尽可能地模拟真实环境,以期望能够测试出真实环境中的所有问题,同时该环境是独立的,不受开发人员调试工作的影响。通常意义上所讨论的测试环境,主要就是指软件测试的实施环境。
3)管理环境¶
管理环境指管理测试资源所基于的软、硬件设备和支持。测试资源指测试活动所利用或产生的有形物质(如软件、硬件、文档)或无形财富(如人力、时间、测试操作等)。广义的测试管理环境包含测试设计环境、测试实施环境,以及专门的测试管理工具。例如,对 Bug 的跟踪、分析管理;对 Test Case 的分类管理;对测试任务的分派、资源管理等。
2. 测试环境是测试的基础¶
测试环境贯穿了测试的各个阶段,每个测试阶段中测试环境对测试的影响是不一样的。
在测试的计划阶段,充分理解客户需求,掌握产品的基本特性有助于测试环境的设计,合理调度使用各种资源,申请新的测试资源,保证计划的顺利实施。如果在测试计划中规划了一个不正确的环境,直到实施的过程中才发现,将浪费大量的人力和物力而取得一些无用的结果。即使只是遗漏了一些环境配置 (如在一个基于手机开发的项目中遗漏过手机的上网费用), 不能及时发现、申请购买或调用,也会影响整个项目的进度。
在单元测试和集成测试阶段,大部分测试工作是由开发人员完成的。开发人员的测试环境通常为开发环境,有利于代码的调试和分析,但开发环境和产品实际运行环境的差异比较大,测试结果可能不够可靠。有这样一个例子,测试人员报告的 Bug 在开发环境中无法重现,开发人员就在测试人员的测试环境中研究,原来是环境系统的设置不同造成的,测试人员就应该分析修改系统设置是否合理。如果要求用户手工修改系统设置,或不能识别用户的系统设置,通常可以确定是缺陷。
在系统测试和验收测试阶段,测试环境必须最大限度地接近实际环境。测试人员在设计测试用例时就要写明测试环境,因为在不同的环境中预期的结果是不同的。测试中运行测试用例、报告 Bug 时有一项基本要求就是写明测试环境,以便开发人员再现 Bug, 减少不必要的交流和讨论。大型的软件系统,特别是支持多平台的软件系统,往往测试环境比较复杂,而且在不同的环境下,软件的特性有差异,问题的解决方案也不同。
测试环境是软件测试的基础,使用错误的测试环境,可能引起下列一系列问题。
所以,测试环境问题的重要性应该得到充分的重视,尽量将测试环境的因素降到最小,避免因测试环境出现的问题。
12.2 测试环境要素¶
测试环境包括硬件环境和软件环境。硬件环境指测试必需的服务器、客户端、网络连接设备,以及打印机、扫描仪等辅助硬件设备所构成的环境;软件环境指被测软件运行时的操作系统、数据库及其他应用软件构成的环境。细分测试环境的 5 个要素是:软件、硬件、网络环境、数据准备、测试工具。测试工具(包括自动化测试框架)是测试环境的重要组成部分,在第 11 章已做了详细介绍。一般还需要监控诊断的实用工具,如监控系统性能、网络流量的工具,跟踪记录出错信息、备份关键数据的工具等。
这里讨论的测试环境主要指物理环境因素,实际上,在讨论测试环境时,还要考虑测试环境的社会因素和产品特性的影响。例如,社会因素中要考虑相关的国家标准,甚至相关的法律条款等,而从产品特性的影响来看,包括产品的主要用途、用户特征、运行时间长短、负载强度等。
12.2.1 硬件¶
软件测试中,最基本的硬件包括特定的网络设备、服务器、测试用机。服务器可分为 PC 服务器、专用服务器、小型计算机等。为了满足密集部署服务器的需要,开始普遍使用机架式服务器和刀片式服务器,极大地改善了服务器管理性能、使运作参数最优化,能够减少环境设置、复杂线缆、动力和散热等方面的开支,并节省机房空间,有利于日常的维护及管理。
(1)机架式服务器 (Rack Server),以 19 英寸机架作为标准宽度的服务器类型,高度则从 1U 到数 U,一般分为 1U 和 2U。1U 服务器比较薄 (4.445cm),耗电低,一个机架可以安装更多的服务器。2U 服务器机型体型是 1U 机型的两倍,服务器内部具有更大的空间,功能更强大,使用寿命更长。
(2)刀片式服务器 (Blade Server) 是一种 HAHD (High Availability High Density, 高可用高密度) 的低成本服务器平台,如图 12-1 所示。每一块 “刀片” 就是一块系统主板,并通过本地硬盘启动操作系统,类似于一个个独立的服务器。一个 42U 高的 Blade Server 系统,可以容纳 140 个服务器。

测试用机又可分为普通 PC、网络 PC、苹果 (Mac) 机、Sun 工作站、移动设备等。也可以用服务器来作测试机,特别是在性能测试时,一台服务器模拟的虚拟用户要远远超过一般的 PC,这样无论从性价比、占用空间等来看,都宜选用机架式服务器或刀片式服务器。
测试 Audio、Video 等多媒体产品除需要配备摄像头、麦克风、音箱等之外,还要选择不同类型的声卡、显示卡等。显示卡主要厂商有 Intel、ATI、nVidia、VIA (S3)、SIS、Matrox、XGI、3D Labs。其中,Intel、VIA (S3)、SIS 主要生产集成芯片;ATI (Radeon 系列显示卡) 和 nVidia(包括 TNT、Geforce 系列显示卡)以独立芯片为主,目前是市场上的主流;而 Matrox 和 3D Labs 则主要面向专业图形市场。3Dfx 公司以生产 VooDoo(巫毒)显示卡闻名,现被 nVidia 公司收购。
和显示卡一样,声卡也分为主板集成声卡 (板载声卡) 和独立声卡,还有一种外置式声卡,通过 USB 接口与计算机连接。板载声卡还可以进一步分为软声卡和硬声卡,软声卡没有主处理芯片,只有一个解码芯片,通过 CPU 的运算来代替声卡主处理芯片的作用。而板载硬声卡带有主处理芯片,许多音效计算都是由主处理芯片来进行,而不需要 CPU 参与。另外,声卡、显示卡看似硬件,但最终还受其驱动程序的控制,而且在选择驱动程序时,还要考虑操作系统、型号等因素,如图 12-2 所示。
除了主机、声卡、显示卡等硬件之外,测试中常用的硬件设备还包括以下几种。
(1) 手机:智能手机 iPhone、Blackbarry、GPhone 和其他各种普通手机等。

硬件设备多种多样,完全根据产品的需求进行选择。但选择时需要考虑其配置标准。通常有标准配置、最佳配置和最低配置等几种情况。例如,一台服务器的主要性能指标由 CPU、主板、内存、硬盘决定。设计要求应用服务器配置: Intel 架构的 2U 机架式服务器,2.4GHz Xeon 双 CPU、4GB 内存、320GB SCSI 硬盘、1000M 自适应网卡等,则此配置就是标准配置,因为完全符合设计要求。
通常一个较完善的测试环境均包括标准配置、最佳配置和最低配置的设备,只是根据项目的需求和条件的限制所占的比例不同。如压力测试、性能测试、容量测试应该在标准配置及最佳配置的设备上运行。而功能性测试、用户界面测试等完全可以在低配置的机器上运行。
12.2.2 网络环境¶
随着网络的普及,越来越多的软件产品离不开网络环境,网络环境是由相关的网络设备、网络系统软件及其配置构成的综合环境,包括:
在网络环境设置中,构造不同的多个子网段,不仅使服务器和客户端 (或测试机) 不在一个子网段中,而且客户端 (或测试机) 也最好分布在不同的几个子网段中。这样有利于设置防火墙、代理服务器或网关等,使测试环境更能接近真实的网络环境。
在目前的网络部署中,防火墙和代理服务器应用广泛,已是标准配备,我们需要掌握这方面的知识。防火墙一般分为以下两类。
(1) 状态检测型,如最具代表性的硬件防火墙 Cisco PIX、Check Point Firewall-1/ NetScreen-100。
(2)基于代理技术的软件防火墙,如 Raptor、CyberGuard、Secure Computing 的产品、微软公司的 ISA Server 2004/2006/2008。
如图 12-3 所示为以 ISA Server 2004 构建的网络测试环境。

12.2.3 软件¶
软件环境包括操作系统、网络协议和应用程序。测试工具软件也是软件环境派生出来的一部分。建立软件测试环境的原则是选择具有广泛代表性的重要操作系统和大量应用程序。在兼容性测试中,软件环境尤其重要。
1. 常见的操作系统¶
而且,某个操作系统 (如 Windows 7) 还能进一步分为 32 位和 64 位两个版本,Mac OS X/Solaris/Linux 操作系统不仅分为 32 位、64 位两个版本,还针对不同的主机硬件架构 (x86、PowerPC、Sparc、Adm64 和 Arm 等) 有不同的版本。
2. 常见的数据库管理系统¶
3. 常见的 Web 服务器¶
4. 常见的配置¶
12.2.4 数据准备¶
许多测试用例取决于测试数据,特别是围绕数据库系统、文件管理系统等构建的应用系统,测试的数据不仅对系统整体性能测试非常重要,对一些功能测试也是非常重要的,异常数据或大范围的数据都有助于提高测试的覆盖率。测试数据应尽可能地取得大量真实数据,无法取得真实数据时应尽可能模拟出大量随机的数据。数据准备包括数据量和真实性两个方面。
系统恢复是测试的关键。对于更为复杂的嵌入式实时软件系统,例如惯性导航系统仅有惯性平台还不够,为了产生测试数据,还必须使惯性平台按所要求的运动规律进行移动。也可以用软件来仿真外部设备,模拟真实的外围设备。
12.3 虚拟机的应用¶
在 12.2.3 节中,已列出不同的操作系统及其众多的版本,这些测试环境都是软件产品测试中经常要考虑的,而且许多 Web 应用平台的测试,还需要针对操作系统和浏览器构成的组合平台进行兼容性测试,其结果要构建大量不同的测试环境。如果每种环境都用一台物理机器来安装,那么不仅需要购买很多机器,投入很大,而且还会占用很大的实验室空间,每天的用电量也是可观的。这时,最好的解决办法就是虚拟机方法。
虚拟化技术可以提供负载隔离,为所有系统运算和 I/O 设计的微型资源控制,使我们在单台物理机器上安装多个系统,允许用户同时运行多个操作系统、多个操作系统版本或实例,而不是只有每次运行一个操作系统的多重启动环境。虚拟化技术整合空闲的系统资源,充分利用硬件资源,节约能源和空间,并能提升系统的运作效率,有利于测试环境的建立和维护。
(1)根据 VMware 官方的统计,在目前的客户环境中至少有 70% 的服务器利用率只有 20%\~30%,而通过 VMware 可以将服务器的利用率提高到 85%\~95%。
(2)如果内存加大到 16GB 或更高,一台机器可以虚拟 4~8 台服务器,而原来十几台服务器的要求,现在只需要买 3 台甚至更少的服务器就可以了。
(3)一台机器虽然只能虚拟 4~8 台服务器,但可以事先建立十几套虚拟机镜像文件,把这些镜像作为虚拟机来保存。测试时,只要花几分钟就可以装载所需的镜像文件,更换为新的测试环境,而不必为重建系统等上数小时。这在自动化测试时特别有用,每一个测试套件执行完以后,都需要恢复最初的测试环境,就要靠虚拟机镜像来创建回滚机制(Rollback),在几分钟之内就能把系统恢复到之前的初始状态。
(4) 通过零宕机以改善服务等级,即使在灾难状态下,也可减少恢复时间。
(5) 标准化环境和改进安全,包括高级备份策略,在更少冗余的情况下,确保高可用性。
(6) 在服务器管理方面的重大改进,容易实现添加、移动、变更和重置服务器的操作。
(7) 通过部署在刀片式 (机架式) 服务器上的虚拟中心来管理虚拟和实体主机,建立一个逻辑的资源池,连续地整合系统负载,进而优化硬件使用率和降低成本。
(8) 从数据中心空间、机柜、网线、耗电量、空调等方面大大节省维护费用。
12.3.1 虚拟机软件¶
在真实计算机系统中,操作系统组成中的设备驱动控制硬件资源,负责将系统指令转化成特定设备控制语言。在假设设备所有权独立的情况下形成驱动,这就使得单个计算机上不能并发运行多个操作系统。虚拟机则包含克服该局限性的技术,引入了底层设备资源重定向交互作用,每个虚拟机由一组虚拟化设备构成,其中每个虚拟机都有对应的虚拟硬件,而不会影响高层应用层。通过虚拟机,客户可以在单个计算机上并发运行多个操作系统。常见的虚拟机软件如下。
(1) VMware 的产品,包括 VMware GSX/ESX Server 与 VMware Workstation。
(2) 微软公司的 Virtual Server 和 Virtual PC (for Windows/Mac/OS2)。
(3) Sun xVM VirtualBox 完全免费和开源,可运行在 32 位和 64 位平台上,并支持 Windows、Linux 和 Mac OS X 主机。
(4) Parallels Workstation, 在 Mac OS X 环境下可直接运行 Windows 系统,还支持 Linux、FreeBSD、OS/2、Solaris 等操作系统。Parallels Workstation 是世界上第一个集成轻型 Hypervisor 的桌面虚拟化解决方案。Hypervisor 技术是基于大型计算机技术建立的,通过使用一个插入硬件和操作系统间的抽象层,直接控制主机的部分硬件资源,大大提高了虚拟机的稳定性、安全性和性能。
(5)开源软件 QEMU 在 bochs 的基础上开发而成,但性能有很大提高,和 Virtual PC 相当,支持 Linux、Windows、Mac OS 和不同的硬件系统架构。
(6) twoOStwo 和 svista, 后起之秀,类似于 VMware Workstation。
(7) SW-soft 公司的 Virtuozzo, 不虚拟硬件,而是借助虚拟化技术把 guest 作为 host 的副本运行。这要求对 guest 的操作系统做特别的修改,不支持和 host 不同的操作系统,即每一个虚拟机都是运行在同一个操作系统上的实例。
(8)开源软件 Xen,是由剑桥大学计算机实验室开发的一个开源项目,与 Virtuozzo 类似,也是采用虚拟化技术,但只支持 Linux 系统。
(9) Cygwin、GnuWin32、WinLinux 都可以看作是 UNIX/Linux 的 Windows 内嵌版本,
(10) 开源软件 Colinux, 提供 Windows 下的 Linux 系统的模拟。
12.3.2 VMware 的虚拟机解决方案¶
(1) VMware-ESX-Server 不需要操作系统的支持 (其核心是 Red Hat Linux 的超级减缩
版,基本不占用硬件资源,大约只有 5% 的消耗), 它本身就是一个操作系统,用来管理硬件资源,并在上面直接安装各种操作系统,如图 12-4 所示,并带有远程 Web 管理和客户端管理功能。
VMware GSX Server 与 VMWare ESX Server 适用于服务器,VMware Workstation 与 VMware GSX Server

需要操作系统的支持,而 VMWare ESX Server 可在一台裸机上安装,不需要操作系统的支持,即在主机没有操作系统的情况下也可以安装。简单地说,ESX 为企业级,GSX 为工作组级,而 Workstation 则是为单机服务的。VMware ESX Server 进一步分为基础版 (Foundation)、标准版 (Standard) 和企业版 (Enterprise)。
可用性) 功能。
(3)Enterprise 版本,除了包含支持标准版功能之外,还加入了 VMware Vmotion、VMware Storage Vmotion、分布式资源调度(Distributed Resource Scheduler, DRS)等功能,其中 Vmotion 可以通过将虚拟机从低性能和停机的服务器上转移出去而提高硬件的利用率,而 DRS 基于预先设定的规则,可以将资源(CPU、内存和存储器)分配到高优先级的虚拟机器上。
ESX Server 工作原理示意图如图 12-4 所示。
VMWare 还提供了比较多的组件 (工具), 例如:
12.3.3 辅助工具¶
Akorri 公司的 BalancePoint 工具可以增强 VMware 管理的能力,侧重于虚拟机和集群的性能优化,还增加了对博客和思科 SAN 交换机的支持。DRS 和 Vmotion 可以显示虚拟服务器的性能,从而决定是否需要进行负载平衡调度,但是这两个工具无法分析和显示 VMware 以外的应用软件资源冲突。由于 BalancePoint 没有与操作系统绑定,因此可显示 VMware 的性能是否受到了处于同一存储区域网络其他应用软件的影响。BalancePoint 工具包括较多组件:
Vizioncore 公司提供更全面的产品以支持虚拟机的管理,包括 vControl、vConverter、vFoglight、vOptimizer、vRanger、vCharter、vReplicator、vEssentials solution bundles 等。
用,并能利用报警和专家建议等功能去检测、诊断和解决影响可用性和性能的问题。
(4) vOptimizer 数据中心内部的虚拟机优化,包括为 VMware 的 vCenter 服务器 / ESX 主机和每台虚拟机扫描未使用的空间,锁定过量分配的存储,根据虚拟机的需求进行增减调整,完全自动化的虚拟存储容量调整 / 回收流程。
(5) vRanger Pro 允许用户对虚拟硬盘执行裸盘级还原任务,在将备份文件发送到 WAN 上的目的服务器之前还将对文件进行压缩,并能同 Virtual Center 进行对话,设立一个备份文件夹,将虚拟机分组,定期执行备份。
(6) vReplicator 是虚拟环境下的备份、恢复和备份管理解决方案,可以在 guest 外部的服务控制台上执行复制任务,能够复制整个虚拟机,也可以仅复制选定的单个虚拟机。复制全部虚拟机包括复制配置设置、操作系统补丁、应用程序、数据及其他操作系统层的变动,在数据复制之外无须保持同步。
12.4 如何建立项目的测试环境¶
针对某个具体项目,测试环境的要求会更明确,无论是对服务器、支撑平台软件还是对网络配置、应用软件等都需要进行具体的规划和定义,完成相应的配置,以满足具体项目的测试工作要求。为了建立正确的测试环境,要基于下列文档和其他要求来完成测试环境的配置。
(1)软件构架文档,了解软件系统架构设计的细节,包括服务器之间、数据通道等之间的关系。
(2) 部署模型,如本地部署、远程部署、网络共享部署、热部署等。例如,在 Axis2 中,可采用不同方式部署服务,如存储库方式、编程方式和传统 Java 对象部署方式等。
(3) 测试自动化架构,如何有效地支持自动化测试的实施。
(4) 测试数据的要求,包括数据量、负载模式等。
(5) 测试策略和测试方法,会影响测试环境的设计。
1. 规划测试环境¶
根据软件系统的架构,获取并审查部署模型和相关信息,从而确定测试环境部署的要求和特点,然后结合所采用的测试方法和技术,规划测试环境,包括测试环境的拓扑图。
根据已规划的测试环境,收集每个配置的详细信息,尝试寻找可能的环境,包括最低环境要求、最高环境要求,并考虑现有的软硬件资源、测试周期和测试任务等。例如,哪些设备是可以共享的、哪些设备是不能共享的,列出和优化设备清单,并通过相关部门的审查、批准等。
2. 测试实验室配置清单¶
运用 13.2 节的软硬件知识有助于给出合理的配置清单,测试环境的各要素,也就是实验室配置清单的主要内容。一个完整的实验室配置清单不仅包括测试中所需的软硬件、工具、数据等,而且还包括实验室所需的其他设备,如空调、去湿机、温度 / 湿度计等。在整理配置清单时,主要考虑下列因素。
(1) 产品的使用环境决定了测试环境,要尽可能地模拟真实的用户使用环境。
(2) 一方面要保证测试环境的完整性和正确性,另一方面,可以考虑采用虚拟机等技术来减少硬件的需求。
(3) 针对不同的测试类型,例如,功能测试和性能测试对测试环境的要求是不一样的,性
能测试对设备有更高的要求,包括设备型号、参数都是一样的。
(4)可能还要考虑产品运行的实际环境需求、用户使用产品的一些特点和有利于测试的效率,确保配置一个完整的清单。
一个标准的清单模板示例¶
(1)软件:被测应用服务器、客户端和测试机等所需的操作系统、数据库管理系统、中间件、Web 服务器以及其他应用软件的名称、版本(包括相关的补丁版本)。
① 操作系统:需要所有具有广泛代表性的重要操作系统。
② 应用程序:测试人员在测试平台上使用大量的应用软件来做兼容性测试。
③ 测试工具和实用工具:系统监控工具和自动化测试工具等,如 Selenium、JMeter、IBM Function Tester 等。
④ 第三方软件:软件开发过程中,有时会直接购买使用第三方的软件产品或使用许可,如 Oracle 10g、IBM Bea WebLogic 等。
(2) 硬件:所需要的设备数量,以及每台设备的配置要求。
① 计算机、服务器:详细到 CPU、内存、硬盘、显示器、显示卡、声卡等具体配置。
② 输入、输出设备:监视器、打印机、扫描仪等,详细到具体型号或性能指标。
③ 数据备份、存储设备:外接硬盘、光碟刻录机等。
(3)网络设备:应避免在公司的公共网络上进行测试,需要建立独立的测试网络环境。
① 路由器、防火墙设备,包括是否需要电话网关、多媒体网关等。
② 交换机,包括主交换机、边缘交换机等。
③ 无线接入设备。
④ ADSL 接入设备、SSL 连接设备。
⑤ 网卡、网线等其他附属网络设备。
(4) 电源及特殊的工具:电压保护器、不间断电源、示波器、工具箱等。
(5) 其他:办公用品、耗材和易损备件,包括打印纸、白板笔、胶带、墨盒等。
3. 环境实施¶
在进行测试环境配置时,选用合适的测试平台,保证能支撑软件正常运行,以满足测试的需要就可以。测试机上只安装软件运行和测试必需的软件,以免不相关的软件影响测试实施。现在病毒猖獗,应利用有效的正版杀毒软件检测软件环境,保证测试环境中没有病毒。有些情况下,测试实验室配置清单中所需设备的数量是非常巨大的。例如,视频游戏程序的测试,的确需要相当多的设备支持。各种类型的声卡、视频卡、控制手柄等全部罗列在配置清单中,又似乎不太合适,可能会大大超出预算。但如果遗漏某些型号,又往往造成风险,可能会忽视一些实际用户可能碰到的错误。所以,有必要对测试配置清单进行评估,保留主要的和必须购买的配置,有些配置可以通过其他途径获得,如从合作单位或部门借用,从生产厂家或经销商处借来试用等。
经过评估后,可以提交申请,获得批准后开始采购。采购时首先按安装的先后顺序分批购买,当一大堆设备同时运到,而又不能及时安装时,就要另外出一笔费用找临时仓库。其次,按测试进度的需要分批购买,保证主要测试设备的经费,避免因配置变化或市场变化造成资金问题。最后考虑批量订货,使一些小的配置能以赠品的方式配置。
通常做法是尽可能由测试人员自己完成集成和配置测试设备,只有测试人员最清楚具体的配置方法和要求。测试人员无法独立完成的,可以由其他专业人员协助完成。一般测试环境部署的实施过程可以简单归纳为下列 6 个步骤。
12.5 自动部署测试环境¶
在项目进行过程中,虽然支撑应用系统的软件平台不需要替换,但应用软件包需要经常更新,多数情况下是每天更新一次。如果是手工更新,不仅更新过程比较慢,容易出错。而且当部署新版本时,测试人员不得不等待而不能进行测试工作,这会严重影响测试的效率。所以,应该考虑进行自动化部署,而且可以在晚上进行,在员工上班之前完成。这样,测试人员一上班,就能执行测试任务,提高测试效率。
自动化部署,也是通过脚本实现,不同的支撑平台,采用的方式有一定的区别。但在开发自动部署脚本的时候,需要建立标准化的各种环境部署顺序。即使环境会有所变化,可设法通过一些环境参数,或在脚本中增加一些判断条件来实现。最理想的部署方式是做到一键式自动部署,也就可以通过后台定时、事件触发等方式启动自动化部署脚本的执行。自动化部署还需要考虑当前版本 (Build Version) 部署失败时,能够恢复到上一个版本的状态。因为我们希望部署是完全自动化执行,所以部署过程一定要稳定,自动化部署的脚本具有很好的容错性,充分考虑到各种意外情况,回避各种问题的出现,保证自动部署的成功。
IBM 定义了自动化部署框架,如图 12-5 所示,整个部署过程基于工作流来实现,通过调用自动化的脚本来完成具体的操作。工作流引擎和数据模型是这个框架的核心。
IBM Tivoli Provisioning Manager 则是基于上述框架,提供了完整的解决方案,可自动完成原来需要手工完成的服务器、操作系统、中间件、应用程序、存储器和网络设备的安装和配置任务。
对操作系统的自动化安装,需要一种简便、有效的方式,减少停机时间,支持多台服务器并发操作。实际上,不同的操作系统都有相应的网络远程安装的管理工具,例如:
(1) Linux: Red Nat 开创了 kickstart 技术实现操作系统部署功能。

而对应用系统,都需要自己来开发相应的部署脚本,例如基于 Linux 系统的,可以采用 Shell 脚本直接来实现。如果为了支持分布式、跨平台的环境部署,需要借助一些自动化测试框架来实现。例如,通过 STAF 和 STAX 提供的服务调用和工作流等机制,并和 CVS、CruiseControl、Ant 等集成起来,形成一个完整的自动化部署解决方案。
例如,从 CVS 检出代码,通过控制器送到编译机器上构造软件包,同时可以从 FTP 服务器获得自动部署配置的脚本分发到测试机上,然后获得已编译好的软件包,完成部署并进行基本的验证,如图 12-6 所示。

STAX 脚本示例¶
【示例一】 FTP 命令提供参数 - s 来指定一个 FTP 脚本文件 (这里以 ftpSample.conf 为例),它描述待执行的 FTP 命令。然后,通过 STAX 调用 FTP 命令实现从 FTP 服务器自动下载所需要的文件,如部署脚本文件 (如 deploy.bat 或 runtest.sh)。
<process>
<location>'local'</location>
<command>'ftp'</command>
<parms>'-s; ftpSample.conf'</parms>
<workdir>'C; /STAF'</workdir>
</process>
【示例二】将更新包分发到部署服务器 (deployServer) 和测试服务器 (testServer) 上。
<script>serverList = ['deployServer', 'testServer'] </script>
<iterate var = "server" in = "serverList">
<testcase name = "'buildCopy'">
<if expr = "server != 'deployServer'">
<stafcmd>
<location>'buildserver</location>
<service>'fs'<service>
<request>'copy DIRECTORY /root/build/result TODIRECTORY /root/build/result TOMACHINE %s RECURSE KEEPEMPTYDIRECTORIES' % server </request>
</stafcmd>
<else>
<stafcmd>
<location>'buildserver</location>
<service>'fs'<service>
<request>'copy DIRECTORY /root/build/result TODIRECTORY C; /build/result TOMACHINE %s RECURSE KEEPEMPTYDIRECTORIES' % server </request>
</stafcmd>
</else>
</if>
</testcase>
</iterate>
【示例三】分别在 Windows 和 Linux 系统上完成应用系统的部署。Windows 中使用重定向输出日志,即 > deploy.log,而在 Linux 中使用 stdout 来重定向输出日志。
<sequence>
<stafcmd>
<location>'deployServer'</location>
<service>'process'</service>
<request>'start command "C; /build/deploy.bat> deploy.log" username "Administrator" password "password" workdir "C; /build" wait'</request>
</stafcmd>
<stafcmd>
<location>'testServer'</location>
<service>'process'</service>
<request>'start command "/root/build/runtest.sh" username "root" password "password" workdir "/root/build" wait stdout /root/build/runtest.log'</request>
</stafcmd>
</sequence>
12.6 测试环境的维护和管理¶
测试环境的维护和管理,不仅包括硬件设备的保养维修和软件版本的及时升级,更重要的是维护测试环境的正确性,定期检查软件和网络的配置,做好记录和跟踪,确保测试环境始终符合测试的实际要求。为了做好测试环境的维护和管理,首先要建立测试环境的管理流程和规章制度,严格的管理流程能够保证和改善测试环境的正确性、稳定性。图 12-7 描述了一个通用的实验室设备管理流程,包括权限设置、建立设备采购 / 变更控制等方面的流程。例如某家测试公司,它的大多数客户都有自己的独立实验室,他们要求所有人都必须用智能卡才能进入实验室。每个测试人员都需要配有一张智能卡,并通过智能卡系统记录持卡人进入测试实验室的情况。只有那些真正为客户项目工作的员工才能持有智能卡,进入客户实验室。

为了更好地做好测试环境的维护和管理,通常还会设置专门的实验室管理员,明确其责任,并建立好相应的文档及其模板,为关键的硬件设备和软件环境建立备份。
1. 测试环境管理员的职责¶
2. 测试环境管理所需的文档¶
3. 测试环境访问权限的管理¶
4. 测试环境的变更管理¶
对测试环境的变更应当形成一个标准的流程,并保证每次变更都是可追溯的和可控的。
5. 测试环境的备份和恢复¶
对于测试人员来说,测试环境必须是可恢复的,否则将导致原有的测试用例无法执行,或者无法重现发现的缺陷。因此,应当在测试环境 (特别是数据库环境) 发生重大变动时进行完整的备份,例如,使用 Ghost 对硬盘或某个分区进行镜像备份,以便在需要时将系统重新恢复到安全可用的状态。
另外,每次发布新的被测应用版本时,应当做好当前版本的数据库备份,为将来做版本兼容性测试 (版本升级测试) 时做好准备。例如,对于一些提供软件服务的应用系统,当其版本升级到一个新版本时,要验证在原来版本中产生的数据在新版本时依然有效,而新版本的数据库结构已发生了一些变化,这些数据不能在新版本中产生,否则数据是不真实的。在进行兼容性测试时,最好用已备份的数据库来恢复到原来的数据库后,再进行版本升级,然后进行测试。这种兼容性测试可能会进行多次,而且可能会在下一个版本兼容性测试中还要用到。这时,数据库的备份不仅保证了数据的真实性、完整性,还大大减少了重新准备数据的时间,提高了测试的效率。
小结¶
本章从测试环境对测试的影响方面论述了测试环境的重要性,介绍了测试环境的各项要素,包括硬件、网络环境、软件、数据准备等,特别介绍了虚拟机的应用及其相关工具。在此基础上,介绍了如何建立规范的测试实验室。
本章还针对测试项目的实际需求,介绍了如何建立项目的测试环境,详细描述了测试环境搭建的过程。而更值得关注的内容是如何实施测试环境的自动部署,以及如何做好测试环境的维护和管理。