知乎上看到的问题:
各位专业的IT或是测试大牛能告诉我环境部署怎么做吗?每次我都是说根据测试文档安装相应软件,环境变量设置!准备相关材料!总觉得回答不够好!求解正确答案?
作为一个专业的测试人员,这个回答不能说不好,而是基本等同于不会测试。
这个问题虽然是直接问的如何做安装部署,但其实是问你对于安装部署需要怎么测试? 不直接问是因为很多小白都意识不到安装部署其实是软件功能测试范围中极为重要的一块,比如题主。
一个软件系统的安装,特别是直接交付给用户的系统,这部分可以说就是整个系统的门面,是使用这个软件的第一步,表现好坏直接影响用户对这个软件的评价。
那么软件的安装部署测试要做哪些测试方面的考虑呢?可以从以下几个方面来看:
全新安装/全量安装
全新安装,指一个软件首次部署或者是在不保留原先已安装信息的情况下重新部署。
这部分其实是测试的主要部分,题主所说的安装文档其实也主要会针对这一部分说明。
但测试时还是有很多需要注意的测试要点
1. 安装的依赖
大部分的安装程序或脚本,它其实都是有一定的条件依赖的:
- 需要的磁盘空间?
- 网络的连接状态?
- CPU/内存有没有要求?
- 操作系统的版本?
- 系统用户的权限(是不是需要操作系统的管理员权限来安装?)
- ….
而且这些依赖也不单纯只是安装程序本身的依赖,也包括安装完成后,软件系统要正常运行需要的依赖条件,这些在我们程序安装的时候,都应该由安装程序提前进行验证。所有这些都是测试时需要考虑和进行设计的。
2. 安装程序/脚本的功能验证
不管是有安装程序还是通过执行脚本,这部分是安装部署的主体,也是安装部署文档中重点描述的部分,大部分面向用户的安装程序其实都是有界面的。
那这里的验证其实和普通软件的功能测试没太大区别。
- 界面中描述性信息、文字是否清晰
- 一些操作的提示信息是否明确
- 有用户交互部分,用户不同选择的分支验证
- 不同的屏幕分辨率下的兼容性
- 是否提供步骤回溯?误操作时能否返回上一步….
在设计这部分验证时,最好结合流程图,梳理出各种不同路径逐一确认。
3. 安装异常处理
这个是考验测试人员经验的重要环节。
- 磁盘空间不足?
- 中途断网?
- 本地服务端口冲突?
- 中途断电?….
4. 易用性
关于安装程序的易用性,主要考虑安装过程中有没有对用户体验优化的一些考虑。
- 比如安装选择一个已经存在的目录,是否有提示?
- 文件的覆盖会不会有二次确认?
- 安装过程中,有没有进度条显示安装进度?
- 在比较大的文件拷贝时,界面有没有一些信息变化提示,避免用户怀疑程序卡死?
- 检测到冲突,有没有给用户提供解决方案建议?…..
这些其实都是属于易用性的范畴
5. 安装校验
在执行安装测试时,我们还应该了解并确认安装前后系统有哪些变化,这些变化是否是符合设计要求。
- 安装后安装目录下会包含哪些程序文件?
- 操作系统的系统文件夹或非安装目录下有没有生成什么文件?
- 注册表有无增加和修改?
- 系统服务有没有增加和修改?
- 开始菜单中有没有添加程序组?
- 桌面上有没有创建快捷方式?…..
掌握这些不仅是功能的检查,也是我们理解安装程序本身做了哪些事情,有没有测试场景的遗漏。
升级安装/更新
除了全新安装外,另一个重要的场景是系统的升级,更新。也就是系统已经存在了一个版本,需要在原有基础上升级到当前安装包的版本。
而升级又可以分为全量升级和增量升级
全量升级
全量的升级会完整替换原先的程序文件,但一般会保留原有的配置和数据,安装包通常会包含当前版本的所有文件,安装包通常比较大
增量升级
增量升级则是根据用户的当前版本,安装包只包含增量的一些程序文件,包括一些升级操作的脚本文件。这种安装包一般比较小,安装过程也通常更加快速。但安装包要和用户的当前版本严格匹配。一般会在全量安装包非常庞大,分发给用户效率不高的时候采用
版本跨度
不管是全量还是增量,验证时和全新安装的要点基本类似。但有一个升级验证特定的场景需要重点考虑,就是版本的跨度问题
如果软件迭代,版本变更次数非常多,那么从历史古早版本升级到新版本往往会带来很多问题,包括配置、数据结构的变化造成的影响,以及升级策略的选择,是一次到位还是逐个中间版本升级?对测试策略可能都有影响。
数据转换
对于牵涉到数据库,数据结构变化的版本升级,业务数据可能会需要进行很多数据转换的操作,这里也是Bug的高发地带,需要结合升级后的业务测试重点关注。
回退
回退通常属于安装出现问题时,是否可以恢复原先状态,以不影响原来的业务。
这里主要从几个方面考虑:
正常取消安装/部署
用户主动发起,属于正常回退,这时安装程序应该要能够清理掉已完成的安装文件,恢复原有的系统配置,将状态重置到安装前的状态
异常回退
除了用户主动发起的正常回退外,如果安装过程中出现了一些未知的异常导致安装无法继续,这时需要提示用户安装失败,同时也应该触发回退流程,将系统恢复到安装前。
这种属于我们安装程序本身的异常捕捉和处理的一部分。
而即便不是安装程序本身捕捉的异常,比如安装过程中拔电源强制中断这样,我们的软件也应该提供一些清理脚本来将部署状态恢复到安装前。 这也是安装测试的重要场景之一。
回退有效性
除了回退的触发,就是我们还要对回退的效果进行确认。是否确实正确完成了清理和状态恢复。
另外,在回退执行过程中,如果出现异常(和因为异常触发回退不同),是否有对应的解决方案?比如提供清理工具
卸载
当然,有安装就有卸载。除了安装程序的验证,我们还要验证卸载程序或脚本。类似安装程序的功能验证
卸载入口
除了直接执行卸载程序,还有通过操作系统的卸载入口进行卸载,都是应该考虑的场景
卸载遗留
软件卸载以后,有哪些文件、配置会遗留在操作系统中,是否符合设计要求?
破坏性卸载
制造一些特殊场景,比如一些关键文件物理删除,关键的配置被变更,确认卸载还是否能正常进行?
卸载中的异常
同样也要考虑卸载中的各种异常场景
- 文件正在使用?
- 断网?
- 断电?…
异常出现时,有没有对应的手段可以善后
很多时候,看上去简单的问题,深究的话门道可并不小。 测试是一门关于探索和发现未知的艺术,自有奥妙。