测试工作中,很重要的一个场景就是版本迭代时的升级测试,在此场景下我们的主体测试对象是验证版本升级的正确性、可靠性,历史数据是否能够向下兼容。在今天的文章中我将会总结如何在测试过程中确保服务能够兼容历史数据。
版本升级方式
停服更新和平滑更新
停服更新是指在软件或系统进行升级时,暂停服务让用户无法访问和使用系统。停服更新的优点是我们不需要对数据库进行版本兼容,缺点是会导致服务在一定时间内不可用。
平滑更新是一种在不中断服务或者尽量减少对用户使用体验干扰的情况下,对软件或系统进行更新的方式。平滑更新的优点是不会影响历史数据,并且更新过程中,系统可以继续正常运行,用户可以正常使用大部分功能。但是平滑更新需要满足对数据库的版本兼容。
服务端数据升级的介入时机
如果当前版本存在数据升级的情况,那么测试人员需要在开发提测后先进行数据升级测试再冒烟。
测试手段
在版本迭代过程中,测试人员确保服务能兼容新老数据可以从以下几个关键方面入手:
需求分析阶段
在测试之前,我们需要在需求分析阶段就和开发确认好当前版本是否存在数据升级的逻辑,明确版本迭代中涉及的数据结构、数据格式、数据存储方式等方面的改变。
分析数据改动对现有功能的影响,确定哪些功能模块可能会受到数据变化的波及,以便在测试中重点关注。
测试策略与用例编写阶段
编写数据升级测试策略
确定测试范围:明确需要测试的数据范围,包括但不限于涉及数据改动的接口、数据表,以及与之相关联的业务模块所涉及的数据。
确定测试用例的优先级:对数据升级可能带来的风险进行评估,根据风险的严重程度和发生概率,对测试用例进行优先级划分。例如,在我之前的一个客户数据云备份产品中,对于大数据的数据类型的列进行升级时,我们需要提高优先级,一旦出现异常可能会导致用户数据备份失败。
编写测试用例
在编写测试用例时需要注意:
针对历史数据向下兼容:
测试人员需要针对于旧数据设计相关测试用例,包括对旧数据的增删改查。例如:删除了数据表中的某个字段,验证使用旧版本功能操作时,系统是否不会因缺少该字段而报错,且相关功能是否能正常运行(如数据查询、修改等);若修改了字段的数据类型,测试旧数据在新版本中是否能正确转换和显示。
针对新版本业务数据向上兼容:
在向上兼容时,测试人员需要确保新版本的业务数据能在老版本的服务中正常处理。例如:新增了数据表字段,验证在新版本中创建的数据,在旧版本环境下进行相关操作时,系统是否能正确识别和处理,不会因新增字段而导致异常。
业务流程测试:
除了数据校验之外,我们还需要准备业务流程测试相关的测试用例。
测试用例评审
在升级测试用例准备完成后,需要组织测试团队,开发人员,产品经理进行用例评审。评审过程中,重点关注测试用例是否覆盖了所有的数据改动点和业务场景,是否能够有效验证新老数据的兼容性。通过用例评审进行查漏补缺,避免遗漏测试点。
介入测试阶段:
前置准备:
准备好服务器搭建上一个版本的被测项目
围绕测试用例构建历史数据
根据开发提供的部署文档完成服务升级
开始测试:
验证历史数据是否能够向下兼容。(用例执行)
主流程校验。
主流程是系统核心业务功能的关键路径,对主流程进行校验旨在确认版本升级后系统的核心业务流程能够完整且正确地运行。
构建新版本的业务数据。(用例前置)
回滚策略校验。(文档正确性)
验证开发团队提供的回滚策略文档的准确性和完整性,确保在系统升级过程中或升级后出现严重问题时,能够依据回滚策略将系统和数据安全、准确地恢复到升级前的状态。并且在升级期间增删改的新数据不受影响,在回滚之后能业务逻辑处理正常。
验证新版本业务数据是否能够向上兼容。(用例执行)