可移植性测试

可移植性测试,可移植性测试通常和软件产品移植到某个特定的运行环境中的难易程度相关,包括第1次建立或从现有环境上移植到另一个环境上。

系统的可移植性并不是在系统开发的后期才考虑的,在整个软件产品开发生命周期都必须要考虑,尤其是在早期的需求分析和设计阶段。在需求分析阶段,最好能够明确地定义可移植性需求。例如,虽然当前软件版本仅仅支持运行在Windows平台上,但是需要考虑将来移植到Linux上的需求。

在明确地定义可移植性需求之后,将进入设计阶段。一个大型的软件产品可能包括多个不同级别的设计。设计阶段重点关注外部接口,如文件访问接口、内存管理和用户界面等,这些接口是最容易发生可移植性问题的部分。业界有很多针对这些接口的标准,如果软件产品能够符合这些标准,将会大大提高可移植性。如针对字符集的ASCII及操作系统接口的POSIX等。即使这样,在不同的运行环境中外部接口仍然可能不同。最好隔离这些外部接口和软件产品的内部功能,并降低接口部分和软件其他部分的耦合性,这样可以为不同运行环境单独设计对应的接口部分。

不同CPU架构的字节顺序
字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端(little-endian)和大端(big-endian)两种。小端字节序指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处;大端字节序的高字节数据存放在低地址处,低字节数据存放在高地址处。不同的CPU结构的字节顺序可能不同,基于Intel架构的CPU是小端字节序;Sparc和PowerPC则是大端字节序。

可移植性测试包括可安装性、兼容性、适应性和可替换性测试。

(1)可安装性测试
可安装性测试是针对用于在目标环境安装软件的安装程序所执行的测试,可以包括安装操作系统的软件或在用户PC上安装软件产品的安装向导软件。典型的可安装性测试应实现下列目标。

  • 使用安装向导或遵照安装手册的步骤(包括执行必需的安装脚本)验证是否可以成功地安装软件产品,其中包括选择相应的选项针对不同的软硬件配置,以及不同程度地安装(如完全安装或部分安装)。
  • 测试安装软件是否能够正确处理安装过程中所出现的失败(如无法安装某些DLL),并且不至于使系统处于某个不确定的状态(如软件只安装了一部分或造成错误的系统配置)。
  • 测试部分(不完全的)安装/卸载能否完成。
  • 测试安装向导是否可以成功地识别无效的硬件平台或操作系统配置。
  • 衡量是否能够在一定时间内或在一定步骤内完成整个安装过程。
  • 验证是否可以成功地进行软件降级或卸载。

可安装性测试在检查是否存在安装方面的问题(如配置错误和功能缺失)后才执行功能测试。

(2)兼容性测试
如果不存在相互依赖关系的计算机系统可以在同一环境(如同一个硬件平台)中运行,而不影响彼此的行为(如资源冲突),则称为“兼容”。例如,当新的或升级之后的软件被大量装入已经安装应用程序的环境(如服务器)时,需要执行兼容性测试。

如果系统中没有安装其他应用程序,则可能无法检测软件产品的兼容性问题;如果将软件产品部署到另一个安装了其他应用程序的环境,则可能会出现兼容性的问题。

典型的兼容性测试的目标如下。

  • 评估在运行环境中加载其他应用程序所导致的功能上的负面影响(如当服务器上运行多个应用程序时的资源分配冲突)。
  • 评估因修复或升级操作系统给软件产品带来的影响。

(3)适应性测试
适应性测试即测试一个软件产品是否能够在所有特定的目标环境(硬件、软件、中间件和操作系统等)中正确地运行,测试时需要明确指定的目标环境并完成配置。针对这些运行环境及环境中存在的各种组件可选择一组功能测试用例完成测试。

适应性还涉及通过完成一个预定过程将软件产品移植到多种特定运行环境的能力,测试可以评估该过程。适应性测试还可以与可安装性测试共同进行,然后辅以功能测试,以检验软件在其他运行环境中是否会出现问题。

(4)可替换性测试
可替换性关注的是软件产品中的组件能够被替换的能力,尤其对于那些以商业现货软件(COTS)为特定组件的软件产品。

在集成过程中会有一些可替换的组件集成后构成一个完整的系统,因而可替换性测试可以与功能集成测试并行进行。可以通过技术评审和检查评估软件的可替换性,关键点在于可被替换组件的接口是否定义得非常清楚。

酷客教程相关文章:

赞(0)

评论 抢沙发

评论前必须登录!