升级测试是软件测试中非常重要的一环,需要考虑的方面有很多,比如用户数据是否被完整保存,升级失败如何恢复等都对测试人员制定测试策略和编写测试用例带来了一定的挑战。这里我根据最近做的项目做了一个Mindmap来简单的介绍一下做测试策略的思路,供大家参考(当然不同产品会有不同的升级测试策略,不应一概而论)。
首先简单的介绍一下产品背景:
- 传统的业务管理系统
- 环境部署比较复杂(需要的虚机和第三方软件依赖比较多)
- 用户数据量大(DB)
- 用户设置比较多(权限等)
- 对DownTime要求比较高
以下是mindmap:
升级前准备
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.