对于基于计算机平台的软件,在测试过程中必须考虑软、硬件的兼容性,在设计测试用例的过程中必须考虑数据转换或转移的问题,应该尽力发现其可能带来的错误。不仅是基于计算机平台的软件,对于嵌入式软件也一样,在软件升级时,也需要考虑硬件平台的兼容性。一个软件具有良好的兼容性,不仅可以降低技术支持的成本,还可以减少系统的维护版本,但不至于仅仅因为兼容性的问题而升级系统。
一、兼容性测试概述
兼容性测试是指检查软件在一个特定的硬件、软件、操作系统、网络等环境下是否能够正常地运行,检查软件之间是否能够正确地交互和共享信息,以及检查软件版本之间的兼容性问题。包括硬件之间、软件之间和软硬件之间的兼容性,如图14-1 所示。
兼容性测试更多的是指发现软件在某个环境下不能正常使用。兼容性测试包括两个方面的含义,第一是指待发布的软件在特定的软、硬件平台上是否能正常运行;第二是指待发布的软件对指定平台上的其他软件是否有影响,是否影响其他软件的使用(对于嵌入式的软件则不存在这个问题)。
常见的兼容性测试主要包括:硬件、软件和数据库三个方面。
常用的兼容性策略有向上兼容、向下兼容和交叉兼容三种。
1.1 向上兼容
向上兼容是指该软件不仅可以在当前平台上运行,还可以在未来更高的平台上运行。对于纯软件来说,就是在较低档计算机上编写的程序,可以在同一系列的较高档计算机上运行,或者在某一平台的较低版本环境中编写的程序可以在较高版本环境中运行。例如,在Intel Pentium III 处理器上运行的应用程序,在Intel Pentium 4 处理器上也可以正常运行。对于嵌入式产品来说,假设当前的软件版本为V1.0 版,硬件版本为V1.1 版,那么当硬件版本升级到V1.2 版时,该软件还是可以正常运行。
向上兼容具有非常重要的意义,一些大型软件的开发工作量极大,如这些软件都能做到兼容,则无须在其他机器上重新开发,就可以节省大量的人力和物力。
1.2 向下兼容
向下兼容是指当前开发的软件版本可以在以前已发布的平台上运行,可以正确地处理以前版本的数据。对于纯计算机软件来说,向下兼容的意思是,较高版本的程序能顺利处理较低版本程序的数据。例如Microsoft Office 2007 可以打开Office 2003 的文件,反之却不可以,因此Office 这个软件是向下兼容的。对于嵌入式产品来说,向下兼容则是指当前的版本能够在以前的硬件平台上运行。例如当前产品的软件版本为V2.0,当前的硬件版本为 V2.0,待发布的软件V2.0 可以在V1.0 的硬件上运行,即为向下兼容。但并不是所有软件都必须向下兼容,根据市场的需求而定,主要考虑如果不向下兼容给市场带来的影响。
1.3 交叉兼容
交叉兼容是指可以处理其他厂商的同一类产品的数据。对于纯软件来说,交叉兼容是指验证两个同类但不同厂商的产品可以同时运行在同一台计算机上,也可以运行在通过Internet 连接的不同计算机之间,例如从Web 页面剪切文字,可以粘贴到其他文字处理程序中(如Word)。对于嵌入式产品来说,交叉兼容性是指同一类不同类型的数据可以相互处理,例如厂家A 的心电图机可以正确解释厂家B 的心电图机生成的数据。
二、硬件兼容
硬件平台是软件运行的基础,不管是计算机还是嵌入式产品,都有一个硬件平台来支持。但即使是同一类硬件(如显卡),也有很多不同的生产厂商,所以在软件设计的时候就必须考虑如何兼容这些不同生产厂商的产品。
对于计算机来说,常见的硬件兼容包括:主板、处理器、内存、显卡、显示器。市场上的台式计算机以及笔记本电脑在测试时就必须对不同的硬件配置进行测试,测试不同硬件配置在不同的操作系统下运行的情况,并且必须考虑主要厂商的不同硬件型号。
对于应用软件考虑最多的则是显示器兼容性的测试,因为不同的显示器其支持的最佳分辨率不同,但分辨率会直接影响应用软件的显示情况,所以在测试时就不得不考虑显示器分辨率的影响。当然并不只有显示器才有影响,其他的硬件也有可能对应用软件产生影响,主板、处理器也可能对该软件有影响,特别是对于底层通信的程序,由于它使用硬件中断,所以即使同样的中断方式在不同的主板和处理器上也可能产生不同的影响。
对于嵌入式产品的硬件兼容性来说,大家可能会觉得很纳闷,因为嵌入式产品并不像计算机软件一样需要考虑其他计算机的硬件配置,嵌入式产品的软件与硬件是捆绑在一起销售的,只要兼容当前产品的硬件配置即可。但即便是这样,嵌入式产品也存在兼容性的问题。通常嵌入式产品需要考虑的兼容性主要为元器件和显示屏的兼容性,如平板电脑的LED 触摸屏,供应商在开发产品的时候肯定不希望只能兼容某个厂家的LED 屏,而是希望至少能兼容两家厂家的LED 屏。之所以考虑这个方面的兼容性,通常有两个方面的原因:第一,多供应商可以降低由于供应商倒闭带来的风险;第二,在与供应商谈价格的时候不至于太过被动,当供应商随意提价时,可以及时启用备选方案。