UML软件工程组织

 

 

软件缺少兼容性测试 筑堤千里功亏一篑

2008-10-30 作者:潘少红 来源:IT168

 

时间过得很快,这周一直在忙于项目的测试。在周日终于能放松一下心情,我在家看了一个久违的电视节目,电视采访了一个世界性金融投资人,问他对总裁有什么要求。他说,要求很简单,就是能够和任何人合作。其实任何事物和人都一样,除了自身的完善还需要提高和外界的兼容性,也就是“我去适应环境,而不是让环境适应我”。

这让我想起了软件测试中的兼容性测试也是这样要求的。无论一个软件的功能多么强大或者高效,如果和目前常见的软件有冲突,或者和操作系统有冲突,那么它还是没有任何价值的,只会被市场所淘汰。

软件兼容性与软件兼容性测试

(1)什么是软件兼容性

很多东西都可以和平共处,巧克力和花生就是一个很好的例子,如果你喜欢吃花生巧克力糖的话。但是,我们也知道水和油就不相容。在我们用心创建一个复杂的大型应用软件时,开发人员必须要非常努力使所开发的软件能在预期的各种环境中运行,避免不兼容的情况出现。但随着软件开发的复杂性,不同的平台,不同的应用软件的多样化,还有不同软件的实现方法的多样化,不可预见的情况越来越多,避免软件不兼容的情况也变得越来越困难。

一般来说,兼容性指能同时容纳多个方面,例如你能和朋友们友好相处,那是相互能兼容,如果相互间相处非常默契,就是兼容性非常好。同样道理,在计算机术语上兼容是指几个硬件之间、几个软件之间或是软硬件之间的相互配合程度。相对于软件来说,是指某个软件能稳定地工作在某操作系统/平台之中,就说这个软件对这个操作系统/平台是兼容的,再就是在多任务操作系统中,几个同时运行的软件之间如果能稳定地工作,就说这几个软件之间的兼容性好,否则就是兼容性不好。

另一种情况是软件共享的数据,几个软件之间无需复杂的转换,即能方便地共享相互间的数据,也称为兼容。因此,软件兼容性是衡量软件好坏的一个重要指标。从这个意义上看,软件兼容性不良就是软件推广的最大阻碍,例如在微软历史上花费人力财力最多的Vista系统,发布了半年之久依然是叫好不叫座,据说原因之一是软件兼容性最为用户所诟病。

(2)什么是软件兼容性测试

随着软件逐步被推向市场,被更多的用户安装,兼容性问题也日益凸现出来了。理论上任何两个软件之间都有冲突的可能,因此软件的兼容性就成为了衡量软件好坏的一个重要指标。兼容性测试是指测试软件在特定的硬件产台上、不同的应用软件之间、不同的操作系统平台上、不同的网络等环境中是否能很好地运行的测试。简单的说,兼容性测试是指测试某新开发的软件在某一特定环境下与各种软件的协调性,软件之间能否很好的运作。例如,会不会有相互不良的影响,还有软件和硬件之间能否发挥很好的效率工作,会不会影响或导致系统的崩溃等。

(3)配置测试和兼容性测试的区别

在我们进行软件测试时,经常有两个很容易混淆的两个概念,这里特别列出来分析一下。配置测试是指验证在不同的硬件配置和软件配置下,应用程序能否正常工作。配置测试的目的是保证软件在其相关的硬件上能够正常运行,而兼容性测试主要是测试软件能否与不同的软件正确协作。

配置测试的核心内容是使用各种硬件来测试软件的运行情况,一般包括:一是软件在不同的主机平台上的运行情况,例如Dell平台和SUN平台;二是软件在不同的组件上的运行情况;三是不同的外设和不同的接口下的运行情况;最后还有不同的可选项的运行情况,例如某些可选择的不同软硬件和网络环境。

而兼容性测试的核心内容:一是测试软件是否能在不同的操作系统平台上兼容,或测试软件是否能在同一操作系统平台的不同版本上兼容;二是软件本身能否向前或者向后兼容;三是测试软件能否与其它相关的软件兼容;四是数据兼容性测试,主要是指数据能否共享等。所以,配置测试和兼容性测试对软件开发都比较重要,但它们测试和关注的核心内容是有区别和不同的。

软件兼容性测试的主要内容

(1)操作系统/平台兼容性测试

市场上有很多不同的操作系统类型,最常见的有Windows、Unix、Macintosh、Linux等。应用软件的最终用户究竟使用哪一种操作系统,取决于用户系统的配置。这样,就可能会发生兼容性问题,同一个软件可能在某些操作系统下能正常运行,但在另外的操作系统下可能会运行失败。因此,理想的软件应该具有平台无关性。

当然,有些软件只是针对某一系列的操作系统平台来开发的,不存在跨平台的需求。但同一操作系统也有多个版本,例如Windows系统也有不同的系列版本号,如Windows 2000 /XP/Vista等,他们之间可能也有许多不同的组件属性。因此,有些软件可能需要在不同操作系统平台上重新编译才可运行,有些软件需要重新开发或改动较大才能在不同平台运行。因此,在软件发布之前,需要在各种操作系统下对应用软件进行兼容性测试。

(2)应用软件之间兼容性测试

主要考察两项内容:一是软件运行需要哪些应用软件支持。二是判断与其他常用软件一起使用,是否会造成其他软件运行错误或本身不能正确实现其功能。

(3)不同浏览器之间的兼容性测试

现在好多应用软件都应用B/S结构,它们的客户端都使用浏览器。因此,浏览器是Web客户端最核心的构件,但来自不同厂商的浏览器对Java、JavaScript、 ActiveX、 plug-ins或HTML规格都有不同的支持。例如,ActiveX是Microsoft的产品,是为Internet Explorer而设计的,JavaScript是Netscape的产品,Java是Sun的产品等。另外,框架和层次结构风格在不同的浏览器中也有不同的显示,甚至根本不显示。不同的浏览器对安全性和Java的设置也不一样。所以,测试不同厂商、不同版本的浏览器对某些构件和设置的适应性,也是软件兼容性测试的重点之一。

(4)不同类型的数据库兼容性测试

现在很多软件尤其是ERP、CRM等软件都需要数据库系统的支持,对此类软件应考虑对不同数据库平台的支持能力,如从BD2平台替换到MSSQL平台时,软件是否可直接挂接,或者提供相关的转换工具。还有新旧数据转换的是否存在问题,软件是否提供新旧数据转换的功能。例如,当软件升级后可能会定义新的数据格式或文件格式,这就涉及到对原有格式的支持及更新,原有用户记录在新格式下是否依然可用等。另外,还需要测试转换过程中数据的完整性与正确性。

(5)软硬件配合的兼容性测试

考察软件对运行硬件环境有无特殊说明,有些软件可能在不同的硬件环境中,出现不同的运行结果或是根本就不能执行。

软件兼容性测试规划的几个建议

有过软件兼容性测试经验的人都了解,兼容性测试或许无法做到完全的质量保证,但兼容性测试是必不可少的步骤之一。因此,对软件开发来说,忽视软件兼容性测试,必将会导致用户在使用时给兼容性故障拖死的概率也越高。所以,如何在有限的成本和资源考虑下,针对此软件产品规划出适当的兼容性测试,是所有兼容性测试技术人员关注的重点。

(1)评估软件应用环境,有针对性的制定测试计划

投资和规划一个有效的兼容性测试相信会让不少软件厂商伤透脑筋,要做多少设备投资,要投入多少人力,要测试多少兼容性测试完全会影响到软件产品的最终成本。软件厂商想要专心和投资在研发上,又想要节省成本的做好兼容性测试,只有评估软件应用环境,有针对性的制定兼容性测试计划,才能兼顾成本和产品的兼容性质量质量。

(2)在多种平台/应用环境上测试

自行安装多种平台和模拟应用环境进行测试,但缺点是难以覆盖所有平台。一个软件产品的开发成功,不仅仅是编写完为使用者提供服务功能的程序而已,更重要的是能在用户环境中可靠的运行。因此,软件程序编写工作的完成,其实只是完成了开发任务中的一半,对软件进行模拟用户环境进行兼容性测试其重要性不亚于对程序本身的开发。

(3)考虑进行β测试

大型通用软件在正式发布前,通常都需要执行Alpha和Beta测试,目的是从实际用户的使用角度对软件的功能和性能进行测试,以发现可能只有最终用户才能发现的错误。

α测试(alpha测试)是在测试团队内部进行,测试的方法也较多,黑盒、白盒、压力、应力等等。β测试(beta测试)是指给指定用户公开测试,例如可以有选择地请一些最终用户实际使用,将发现的问题反馈回来再进行修改。在Beta测试中,发放多个拷贝给测试用户并让他们填写测试报告,由用户记下遇到的所有问题,定期向开发者报告,开发者在综合用户的报告后做出修改。

β测试是许多软件测试最后上市前大规模的综合测试的常用方式之一。这种做法可以覆盖多种软硬件平台,虽然非常耗时和费钱,但因为Beta测试的可以测试软件的可支持性和兼容性。所以,Beta测试不失为一种有效的兼容性测试方法。

 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号