迁移的不同阶段测试
阶段1:迁移前测试
在迁移数据之前,作为迁移前测试阶段的一部分,将执行一组测试活动。在较简单的应用程序中,忽略或不考虑这一点。但是,当要迁移复杂的应用程序时,必须进行预迁移活动。
以下是在此阶段采取的行动清单:
- 设置一个明确的数据范围:必须包含哪些数据,必须排除哪些数据,需要转换的数据等。
- 在旧应用程序与新应用程序之间执行数据映射:对于旧应用程序中的每种数据类型,将其在新应用程序中的相关类型进行比较,然后进行映射。
- 如果新应用程序中具有必填字段,而在旧应用程序中不是这样,则请确保旧应用程序不将该字段设置为null。
- 仔细研究新应用程序的数据模式,包括字段名称、类型、最小值和最大值、长度、必填字段,字段级别验证等。
- 旧系统中的许多表将被记录下来,如果迁移后删除和添加了表,则需要验证。
- 在旧应用程序中,应注意每个表、视图中的多个记录。
- 研究新应用程序中的接口及其连接。接口中流动的数据应高度安全,并且不会损坏。
- 为新应用程序中的新条件准备测试用例、测试场景和用例。
- 使用一组用户执行一组测试用例、场景,并保存结果和日志。在迁移之后,同样需要进行验证,以确保遗留数据和功能完好无损。
- 数据和记录的计数应清楚记录下来,迁移后需要进行验证,以确保没有数据丢失。
阶段2:迁移测试
进行迁移活动时,必须严格遵循迁移团队准备的“迁移指南”。理想情况下,迁移活动从将数据备份到硬盘上开始,以便可以在任何时间恢复旧系统。
验证“迁移指南”的文档部分也是数据迁移测试的一部分。验证文档是否清晰且易懂。所有脚本和步骤必须正确记录,没有任何歧义和任何类型的文档错误,按照步骤执行顺序进行的不匹配项也需要被视为重要的,以便可以进行报告和解决。
需要从版本控制存储库中获取与实际迁移相关的迁移脚本,指南和其他信息以供执行。
记录从迁移开始到系统成功恢复的实际迁移时间,是要执行的测试用例之一,因此“迁移系统所用的时间”需要记录在最终测试报告中,该报告将作为迁移测试结果的一部分提交,并且该信息将在产品发布期间有用。对测试环境中记录的停机时间进行外推,以计算现场系统中的近似停机时间。
它将在旧系统上执行迁移活动。
在此测试过程中,通常会关闭环境中的所有组件并将其从网络中删除,以执行迁移活动。因此,有必要注意迁移测试所需的“停机时间”。理想情况下,它将与迁移时间相同。
通常,“迁移指南”文档中定义的迁移活动包括:
- 实际迁移应用程序;
- 防火墙、端口、主机、硬件、软件配置均根据要迁移旧版的新系统进行修改;
- 执行数据泄漏、安全检查;
- 检查应用程序所有组件之间的连接;
建议测试人员在系统后端或通过白盒测试来验证以上内容。
指南中指定的迁移活动完成后,将启动所有服务器,并进行与成功迁移验证有关的基本测试,以确保所有端到端系统均已正确连接,并且所有组件都在相互通信,DB已启动并运行,前端与后端通信成功。这些测试需要更早地确定,并记录在迁移测试规范文档中。
该软件有可能支持多个不同的平台。在这种情况下,需要分别在每个平台上验证迁移。
迁移脚本验证将是迁移测试的一部分。有时,在独立的测试环境中,也可以使用“白盒测试”来验证各个迁移脚本。
因此,迁移测试应是“白盒测试”和“黑盒测试”的结合。
一旦完成了与迁移相关的验证并通过了相应的测试,团队就可以进一步进行迁移后测试。
阶段3:迁移后测试
成功迁移应用程序后,便开始了迁移后测试。
这里,端到端系统测试是在测试环境中执行的。测试人员使用旧数据以及一组新的数据来执行确定的测试用例、测试场景和用例。
除此之外,还需要在迁移的环境中验证以下特定项目:
所有这些都记录为测试用例,并包含在“测试规范”文档中。
- 检查是否在计划的停机时间内将旧版中的所有数据迁移到新应用程序。为确保这一点,请比较数据库中每个表和视图的旧应用程序与新应用程序之间的记录数。另外,报告迁移所需的时间,例如迁移10000条记录的。
- 检查是否按照新系统更新了所有架构更改(添加或删除的字段和表)。
- 从旧版迁移到新应用程序的数据应保留其值和格式,除非未指定这样做。为了确保这一点,请在旧应用程序数据库和新应用程序数据库之间比较数据值。
- 针对新应用程序测试迁移的数据。这里介绍了最大可能的情况。要确保100%的数据迁移验证覆盖率,请使用自动测试工具。
- 检查数据库安全性。
- 检查所有可能的样本记录的数据完整性。
- 检查并确保旧系统中较早支持的功能可以在新系统中按预期工作。
- 检查涵盖大多数组件的应用程序中的数据流。
- 组件之间的接口应该进行广泛的测试,因为数据在通过组件时不应被修改、丢失和损坏。集成测试用例可以用来验证这一点。
- 检查旧数据的冗余。迁移期间,任何旧数据都不应该重复复制。
- 检查数据不匹配的情况,例如数据类型已更改,存储格式已更改等。
- 旧应用程序中的所有字段级别检查也应包含在新应用程序中。
- 新应用程序中的任何数据添加都不应反映在旧版本上。
- 应该支持通过新应用程序更新旧应用程序的数据。在新的应用程序中更新后,它不应反映在旧版本上。
- 应该支持在新应用程序中删除旧应用程序的数据。一旦在新应用程序中删除,它也不应删除旧数据。
- 验证对旧系统所做的更改是否支持作为新系统一部分。
- 验证旧系统的用户是否可以继续使用旧功能和新功能,尤其是涉及更改的功能。执行迁移前测试期间存储的测试用例和测试结果。
- 在系统上创建新用户并进行测试,以确保旧版以及新应用程序的功能均支持新创建的用户,并且可以正常工作。
- 使用各种数据样本(不同年龄段,来自不同地区的用户等)执行与功能相关的测试。
- 还需要验证是否为新功能启用了“功能标志”,并且将其打开/关闭可以启用或关闭该功能。
- 性能测试对于确保迁移到新系统/软件不会降低系统性能非常重要。
- 还需要执行负载和压力测试以确保系统稳定性。
- 验证软件升级没有打开任何安全漏洞,并因此进行安全测试,尤其是在迁移期间对系统进行了更改的区域。
- 可用性是需要验证的另一个方面,其中如果GUI布局/前端系统已经改变或者任何功能已经改变,那么与旧系统相比,最终用户感受到的易用性是什么。
由于迁移后测试的范围变得非常庞大,因此最好将需要首先进行的重要测试分离出来,以确定迁移是否成功,然后再执行其余的测试。