频 道 直 达 - 新闻 - 读书 - 培训 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

借配置之力淌过软件测试的“泥潭”(1)

作者: 沈雪芳 出处:IT168 2008-03-20 14:15    砖    好    评论   进入论坛
阅读提示:配置管理贯穿于项目所有过程中,本文主要从软件测试的角度分析了测试中经常碰到的问题,阐述了软件测试和配置管理之间的密切关系。为了解决测试中存在的配置管理问题,笔者针对测试过程常见问题产生的原因,从配置管理角度给出了相应的解决方案。笔者希望通过本文,能够改变软件测试工作中不需要关注配置管理的错误思想。

软件测试需要进行充分的测试准备,需要科学的、规范的测试过程管理。有效的配置管理对跟踪和提高测试质量和效率起到十分重要的作用。测试过程中的配置管理工作不仅包括搭建满足要求的测试环境,还包括获取正确的测试、发布版本。但是在实际软件测试工作中,配置管理并没有得到相应的重视。

软件测试的“泥潭”
 
可能有读者会觉得奇怪,软件测试就是发现软件中隐藏的缺陷,和配置管理有啥关系呢!但是,不知道大家在实际工作中有没有发现,我们在软件测试工作中碰到的一些问题,实际上就是由于配置管理工作没做好而产生的。
 
在软件测试工作中,我们经常碰到以下三个问题:

◆缺陷只能在测试环境出现,但是在开发环境中无法重现;
◆已经修复的缺陷在测试时又重现;
◆发布程序在内部确认测试中测试通过,但是发布时却发生系统运行失效的情况。

“泥潭”产生的原因
 
不考虑缺陷报告描述不清楚这种情况,究其原因,上述三个问题的产生主要有以下七点原因:
 
1、测试环境配置的复杂性
 
由于不同(版本)的操作系统、不同(版本)的数据库,不同(版本)的网络服务器、应用服务器,再加上不同的系统架构等组合,使得要构建的软件测试环境多种多样、不胜枚举;而且现在随着软件运行环境的多样性、配置各种相关参数的“浩大工程”和测试软件的兼容性等方面的需要,使得构建软件测试环境的工作变得较为复杂和频繁,而软件测试环境的构建是否合理、稳定和具有代表性,将直接影响到测试结果的真实性、可靠性和正确性。在笔者曾经做过的一个项目中,由于测试环境使用了和开发系统不同版本的JDK(测试环境使用JDK 1.5,而开发环境为JDK1.4),导致测试中出现了在开发环境不会出现的缺陷。
 
2、测试产品与开发产品之间的密切关系
 
在一个项目的软件测试过程中,会有大量的“产品”产生,典型的如文档(包括测试计划、测试用例、测试报告、日常管理文档等)、数据、脚本等。软件测试的一个独特的特征,就是他的产品都是基于开发产品(如源代码、文档、安装文件等)产生和变化的。而开发产品都是以“信息”的形式存放在计算机中,因此,较硬件而言,开发产品比较容易被修改和变化。一旦开发产品发生改变,测试产品也需要相应发生改变。如何有效的管理测试产品,维护测试产品与开发产品之间的关系成为测试过程中的一个棘手的问题。
 
3、开发人员在处理新的开发任务时间接修复了缺陷
 
由于缺少工具的支撑,开发人员不能详细的、准确的获取提交测试的缺陷涉及修改的源码,所以在有些项目组中,每次测试时,开发人员将个人开发的所有源码提交给测试人员,由测试人员采用完全覆盖的方式更新测试环境。但是由于开发人员的工作环境仍在进行新变更、新功能或缺陷的处理,而修改新变更、新功能或缺陷的同时,很容易将原来存在的缺陷一并修复。这就可能导致测试环境中存在的缺陷在开发环境中无法重现问题的发生。
 
4、开发人员漏提交待测试的源码
 
假设项目组意识到完全覆盖方式的不合理,要求开发人员只能提交修改缺陷或变更对应的源码供测试。可是由于缺少工具的支撑,开发人员只能手工记录、追踪变更和缺陷对应修改的源码,这种方式一是记录和追踪的工作量大,二是很容易漏提交源码。由于开发人员漏提交源码,就很容易发生测试环境的缺陷在开发环境无法重现或者已经修复的缺陷又重现的情况。
 
5、公共参数/基础数据/配置文件未进行配置管理
 
一些项目组未将公共参数/基础数据/配置文件等全局文件纳入配置管理。由于没有将其纳入配置管理,所以这部分全局文件的变更也同样的未进行变更管理。当这些全局文件发生变更时,很容易出现测试环境、开发环境,甚至包括生产环境配置不一致的情况。一旦出现这种情况,那么即使发布程序在内部确认测试时测试通过,但是部署到生产环境后系统运行失效的情况就在所难免。这实际上是因配置项缺失而带来的问题。
 
很多人可能不认为公共参数或者基础数据应该作为配置项纳入配置管理,实际上这种想法是错误的。假设没有将这些公共参数等信息纳入配置管理,那么试想一下,假设有一天系统意外崩溃,我们拿什么去恢复生产环境?所以说,系统运行支撑的所有内容(包括基础数据、配置文件等)都需要纳入配置库进行配置管理。
 
曾经有这样一个案例:某审批系统的公司组织机构信息是通过数据库进行维护的。项目组在处理某个需求变更时,需要相应修改公司组织机构信息,但是项目组未将组织机构的修改作为一个变更单独提出,测试组也不知道有这个潜在变更的存在。系统测试通过后如期部署上线,但是上线后发生审批流程节点出错的问题。假如项目组将这个组织机构信息作为配置项纳入配置库,它的变更也经过变更管理,那么怎么可能发生这种情况呢?
 
6、上线的源码版本组合为未经测试的版本组合
 
在项目已定义的发布流程中,可能因为一些看似合理的步骤,导致系统部署到生产环境后出现系统运行失效的情况。
 
在图1中,假设F1和文件F2在修改之前的版本都是1,在实现了需求1和缺陷1后,版本均变为版本2,表示为F1(v2),F2(v2)。在测试环境测试时,测试的源码版本均为F1和F2的版本2,但是需求1没有通过测试,最后只部署了缺陷1这个活动对应的源码到生产环境。那么部署到生产系统的版本将是F1(v1)和F2(v2)。F1(v1)是原来生产系统的版本,F2(v2)是包含了缺陷1所对应的版本。但是,和F1(v1)匹配的版本组合应该是F2(v1),和F2(v2)匹配的版本组合应是F1(v2)。这时上线带来的结果是在生产系统上运行的是未经测试的版本组合。这潜在的质量陷阱可能导致发布时系统运行失效的情况。
 
图1:未经测试的版本组合示意图


共3页: 1 [2] [3] 下一页
【内容导航】
专题
测试开发人员参考手册
主流品牌防火墙配置
华为路由器配置
网吧管理软件
Oracle较真SAP-商业管理软件之战一触即发
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看70832次)
·UML类图详解 (查看64231次)
·UML统一建模语言 (查看34958次)
·C#技术开发指南 (查看33510次)
·C++是垃圾语言?! (查看31761次)
·Java编程开发手册 (1196个砖)
·Java基础教程 (429个砖)
·C#技术开发指南 (309个砖)
·.NET开发手册 (240个砖)
·PB开发教程 (223个砖)
·Java编程开发手册 (654个好)
·Java基础教程 (574个好)
·.NET开发手册 (271个好)
·PB开发教程 (212个好)
·Delphi开发技术手册 (190个好)
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。