如何做升级测试

摘要:
另外如果能够获取用户数据,最好考虑做一遍用用户数据进行的升级测试。回归测试回归测试是升级测试后产品功能的验证,需要根据产品模块的增删改进行回归,以保证升级之后产品功能正常。

大家可以看我总结的一篇更详细的升级测试文章:http://www.cnblogs.com/AlwinXu/p/5836667.html

升级测试是软件测试中非常重要的一环,需要考虑的方面有很多,比如用户数据是否被完整保存,升级失败如何恢复等都对测试人员制定测试策略和编写测试用例带来了一定的挑战。这里我根据最近做的项目做了一个Mindmap来简单的介绍一下做测试策略的思路,供大家参考(当然不同产品会有不同的升级测试策略,不应一概而论)。

首先简单的介绍一下产品背景:

  1. 传统的业务管理系统
  2. 环境部署比较复杂(需要的虚机和第三方软件依赖比较多)
  3. 用户数据量大(DB)
  4. 用户设置比较多(权限等)
  5. 对DownTime要求比较高

以下是mindmap:

如何做升级测试第1张

升级前准备

1. 模拟用户场景生成测试数据

在这个阶段需要对用户如何使用系统进行调研和分析,列出常用的用户操作,生成尽可能全的用户数据覆盖(可以分优先级)。另外如果能够获取用户数据(Database备份),最好考虑做一遍用用户数据进行的升级测试。

2. 模拟用户环境配置

这部分也是需要获取客户配置信息,尽可能用测试环境模拟客户真实环境。

3. 备份工作

在准备好了客户数据以及环境之后,需要尽可能多的备份原始数据,包括数据库备份,配置文件备份,产品文件备份等。如果有条件可以创建环境的镜像。

升级过程

1. 部署模式

对于部署模式我们需要考虑是All in One还是Distributed模式。对于手机的app就相当于是用simulator还是真机的情况。

2. 版本检查

这个也是比较重要的,对于哪些版本能够做升级需要明确定义。

3. 前置条件检查

对于产品依赖的第三方软件的检查也是必须的。首先要确定产品新版本需要的第三方软件是否已安装?版本对不对?OS的版本对不对?是否需要升级等进行严格检查,预防安装之后的不可逆性。

4. 安装参数的检查与更新

很多大型的软件在安装的过程中都有参数配置,这个阶段检查的包括之前版本的默认参数,新版本对之前版本默认参数值的修改以及新版本新添加的参数值等。

5. 备份策略

一个好的升级程序一定要有一个好的备份机制,防止升级过程中出错造成的不可逆性。当然,备份的文件要根据产品自身的特性来决定,而不是说每个文件都需要备份,因为当用户文件非常大的时候,全部备份会消耗太多的时间。我们推荐的策略是备份用户最关心得文件,并且做到易恢复。

6. 失败重试机制

升级过程中往往容易出现失败的情况,当解决了失败的问题之后,是否还能够继续升级是很重要的检查点。

7. 新旧模块

安装完成之后,需要验证新版本添加的模块是否安装成功和之前版本旧模块是否成功删除。

8. 用户数据的保留与更新

这部分一般包括两个模块:数据库和用户配置信息

对于数据库的比对可以有:

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

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

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

对于配置文件的比较:

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

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

9. 产品文件更新

安装完成之后要保证产品的文件版本得到更新,需要删除和添加的文件也都正确

10. 日志管理

日志也是比较重要的一块,日志的详细程度可以根据产品来定,目的是升级失败后能够很好很快的定位问题

非功能性测试

是否需要非功能性测试需要根据产品自身的特点来定,一般需要在升级时间和系统资源占用方面来考虑

消极测试

这部分就是用来识别和记录异常情况下升级程序的处理能力,例如:磁盘快满的情况,内存低,升级过程中的打断等等。

回归测试

回归测试是升级测试后产品功能的验证,需要根据产品模块的增删改进行回归,以保证升级之后产品功能正常。

OK,就简单介绍这么多吧,希望能对大家的日常工作有所帮助,当然最希望的还是大家能够提出改进意见,thanks.

免责声明:文章转载自《如何做升级测试》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jsp导出excel 解决文件名中文乱码USB应用开发笔记之一:STM32上实现USB主机读写U盘下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

My Sql 获取数据库所有表及表内的字段信息

1、通常可以直接用show tables来获取所有表,但是这只能获取所有表的表名;如果要获取表的更多信息就可以这么来写 MySql 获取数据库所有表的信息(表名、注释):select *from information_schema.TABLES where table_schema='数据库名称'; 而这条语句可以查出更全面的信息;其中结果中用个Tabl...

JS 获取web sql 数据

var tbName="tableName"; var tdName=["id","th1","th2","th3"]; var strSQL="select * from "+tbName+" where id="+1; //从web sql数据库获取数据; function getWebSqlData(strSQL,tbName,tdName){...

【测试基础第二篇】软件生命周期和测试流程

软件生命周期定义是 软件开始研制 到 最终被放弃 不用所经历的各个阶段 来源于软件开发模型 软件开发模型 瀑布模型 模型梳理: 缺陷:1.测试介入项目晚,回溯成本高 2.项目周期长,效率低 V模型特点:测试开发同时进行 模型梳理: 优势:1.测试介入早,可以提前对需求进行评审和测试,回溯成本高 2.测试提前准备测试文档即测试用例,编...

QT5连接Mysql

摘要 在Qt 5中已经提供了对MySQL数据库的默认支持,要想使用该数据库,需要先进行数据库的安装, 这里我们介绍下在Windows系统中MySQL数据库的安装和简单使用。   Qt如何利用Mysql远程连接数据库?   代码如下:      qDebug()<<QSqlDatabase::drivers(); qDebug...

部署zabbix企业监控平台

一、实验拓扑图 二、安装zabbix server   实验对象:上图中的zabbix-server 2.1)配置主机名、IP信息 # echo "server.ayitula.com" > /etc/hostname # hostname server.ayitula.com # nmcli con add con-name eth0 ifnam...

判断QQ,微信,QQ浏览器

最近做一个h5的落地页,用户输完信息后,去下载app,这里切记几个知识点 1.在微信和QQ中是不能下载app的,需要跳到浏览器中去下载。 2.window.location.href和window.open链接到app的链接是行不通的,在webview中会毙掉(h5嵌在第三方的贷超app中就会挂掉)。需要使用a标签 href链接url 3.判断微信,qq,...