软件测试


网站首页 | 软件测试论坛 | 软件测试培训 | 软件测试博客 | 软件测试杂志 | 软件测试沙龙 | 软件测试下载 | 软件测试顾问
业界新闻 | 软件测试人才 | 软件测试技术 | 软件测试工具 | 行业软件测试 | 软件测试管理 | 软件质量专栏 | 软件开发专栏
当前位置:首页>>软件测试技术>>其他相关>>正文
软件测试实践之测试环境的规划与管理
文章出处: 作者:jackei 发布时间:2007-03-29

        测试环境是指为了完成软件测试工作所必需的计算机硬件、软件、网络设备、历史数据的总称。毫无疑问,稳定和可控的测试环境,可以使测试人员花费较少的时间就完成测试用例的执行,也无需为测试用例、测试过程的维护花费额外的时间,并且可以保证每一个被提交的缺陷都可以在任何时候被准确的重现。

简单的说,经过良好规划和管理的测试环境,可以尽可能的减少环境的变动对测试工作的不利影响,并可以对测试工作的效率和质量的提高产生积极的作用。

 
一、规划测试环境——让环境为你服务

        对于“金山词霸”这样的软件,大多数测试工作都可以在一台单独的电脑上完成,而对于一套电信系统,为了执行测试用例,你可能会需要搭建一个由多台计算机以及其他网络设备组成,采用集群和负载均衡技术,并且接驳到Internet的计算机网络。

       不同的行业应用,不同的质量目标,都可能会影响到测试环境的规划。但从测试工作自身的要求来看,一条应当遵守的原则就是“尽可能的还原软件在用户那里最终实际运行的环境”——虽然在很多时候这是不现实的。^_^

       通常来说,我们所需要搭建的环境,主要是用于被测应用的系统测试——单元测试和集成测试由开发人员在开发环境中进行,而验收测试则在用户的最终应用环境中进行,因此都可以暂不考虑。

       为了确定测试环境的组成,我们需要明确以下问题:

1.  所需要的计算机的数量,以及对每台计算机的硬件配置要求,包括CPU的速度、内存和硬盘的容量、网卡所支持的速度、打印机的型号等;

2.  部署被测应用的服务器所必需的操作系统、数据库管理系统、中间件、WEB服务器以及其他必需组件的名称、版本,以及所要用到的相关补丁的版本;

3.  用来保存各种测试工作中生成的文档和数据的服务器所必需的操作系统、数据库管理系统、中间件、WEB服务器以及其他必需组件的名称、版本,以及所要用到的相关补丁的版本;

4.  用来执行测试工作的计算机所必需的操作系统、数据库管理系统、中间件、WEB服务器以及其他必需组件的名称、版本,以及所要用到的相关补丁的版本;

5.  是否需要专门的计算机用于被测应用的服务器环境和测试管理服务器的环境的备份;

6.  测试中所需要使用的网络环境。例如,如果测试结果同接入Internet的线路的稳定性有关,那么应该考虑为测试环境租用单独的线路;如果测试结果与局域网内的网络速度有关,那么应该保证计算机的网卡、网线以及用到的集线器、交换机都不会成为瓶颈;

7.  执行测试工作所需要使用的文档编写工具、测试管理系统、性能测试工具、缺陷跟踪管理系统等软件的名称、版本、License数量,以及所要用到的相关补丁的版本。对于性能测试工具,则还应当特别关注所选择的工具是否支持被测应用所使用的协议;

8.  为了执行测试用例,所需要初始化的各项数据,例如登陆被测应用所需的用户名和访问权限,或其他基础资料、业务资料;对于性能测试,还应当特别考虑执行测试场景前应当满足的历史数据量。当然,还有另外一个非常关键的问题:在测试过程中受到影响的数据如何恢复?

        明确了上面的问题后,明确哪些条件是可以满足的,哪些是需要其他部门协助调配、采购或者支援的。建议在搭建测试环境之前,把上面的问题做成一张CheckList,并为每一项指定一个责任人,完成一项就填写一项,最终形成的文档则作为测试环境的配置说明文档使用。当然,如果时间或其他条件允许,应当做好应急预案,尽量保证在环境失效时不会对正常工作产生太大的影响。

 
二、管理测试环境——把变化掌握在手中

         测试环境搭建好以后不太可能永远不发生变化,至少被测应用的每次版本发布都会对测试环境产生或多或少的影响。而应对变化之道,不是禁止变化,而是“把变化掌握在手中”。下面的这些建议可以帮助你尽可能摆脱环境变化所带来的不利影响。

1.   设置专门的测试环境管理员角色

      每个测试项目或测试小组都应当配备一名专门的测试环境管理员,其职责包括:

      测试环境的搭建。包括操作系统、数据库、中间件、WEB服务器等必须软件的安装,配置,并做好各项安装、配置手册的编写;

      记录组成测试环境的各台机器的硬件配置、IP地址、端口配置、机器的具体用途,以及当前网络环境的情况;

      完成被测应用的部署,并做好发布文档的编写;

      测试环境各项变更的执行及记录;

      测试环境的备份及恢复;

      操作系统、数据库、中间件、WEB服务器以及被测应用中所需的各用户名、密码以及权限的管理;

      当测试组内多名成员需要占用服务器并且相互之间存在冲突时(例如在执行性能测试时,在同一时刻应当只有一个场景在运行),负责对服务器时间进行分配和管理。

2.   明确测试环境管理所需的各种文档

      一般来说,下面的几个文档是必需的,当然你也可以根据需要增加新的文档。

      组成测试环境的各台计算机上各项软件的安装配置手册,记录各项软件的名称、版本、安装过程、相关参数的配置方法等,并记录好历次软件环境的变更情况;

      组成测试环境的各台机器的硬件环境文档,记录各台机器的硬件配置(CPU/内存/硬盘/网卡)、IP地址、具体用途以及历次的变更情况;

      被测应用的发布手册,记录被测应用的发布/安装方法,包括数据库表的创建、数据的导入、应用层的安装等。另外,还需要记录历次被测应用的发布情况,对版本差异进行描述;

      测试环境的备份和恢复方法手册,并记录每次备份的时间、备份人、备份原因(与上次备份相比发生的变化)以及所形成的备份文件的文件名和获取方式;

      用户权限管理文档,记录访问操作系统、数据库、中间件、WEB服务器以及被测应用时所需的各种用户名、密码以及各用户的权限,并对每次变更进行记录。

3.   测试环境访问权限的管理

       应当为每个访问测试环境的测试人员和开发人员设置单独的用户名,并根据不同的工作需要设置不同的访问权限,以避免误操作对测试环境产生不利的影响。下面的要求可以作为建立“测试环境访问权限管理规范”的基础。

      访问操作系统、数据库、中间件、WEB服务器以及被测应用等所需的各种用户名、密码、权限,由测试环境管理员统一管理;

      测试环境管理员拥有全部的权限;

      除对被测应用的访问权限外,一般不授予开发人员对测试环境其他部分的访问权限。如的确有必要(例如查看系统日志),则只授予只读权限;

      除测试环境管理员外,其他测试组成员不授予删除权限;

     用户及权限的各项维护、变更,需要记录到相应的“用户权限管理文档”中。

4.  测试环境的变更管理

     对测试环境的变更应当形成一个标准的流程,并保证每次变更都是可追溯的和可控的。下面的几项要点并不是一个完整的流程,但是可以帮助你实现这个目标。

     测试环境的变更申请由开发人员或测试人员提出书面申请,由测试环境管理员负责执行。测试环境管理员不应接受非正式的变更申请(例如口头申请);

     对测试环境的任何变更均应记入相应的文档;

     同每次变更相关的变更申请文档、软件、脚本等均应保留原始备份,作为配置项进行管理;

     对于被测应用的发布,开发人员应将整个系统(包括数据库、应用层、客户端等)打包为可直接发布的格式,由测试环境管理员负责实施。测试环境管理员不接受不完整的版本发布申请;

     对测试环境做出的变更,应该可以通过一个明确的方法返回到之前的状态。

5.  测试环境的备份和恢复

     对于测试人员来说,测试环境必须是可恢复的,否则将导致原有的测试用例无法执行,或者发现的缺陷无法重现,最终使测试人员已经完成的工作失去价值。因此,应当在测试环境(特别是软件环境)发生重大变动(例如安装操作系统、中间件或数据库,为操作系统、中间件或数据库打补丁等对系统产生重大影响并难以通过卸载恢复)时进行完整的备份,例如使用Ghost对硬盘或某个分区进行镜像备份。并由测试环境管理员在相应的“备份记录”文档中记录每次备份的时间、备份人以及备份原因(与上次备份相比发生的变化),以便于在需要时将系统重新恢复到安全可用的状态。

     另外,每次发布新的被测应用版本时,应当做好当前版本的数据库备份。而在执行测试用例或性能测试场景之前,也应当做好数据备份或准备数据恢复方案,例如通过运行SQL脚本来将数据恢复到测试执行之前的状态,以便于重复的使用原有的数据,减少因数据准备和维护而占用的工作量,并保证测试用例的有效性和缺陷记录的可重现。


站内搜索
相关文章
◎给想从事测试项目管理的朋友一点告诫
◎应聘时向主考官提出的10个漂亮问题
◎华为软件外包测试流程
◎软件测试谈(二)
◎软件测试谈(一)
◎如何成为一名优秀的软件质量保证工程师
◎也谈测试人员的能力
◎测试方法的辩证统一(之四)
◎测试方法的辩证统一(之三)
◎测试方法的辩证统一(之二)
◎测试方法的辩证统一(之一)
◎对软件测试人员工资的一点看法!
◎SaaS模式中的质量管理
◎测试人员应对开发人员的几个要点
◎我要告诉测试新手的
◎软件测试的革命三
◎软件测试的革命二
◎软件测试的革命一
◎TCL/EXPECT自动化测试脚本实例六 --- SNMP community长度测试
◎TCL/EXPECT自动化测试脚本实例五 --- 由文件中读取一行
◎TCL/EXPECT自动化测试脚本实例四 --- 批命令执行
◎TCL/EXPECT自动化测试脚本实例三 --- 全局变量
◎TCL/EXPECT自动化测试脚本实例二 --- 主程序
◎TCL/EXPECT自动化测试脚本实例一 --- telnet到目标机器
◎不太适合做测试的几种人
◎软件测试常见问题种种(一)
◎在面试中看清自己
◎追求代码质量: 通过测试分类实现敏捷构建三
◎追求代码质量: 通过测试分类实现敏捷构建二
◎追求代码质量: 通过测试分类实现敏捷构建一
◎解析测试工程师职业发展瓶颈三
◎解析测试工程师职业发展瓶颈二
◎解析测试工程师职业发展瓶颈一
◎试点项目的特点及处理方式
◎软件评测师考试经验分享
◎如何评价测试人员的工作绩效?
◎测试经理的能力要求
◎管理一个测试组织涉及到的相关概念
◎各种类型的软件的测试应该是相通的
◎MP3芯片方案
◎accessibility test的拓宽思维
◎测试人员如何获得高薪?
◎从企业问题来了解软件测试人员的作用
◎关于测试工作考核
◎测试就是不断的总结与创新
◎测试员的职责
◎从十大经典故事中学管理
◎优秀测试人员所具备的素质
◎一位软件测试工程师的工作总结
◎测试工作的未来
热门文章
◎软件测试工程师面试问题选登
◎一个初级测试工程师的工作总结
◎软件测试常用术语表
◎测试人员面试三步曲
◎DOS命令大全
◎什么样的测试人员是好的测试人员
◎软件测试基本方法
◎软件测试工程师面试题
◎好的测试工程师应具备的素质
◎软件测试入门书籍(2)
◎面试官最爱问的问题背后真相
◎我在软件公司成长的三年
◎应届毕业生少走弯路的十条忠告
◎有关软件测试的术语定义集锦
◎微软的软件测试方法(一)
◎软件测试步骤
◎全景记录:软件测试工程师的一天
◎我的测试经历(1)
◎漫谈软件测试工程师的角色定位
◎谈谈对测试职业的看法
◎测试需要掌握什么
◎软件测试员自身素质培养
◎测试小技巧集锦之一黑盒测试
◎近10年最强的50本计算机图书,您读过几本?
◎软件测试人员职业发展助手
◎测试要点总结
◎什么是ERP,通俗版解释
◎如何制定成功的测试计划
◎测试的主要评测方法(1)
◎软件产品测试标准
◎测试经验交流
◎微软的软件测试方法(二)
◎编写优秀Bug报告的艺术
◎软件测试及其支持工具
◎从程序员到测试工程师
◎软件测试应遵循的八条原则
◎个人职业生涯规划发展
◎你适合做测试吗?
◎网管和黑客都必须知道的命令
◎测试版本大全
◎浮躁的国内测试界—2006年测试人员招聘感悟
◎测试人员的挑战
◎我的测试经历(2)
◎Alpha和Beta测试简介
◎QA活动的理解与实施
◎想编写出优秀技术文档,先学学这四招
◎网络最经典命令行
◎软件测试的误区
◎软件测试的心理学问题
◎我的测试经历(3)

Google提供的广告