漫话迁移测试

这是第一次在项目中遇到迁移测试,虽然时间不长,但是有很多启发,故而整理了这篇文章。文章中提及了许多迁移测试相关的理论,实践部分涉及的比较少。

什么是迁移?

迁移(migration)将旧版环境中的所有资源迁移到新版本的环境中,保证旧版本的功能在新版本的环境中能正常运行,新增功能能够正确部署到新环境中。

迁移测试(migration testing)主要对迁移过程和迁移结果进行验证,保证过程和结果的正确性。

为什么要做迁移?

企业级应用迁移是为了获得更加晚上的功能、更好的性能和用户体验。

企业级应用是为商业组织或大型企业提供特定解决方案的一套完整的系统。该系统包含了支持程序运行的所有组件:操作系统、后台数据库、web服务器、中间件等。

迁移有哪些分类?

根据企业级应用的组成,我们可以把迁移分为以下几类。对于不同类型的迁移,会有不同的测试策略,采取的测试活动也会不同。

应用迁移(Application Migration)是将整个应用程序从一个平台或环境中迁移到另一个中。

Application Migration

应用迁移的例子:

  • Migrating an application to Cloud platform
  • Migrating an application from ASP to ASP.NET technology, ASP.NET to Windows Azure technology, etc.

测试场景(Test scenario):

  • 应用升级(If the application is upgraded):
    • 验证已有功能没有遭到破坏,新增功能满足需求
    • 数据库操作(增、删、改、查)正常
  • 替换为新系统(If the application is migrated to new technology):
    • app能正常工作
    • 新技术能满足app的兼容性:OS, browser version等
    • 数据库操作(增、删、改、查)正常

数据库迁移(Database Migration)是将原数据库中的数据迁移到新的数据库中,迁移过程中要保证数据不丢失,并且在迁移后有效可用。因此,数据格式、类型、值等在数据库迁移中十分重要。

Database Migration

数据库迁移的例子:

  • Migrate from one RDBMS to another
  • Migrate from RDBMS to MongoDB
  • Migrate from informix HC4 to HC6 or HC7

测试场景(Test scenario):

  • 迁移为相同类型数据库(If the migration is to the same type of Database):
    • 数据保持一致,无丢失和冗余
    • 验证数据库shema, relationship, table structure保持不变
    • 数据库与其它组件的链接正常,包括:application, server, interface, fire wall, network connectivity等
    • 查询效率没有降低
  • 迁移为不同类型的数据库(If the migration is a different type of Database):
    • 除上述之外,迁移为不同类型的数据库,还要考虑日期、浮点数、十六进制数的转换等

服务器迁移(Server Migration)是将服务器数据从一台服务器中迁移到另一台新的服务器中,迁移过程中服务器的配置信息也要同时迁移。

Server Migration

服务器迁移的例子:

  • Migrating from Windows to Mainframe server
  • HP BOX to IBM BOX

测试场景(Test scenario):

  • 服务器迁移,通常不单是Production server的迁移,而是包括test server在内的所有服务器的迁移
  • 检查应用间的API连接是否正常
  • 检查前端服务器的log
  • 运行所有测试(包括手工测试),验证系统是否正常运行
  • 查看与其它系统的接口是否正常工作
  • 检查环境配置

操作系统迁移(OS Migration)会存在大量兼容性的问题,为了解决兼容性问题,配置、接口和组件等都需要重新设计。

OS Migration

操作系统迁移的例子:

  • Migrating from Windows to Linux
  • Migrating from Windows to Mac
  • Migrating to Cloud-based Software as a Server
  • Migrating to Cloud-based VMs etc

测试场景(Test scenario):

  • 迁移后检查软硬件的兼容性
  • 验证迁移后功能正常运行
  • 验证迁移后系统性能没有下降

迁移过程中客户关注的问题?

  • 迁移由谁来执行
  • 迁移脚本是否足够简单、易用、高效
  • 是否会宕机时间,宕机的影响范围有多大

迁移的顺序?

一般情况下,企业级应用迁移的第一步是基础软件的升级和新版本系统应用产品的安装,然后是数据库的迁移,最后迁移应用程序。

通常情况下,迁移都不会单独发生。比如服务器迁移,同时也会迁移应用和数据库;操作系统迁移,也都伴随着应用的基础软件的升级和应用迁移。

迁移测试的分类?

迁移顺序.png

垂直迁移测试是迁移测试的基本方法,所有测试都必须是在完成从旧版本到新版本迁移的系统环境上进行的。

按照迁移的顺序,首先是软件升级测试、数据库迁移测试、应用迁移测试,其次是在迁移之后的环境上进行子系统迁移的测试、集成系统迁移测试、客户定制化迁移测试、功能测试、性能回归测试、迁移扩展性测试。

  • 作为一个完整的迁移测试框架,垂直迁移测试需要考虑从底层软件到上层应用的每一个功能点。
    • 功能测试:验证迁移之后系统功能的完整性和正确性,是对完成迁移的应用系统的功能回归测试
    • 性能测试:比较迁移前后应用的系统的性能测试结果,期望是迁移后系统性能没有下降,各项性能指标都在客户可接受的范围内

水平迁移测试是对垂直迁移测试的补充,主要用于垂直迁移测试框架中的数据库迁移测试和应用迁移测试。

  • 垂直迁移测试是水平迁移测试的基础,只有完成了垂直迁移测试框架中的数据库迁移和应用迁移,才能开始水平迁移测试。
    • 应用配置信息验证
    • 数据库验证
    • 加密信息验证

迁移测试实例

  • 需求描述

    • 一个中台系统,用于从企业内部系统创建和使用外部会议系统。最初这个系统是部署在团队搭建的集群上,后来客户要求我们将服务迁移到企业的云平台上,数据库保留。
  • 测试分析

    • 从需求上看,这是一个服务器迁移的例子。但是,在迁移服务器的同时,要对旧系统的网关、防火墙、与其它系统的交互等进行更新,也就涉及到了应用迁移。
  • 测试需求

    • 迁移要不中断开发进程,不影响用户的使用
    • 迁移后,系统性能不能下降
  • 测试方案

    • 测试是在迁移完成后进行的,测试环境(SIT, UAT)和产品环境的迁移是依次进行的,测试在不同环境上的侧重不同
    • 运行所有自动化测试,验证系统功能是否正常
    • 在测试环境中运行验收测试(包括手动回归),验证系统是否正常工作
    • 检查与其它系统的接口是否正常工作
    • 验证与数据库的链接是否正常,查询效率没有降低
    • 检查用户权限是否正常(客户有独立的用户管理系统)
    • 检查系统log
    • 在迁移前后的UAT环境中做性能测试,对比系统的性能
    • 迁移同时伴随新版本发布,安排在周六晚上进行,不考虑宕机对客户的影响

其它相关迁移测试

  • 兼容性测试:开发框架升级、API不兼容、系统间认证
  • 安全性测试:在迁移环境进行文件权限认证及敏感数据验证
  • 可靠性测试:迁移过程中如果有宕机,减少对系统的影响

Reference

Data Migration Testing Tutorial

Types of Migration Testing: With Test Scenarios for Each Type

软件测试之迁移测试

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容