软件测试之迁移测试
客户为什么会有迁移的需求?
一般而言,迁移的过程势必对当前应用系统运行产生一定的影响,从而会给客户的营业额带来一定的损失,同时客户还得投入大量的人力物力进行迁移的可行性研究、测试及实施等工作。
一般而言,迁移的目的是为了获取新版本更加完善的功能,以及最新的业务模式。
当然,还有其他一些原因促使客户去迁移应用,例如,随着客户业务的不断增长,对系统的性能要求越来越高。
总之,企业级应用迁移的最终目的在于保证企业级应用在激烈的市场竞争中始终保持青春活力,立于不败之地。
什么是迁移和迁移测试?
简单来讲,产品迁移是将旧版本的应用系统环境所有资产信息完整地迁移到新版本的环境之上,同时要保证旧版本的功能在新的平台上正常运行,并且新版本的新增功能也能正常工作。
迁移测试是对迁移过程及其迁移结果进行验证,从而保证过程和结果的正确性。迁移过程中除了会应用到自身特有的测试方法以外,还会借助于功能测试、性能测试等来保证完成迁移的应用系统环境的正确性和可靠性。
如何做迁移测试?
要想深入了解迁移测试,首先需要理解企业级应用的架构,然后是迁移的内容,最后才能有的放矢地制定迁移测试的计划。
什么是企业级应用架构?
一般来说,企业级应用是为商业组织或大型企业提供特定解决方案的一套完整系统,该系统包含了支持应用程序运行的各个组成部分:
底层的操作系统:Windows, Solaris, pLinux
后台数据库服务器: DB2, Oracle
面向用户的Web服务器:IIS, SunONE
运行应用程序的中间件:Tomcat
部署在中间件之上的企业级应用
企业级应用架构的分类
对于一个企业级应用程序,根据企业业务实际需求的不同,可以制定不同的解决方案。而企业级应用可以从下面各种不同的角度来划分:
按不同的拓扑结构分:单节点,双节点,多节点
按不同的服务器集群环境分:垂直集群,水平集群,混合集群
按应用产品发布的版本分:企业版,专业版,简装版
按企业应用运行平台分:生产环境,开发环境
迁移包括哪些内容?
基础软件的升级和新版本应用产品的安装:基础软件是指支持企业应用运行的底层软件。
数据库的迁移:不是指数据库管理系统本身的升级,而是将旧版本的数据库中的数据结构及数据迁移到新版本的应用系统之上,使得迁移之后的数据结构和数据符合新版本应用系统后台数据库的规范和要求。
应用程序的迁移:将旧版本的应用程序迁移到新版本,迁移之后保证旧版本功能同样适用,同时将新版本的功能也能正常工作。
迁移的顺序
一般而言,企业级应用迁移的第一步是基础软件的升级和新版本应用产品的安装,第二步是进行数据库迁移,第三步完成应用迁移。
迁移过程中客户关注的问题
一方面,客户关注迁移步骤的简单性、易用性及迁移流程的高效性。因而在整个迁移过程中,人工干预越少越好,尽可能实现整个迁移过程的自动化。
另一方面,客户关注迁移前后应用系统的宕机时间。
宕机时间是企业级应用作移植时第一要考虑的要素。而整个迁移过程中的宕机时间一般受数据库的迁移时间影响比较大。
迁移测试的分类
在迁移测试中,部分测试验证工作是在迁移环境上进行的,还有一部分比较验证需要借助于不同版本的环境来完成。根据涉及的验证环境的不同,可分为垂直迁移测试方法和水平迁移测试方法。
垂直迁移测试
垂直迁移测试时迁移测试的基本方法,所有的验证都是在完成从旧版本到新版本迁移的系统环境上进行的。按照迁移的先后顺序,首先是软件升级测试、数据库迁移测试、应用迁移测试,其次是在迁移之后的环境上进行子系统的迁移测试、集成系统迁移测试、客户定制化迁移测试、功能测试、性能回归测试、迁移扩展性测试。
作为一个完整的垂直迁移测试的框架,垂直迁移测试需要考虑从底层基础软件到上层应用的每一个功能点。
基础改造——软件升级测试:软件升级测试是保证支持应用运行的软件都被正确地安装或迁移。
客户数据不能丢——数据库迁移测试:目的在于保证旧的数据库数据结构,数据库中加密的及没有加密的客户数据都被正确地迁移过来。内容:数据库数据结构和数据的迁移。
功能点不能少——应用程序迁移测试:验证应用程序迁移流程和结果的正确性。内容:确保应用的配置信息被正确地迁移,确保新版本应用的功能模块被自动地加载到迁移之后的应用系统中,确保应用服务器旧版本的配置信息被正确迁移到新的应用系统中,确保Web服务器旧版本的配置信息被正确迁移到新的应用系统中。
子系统迁移测试:验证这些子模块的迁移步骤和迁移程序的正确性。
集成系统迁移测试:验证应用软件本身和其他应用作为一个集成系统在完成迁移后,能正常工作。
客户定制化迁移测试:测试客户在旧版本环境上根据自身业务要求的需要进行定制的程序,是否被正确地迁移到新系统的版本。
功能测试:验证迁移之后的应用系统功能的完整性和正确性。一种是贯穿整个迁移过程的管道数据功能测试,另一种是在完成了迁移的应用系统上的功能回归测试。
性能测试:比较迁移之后的应用系统的性能测试结果和旧版本的性能测试结果,期望结果是没有性能的下降,性能指标对于客户而言是可以接受的。
迁移扩展性测试:针对大数据量和大型应用的测试,保证应用和数据迁移能够在可以接受的时间内正确完成。
水平迁移测试与垂直迁移测试的区别
垂直迁移测试和水平迁移测试不是相互独立的,水平迁移测试主要运用于垂直迁移框架中的数据库迁移测试和应用迁移测试。水平迁移测试与垂直迁移测试的主要区别在于前者需要涉及多个应用系统环境的比较。水平迁移测试是垂直迁移测试的必要补充,垂直迁移测试主要对整个应用的一个从底向上的完备的考量,而水平迁移测试主要是考虑数据库和应用程序迁移前后的比较。
水平迁移测试
新版本数据结构验证:验证数据结构首先需要将数据结构按照类型以一定的格式倒入一个文件中以进行比较验证,如XML文件。
商业数据验证:包括所有商业事务处理相关的数据。
应用配置信息验证:保证迁移后应用配置文件的正确性和一致性。
水平迁移测试的各个部分相对独立,对于数据库和应用可以分开进行验证,但它们又都是垂直迁移测试流程中不可或缺的一环。
垂直迁移测试与水平迁移测试的比较
垂直迁移测试是水平迁移测试的基础,只有完成了垂直迁移测试中的数据库迁移或应用程序迁移才能进行水平迁移测试。
水平迁移测试能在早期发现问题,无须等待整个迁移流程结束后再开始。
水平迁移测试更多地关注数据的准确性,垂直迁移测试更多地关注系统的整体功能、性能等的迁移是否成功。
水平迁移测试相对复杂,需要比较不同版本数据库之间数据、配置文件等内容。垂直迁移测试只需要一套迁移环境。
其他迁移测试内容
兼容测试:目的在于确保以前的地版本上部署的经客户定制过的应用所依赖的一些因素能够正常地提供服务,而使客户的定制应用不受影响,从而客户无须重新构建或部署他们的应用。影响兼容性因素主要有:开发框架升级,API的不兼容性,行为的变化。
迁移文档测试:目的在于保证迁移文档的质量,确保客户能够遵循正确的迁移文档完成客户应用系统的迁移工作。
真实客户环境测试:迁移测试重要的验证方式,对于保证迁移测试的正确性,特别是对于性能方面的验证是非常必要的。
迁移安全性测试:在迁移环境上进行文件权限验证及敏感数据检查。
选择迁移测试平台
确定迁移路径和平台支持矩阵表,合并罗列所有测试配置组合,识别优先级进行筛选。
选择测试用例组
基本测试用例组包括迁移测试的主要流程的测试用例:软件升级测试、数据库迁移测试、应用程序迁移测试、子系统迁移测试、客户定制化迁移测试、功能验证测试。
扩展测试用例组:集成系统测试
高级测试用例组:迁移扩展测试、真实客户数据应用测试、迁移环境上的功能回归测试和性能回归测试。
基本测试用例组的测试在所有的配置组合上都得测试,但在每个测试阶段,可以涵盖不同的测试用例。
扩展测试用例组主要涵盖和应用相关的集成软件的迁移,根据实际需求选择测试或者不测。
高级测试用例组测试也是根据具体的测试要求单独计划,只需要选择部分平台组合进行测试。
总结
迁移是从旧版本的系统环境到最新版本的系统迁移,迁移场景如下:
在测试环境上进行迁移和迁移测试:
- 完成服务器升级测试
- 安装新版本的应用系统并部署一个测试用的应用环境:一方面通过启用测试应用系统,验证应用的一些简单功能和业务流程来保证新版本的应用没有问题,另一方面,测试应用系统创建的数据库和应用可以作为水平迁移测试的比较对象,是水平迁移测试验证的基准。
- 迁移数据库并完成数据库迁移测试
- 迁移应用并完成应用迁移测试
在开发环境上进行迁移和迁移测试:
- 客户定制化迁移测试
- 将开发环境上迁移之后的客户定制化程序部署到完成了迁移的测试环境上
在迁移之后测试环境上进行功能测试和性能测试
在确保上一步功能测试和性能测试都正确的前提下,开始进行生产环境的迁移测试
为了将客户应用宕机的影响降到最低,生产环境的迁移分为以下几步:
- 在保持旧版本生产环境运行的情况下,根据客户的资源状况选择软件升级方案
- 安装新版本的应用产品
- 迁移应用
- 将完成迁移的客户定制化程序部署到新的生产环境中
- 停止旧版本的应用系统的对外服务,完成生产环境数据库的迁移
- 启用新版本的应用
- 在迁移之后的应用系统上进行功能测试和性能测试