系统升级测试模型

测试改进工场 测试改进工场     2022-08-02     801

关键词:

系统升级测试

随着软件行业敏捷开发的推进,软件的版本迭代越来越快,升级测试在软件测试中也变得越来越重要。升级测试是安装测试的一个分支,主要检验软件从低版本升级到高版本的能力,关注升级过程是否成功,用户数据是否得以保留或更新,升级后系统文件是否更新、系统功能是否正常。

1.1升级测试 vs. 全新安装测试

相对于软件全新安装来说,升级测试更为复杂,主要的区别如下:

类别

全新安装

升级测试

关注版本

一个(当前版本)

多个(多个旧版本、当前版本)

测试前准备

没有或很少

旧版本备份(数据、配置等)、模拟数据、模拟客户环境等

执行过程复杂度

低(默认参数执行安装)

高(版本验证、新旧版本区别、参数的增减修改等等)

执行后验证

回归测试

数据迁移和更新验证、新功能验证,回归测试

从图表中可见,相对全新安装,升级测试需要考虑的方面多且复杂,测试执行也需要更多的资源。

1.2升级测试中面临的问题

升级测试很容易做,但做好却很难。我们经常会在升级测试中面临各种各样的困扰:

  1. 如何准备升级前环境?
  2. 客户环境是怎样的?
  3. 怎样创造数据?
  4. 应该做到升级路径全覆盖还是选择性覆盖?
  5. 升级后如何验证升级成功?
  6. 升级后如何回归?

。。。。。。

面对这么多问题,一开始总会让我们无所适从,那么如何打开思路,进行高效升级测试呢?这就提到了升级测试模型。

2 升级测试模型

升级测试模型主要包括几个测试阶段:前期准备阶段、升级过程测试阶段以及后续的回归测试阶段。每个阶段之间都有强关联,在测试的过程中需要特别注意,下面对各个阶段进行展开介绍。

2.1升级前准备

升级测试前期准备主要包括:升级流程分析、环境搭建、数据准备以及备份策略。

 

  • 升级流程分析:升级流程分析是测试准备中的一个重要关注点,就像产品功能测试的需求一样,升级流程是很重要的升级测试需求来源。对于不同方式的升级流程而言,需要有不同的测试策略,比如对于以下的升级流程:
  1. 文件替换升级:需要更关注文件替换后的版本更新,数据保留,回归策略等
  2. 卸载-》安装-》数据迁移:需要关注卸载安装过程、数据的完整性,回归策略等

通过分析升级流程,画出软件升级的流程图,并根据流程图中的判断逻辑创建逻辑路径覆盖测试用例,不仅清晰而且不容易遗漏。(下图来自互联网)

 

所以在开展升级测试之前一定要对测试流程进行详细的分析,以便在之后的升级测试中做到有的放矢。

  • 环境搭建:对于升级前环境的搭建需要遵循20/80原则,因为不可能罗列所有用户环境并且每个都进行测试,建议的搭建策略:
  1. 按照产品安装文档进行环境搭建
  2. 分析客户环境,对OS配置、第三方软件及版本、产品旧版本、产品部署方式进行分析,选取具有代表性的环境配置以及典型的升级路径

 

  • 数据准备:升级前数据的准备对升级测试中数据完整性起到了决定性的作用,可以通过以下几种途径来提高数据的覆盖率:
  1. 分析用户使用场景,罗列常用场景并进行端到端的数据模拟
  2. 分析客户数据库,针对数据表进行分析,获得常用场景
  3. 如果版本合适,利用客户的数据库进行测试

 

  • 备份策略:测试环境搭建好之后需要对数据库、配置文件等进行备份,以便在后续测试中减少重复准备工作和进行升级前后的比较工作。

2.2升级过程验证

升级过程测试阶段依赖于升级前准备中的升级流程分析,不同的升级流程对升级过程的关注点也不同,本模型中罗列的是一些具有通用性的升级过程阶段:版本检查、软件依赖检查、安装参数检查、备份机制、产品模块更新、用户数据保留、文件版本检查、升级日志及失败重试机制。

下面着重介绍比较重要的几个验证阶段:

  • 软件依赖检查:对于大型的软件系统而言,一般都有所依赖的第三方软件,比如说数据库、.NET等。产品新旧版本之间可能用到的第三方软件产品或者版本不同(在升级前准备阶段的环境搭建中罗列),针对这种情况,升级程序需要提供对第三方软件的检测,尽早给出提示信息,避免产品升级之后产品不能工作的情况发生。

 

  • 产品模块更新:产品模块的更新包括模块的添加、更新和删除。该部分的验证需要更多依赖对于产品不同版本之间的分析和理解:

 

  1. 对于升级前版本存在、新版本删除的模块,在升级之后需要删除,包括安装目录、数据库表、配置文件等。
  2. 对于升级前版本不存在的模块,升级后需要正确安装
  3. 对于需要更新的模块,需要验证安装文件是否更新

 

 

  • 用户数据保留(完整性):用户数据的验证主要包括数据库和配置文件的验证,主要的验证方式:
  1. 数据库数据验证:

a)       升级后新版本和之前版本数据库中用户数据的比较(检查用户数据是否保留)

b)      升级后新版本和全新安装新版本进行比较(检查数据库结构是否一致)

c)        升级后新版本和全新安装新版本数据库默认数据进行比较(验证默认数据的准确性)

对于数据库的验证包括数据库的结构和数据的验证:结构包括表、索引、视图、存储过程以及agent job等;数据的验证主要包括对主要数据表的数据进行验证。

因为这一部分是比较容易出问题的,这里罗列一些比较好的实践和注意点:

1)      针对数据库比较庞大的系统,具体分析数据库,获取关注的数据库表,忽略不关注表(比如一些可以删除的history或者log表)的数据比较。

2)      某些情况下,数据库在升级之后一些数据的id会变化,需要确保以该id为foreign key的列也得到相应的更新

3)      针对某些数据变化的列,需要特别注意分析业务逻辑判断是否需要更改,比如某列的默认值为0,用户在使用过程中修改为1,而新版本的默认值为5,这就需要判断升级后是保留用户原系统的值1,还是使用新系统的默认值5,这是需要特别注意的

 

另外针对数据库的比较有很多好用的工具,如Visual Studio自带的数据库比较、DB Comparer等。

  1. 配置文件的验证:

a)       升级后新版本和之前版本配置文件进行比较(保证用户在之前版本中的配置保留)

b)      升级后新版本和全新安装新版本配置进行比较(保证配置结构和数据正确)

2.3非功能测试和负面测试

                               

                非功能性测试:这里主要列出了性能方面的时间以及内存消耗。这部分在数据库过大的情况下数据迁移比较容易出现时间过长、内存占用过大的情况。

                负面测试:主要来验证升级程序针对一些打断或者边缘情况的处理能力,保证能够失败重试,或者即使不能升级成功也可以恢复到升级前的状态

2.4回归测试

经过了升级过程的验证,新版本已经安装成功,这时候就需要验证新版本是否能够工作正常。回归测试的级别和策略需要视产品性质而定,一般分为:

  1. BVT验证:最基本的验证测试,用来保证安装完成后基本工作工作正常
  2. 基于改动的功能验证:该部分需要对升级前后的产品差异有清晰的了解,针对相应的改动有侧重点的开展测试
  3. 新功能验证:针对新版本的新特性进行测试
  4. 用户数据验证:有了对升级过程中的数据完整性的验证,可以保证用户数据得以保留,这样还不够,需要通过客户端进行数据展现,保证展现正常

3总结

      升级测试模型提供了升级测试开展的一个突破口,针对升级过程中的前期准备,升级过程验证以及后续升级完成后的回归测试打开了一些思路,并且对1.2中升级测试中的问题提出了一些解决方案,但罗列的各个检测点不一定适用于所有的产品,大家可以在具体的测试过程中有所取舍。

 

附录:升级测试模型(upgrade testing model)

数据测试文章--

...候,往往不会选择升级所有硬件,而是更着重于首先升级系统紧缺的资源,例如I/O,那么这时就需要专门针对不同的硬件配置,来测试I/O的提升效果。再比如,硬件厂商往往夸大其词,这时我们就需要运用自己认为可靠的工具去... 查看详情

cap23_信息系统综合测试与管理

23信息系统综合测试与管理21.1测试基础23.1.1软件测试模型V模型、W模型、H模型、X模型、前置测试模型V模型:需求分析、概要设计、详细设计、编码;单元测试、集成测试、系统测试、验收测试23.1.2软件测试类型按照开发阶段划... 查看详情

软件开发模型

...之间的接口)是否正确,是灰盒测试(白盒和黑盒结合)系统测试:系统测试包括:冒烟测试系统测试回归测试(1)冒烟测试:主干流程测试,确认软件的基本功能正常,可以进行后续的测试工作(2)系统测试:是检测系统的... 查看详情

信息系统综合测试与管理

本文包括软件测试模型、测试技术和测试管理。一、测试基础1、软件测试模型所谓测试模型(TestModel),是测试和测试对象的基本特征、基本关系的抽象。1)V模型V模型实际是软件开发瀑布模型的变种,它反... 查看详情

信息系统综合测试与管理

本文包括软件测试模型、测试技术和测试管理。一、测试基础1、软件测试模型所谓测试模型(TestModel),是测试和测试对象的基本特征、基本关系的抽象。1)V模型V模型实际是软件开发瀑布模型的变种,它反... 查看详情

交易系统升级之性能测试思路

...富管理并为其提供更为便捷的金融服务的需要,核心交易系统重构成为提升机构服务能力的重要方式。交易系统性能是体现互联网证券业务能力的重要指标,如何确保新构建的交易系统能够满足针对互联网大数据量的业务需求成... 查看详情

核心数据测试迁移映射模型

...射模型的最佳方法有何看法?我目前正在开发应用程序以升级应用程序商店中的应用程序,并希望在提交之前对映射模型进行严格测试。【问题讨论】:【参考方案1】:无意中发现了这个,为了测试迁移,在启动模拟器之前,... 查看详情

pgtm通用性能测试模型

...、     测试前期准备阶段目标:1.保证系统稳定性; 2.建立合适的测试团队。活动:1.   系统基础功能验证类似于BVT测试,确保被测系统已具备进行性能测试的条件。a.性能测试属于验收测试一部... 查看详情

aptm敏捷性能测试模型

随着应用系统的日趋复杂,仅在系统测试和验收测试阶段执行性能测试已经不能满足迟早发现和解决系统性能瓶颈的要求,ConnieSmith博士和LloydWinlliams博士在他们提出的软件性能工程(SoftwarePerformanceEngineering)中建方将性能需求... 查看详情

4测试基础-软件测试流程与测试模型

...分析阶段-软件设计和编码阶段(进行单元测试)-集成、系统、验收测试阶段。软件测试模型  传统:项目计划——需求分析——软件设计——程序开发——软件测试——集成维护。  V模型:... 查看详情

测试模型

...型:在编码完成之后测试才开始介入,没有对需求分析和系统设计环节进行测试W模型:W模型是V模型的发展,强调的是测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试与开发是... 查看详情

Django 1.8 和鼻子:冲突的模型?

...发布时间】:2015-12-1811:27:29【问题描述】:我有一个最近升级到Django1.8.4的Django应用程序。我正在使用鼻子1.3.7和django-nose1.4.1让我的测试运行器运行200多个集成和单元测试。由于升级了Django和鼻子,我发现我的12个测试失败并出... 查看详情

bw是指哪个部门

参考技术Abw是指技术部门BWArchitect:负责全面数据及系统的设计以及所有BW项目的整合。审核管理符合业务需求分析的开发标准以及企业级BW系统模型。BWAdministrator:负责BW整体形能的监控,调试和优化。审核数据模型和系统框架。... 查看详情

软件测试模型以及流程

...行独立的编码和测试,然后集成,做集成测试,最后进行系统测试H模型测试活动分成两个阶段:测试准备和测试执行测试准备:测试需求分析,测试计划制定,测试设计,编写测试用例等测 查看详情

软件设计师10-系统开发模型

...型定位于需求不明确的项目。在项目初期会构造一个简易系统(可以是界面无后台功能,也可以是一套初步的系统)。一般用于需求分析阶段。演变模型在原型模型基础上,逐步完善逐步演变,形成最终的成熟软件。增量模型先... 查看详情

软件测试基础

软件的定义:与计算机系统操作相关的计算机程序、文件文档、配置数据软件测试目的:尽可能发现软件中的缺陷软件测试的定义:使用人工或者自动化的测试方式,检测软件系统是否满足用户需求,并找出与预期结果之间的差... 查看详情

信息系统集成专业技术知识

第一章 信息系统基础知识第一节信息系统的生命周期  立项开发运维消亡(口诀:花开云散)  立项:形成《需求规格说明书》由系统分析师完成。  开发:工作内容:系统分析、系统设计、系统实施、系统验收。 ... 查看详情

测试基础点(代码片段)

...1a;需求分析-概要设计-详细设计-编码-单元测试-集成测试-系统测试-验收测试w模型:需求分析-概要设计-详细设计-编码-集成-实施-交付 需求分析测试-概要设计测试-详细设计测试-单元测试-集成测试-系统测试-验收测试2.公司... 查看详情