整体思路:
针对遗留系统的改造将遇见如下问题:
1. 系统的文档不全,不新或根本缺失(需求,设计)。
2. 代码是否是最新生产代码?
3. 由于无人了解代码情况,所以代码的质量无法保障。
4. 数据库的表结构说明缺失,业务的整理需要看代码猜测。
针对以上问题,遗留系统升级改造建议采取“尽量少动原来的代码,只解决当前需求和问题为主要目的”的原则推进。所以为了遵循原则,需要重点解决定位和修改目标代码的问题。此处可以考虑以“测试驱动”模式推进。
“测试驱动”顾名思义,先针对需要调整的功能,建立好测试的保障,后续如果修改后,再进行测试,先定位表结构,后定位到代码逻辑,进行解决。解决后能通过测试,则代表着修复和升级完毕。
采取的步骤如下图所示:
详细说明如下:
一、环境准备工作
1) 搭建好4套测试环境:
测试A环境为生产库的环境(将生产环境完整复制一套,录制一套自动化测试脚本)。
测试B环境为现有库的开发环境(升级到新库)。
测试C环境为持续集成验证现有库升级的UAT环境。
测试D环境为验证调整新数据库后的UAT环境。
2) 生产环境下基线代码验证为最新正确代码:
从配置库取生产环境下对应的代码和现有生产库,发布部署到测试A环境,进行完整功能验证。(如果有建立生产基线的话,则无需验证,否则此处需要在测试A环境上跑录制脚本,看是否通过)
二、梳理调整的业务功能。
1) 将升级新数据库后,可能会影响的功能列表清单列出。
2) 将受影响的功能对应的现有库表结构与新表结构对比差异分析出来(PD对比,并生成升级脚本SQL)。
3) 将受影响的功能对应的现有基础表数据内容与新基础数据表的数据内容对比分析出来。(内容对比,并生成升级脚本SQL)
三、针对要调整的业务功能,设计保障测试用例和脚本工作。
1) 设计完整的测试用例,要求覆盖全部的业务逻辑。(包括设计数据内容的筛选过滤,验证统计分析结果正确性的验证用例)。
2) 结合测试用例,建议用Selenium(JAVA),WantiN(.NET)编制自动化测试脚本进行GUI级别的测试保障(如果实在不行的话,采用loadrunner录制测试用例脚本)。
四、调整程序代码和表结构工作
1) 将测试用例设计的数据内容(2012-6月至2012年-12月数据),从现有库生产库中导入到测试B环境。
2) 在测试B环境下,将差异对比的SQL脚本升级现有库(包括表名)。
3) 运行录制的详细测试脚本,出现bug调整代码,至能通过测试用例验证。
五、测试C环境下,每天持续集成,跑整体脚本测试,确保编译和其它功能通过。
1) 测试人员负责在C环境下进行测试,并辅助开发人员调整代码。
2) 持续集成的故障,直接反馈给开发人员调整代码,确保每日集成顺利。
3) 保障并反馈调整进度。
六、测试D环境下的最后调整
1) 增加新新数据库地址链接等配置信息。
2) 将代码中的涉及到升级新库后的表,调整为访问新库的前缀。
3) 测试D环境下,跑自动化测试脚本至验证通过。
七、代码调整完毕,项目改造结束。
UAT用户测试和验收测试通过,出测试报告。