对于软件测试工程师而言,所有的测试工作几乎都离不开测试环境。在我们的测试任务当中,环境搭建是一项重要的工作。它是我们测试工作能够执行的重要基础,不管是入门的初级测试还是测试专家,测试环境的学习都是必须的。
下面给大家普及关于测试环境的基础概念,希望对大家有所帮助。
首先,很多人有个误区,认为测试环境只是服务端的事情。
其实,一个完整的测试环境是由如下几个部分构成:
测试环境=软件+硬件+网络+数据准备+测试工具
测试环境(Testing environment)是指测试运行其上的软件和硬件环境的描述,以及任何其它与被测软件交互的软件,包括驱动和桩。测试环境是指为了完成软件测试工作所必需的计算机硬件、软件、网络设备、历史数据的总称。
所以,硬件资源、操作系统、服务中间件、基础应用、依赖服务、被测程序、测试工具等都是测试环境的一部分。
为什么要单独部署测试环境?
- 与开发环境隔离。
- 便于设置不同场景和数据。
- 应对专项测试,如果性能、安全等。
一般对于大型互联网公司而言,一个完整的产品开发到上线,需要经历的测试环境分为以下几种
开发环境:
顾名思义,开发环境是开发人员使用的,专门用于应用开发调试的环境,开发到一定阶段,前后端会在该环境进行联调,自测等工作。为了开发调试方便,一般打开全部错误日志。开发环境是最基础的可运行环境。
测试环境:
一般是克隆一份生产环境的配置,是开发环境到生产环境的重要一环,一般是测试工程师进行部署和维护,主要用于测试是否存在bug,bug修复后,测试工程师部署提测程序,回归bug。
准生产环境(灰度测试)
测试环境到生产环境最后一次测试,一般除即将部署的应用,其他软硬件条件完全一致。主要排除测试环境的限制,验证测试环境不能模拟的场景。
生产环境:
生产环境是指正用户真实使用的环境,一般会关掉错误报告,打开错误日志,是整个产品运行最重要的环境,对安全性和稳定性要求最高。
软件从开发到上线的环境流程:
开发环境->测试环境->准生产环境->生产环境
从哪些方面可以评估测试环境的好坏?
1.独立
测试环境独立干净,一般要有专门的测试环境管理员管理,控制依赖环境一致。在测试过程中,避免测试环境被开发或者其他人占用。比如,正在执行用例,被测服务被开发擅自更换,将会极大的影响了测试的进度和效率。
2.稳定
各个程序稳定运行,良好的网络环境。
3.高仿真
尽可能模拟用户的真实使用环境,包括操作系统类型、版本,硬件和网络配置等,避免因为环境不一致导致测试结果缺乏说服力。
4.可复用
重复运用一套环境进行多版本对迭代的验证,可以随时进行数据备份,恢复环境。
搭建测试环境,我们应该具备哪些技能?
- 熟悉linux操作系统,掌握常见的linux命令(查看网络问题,上传下载应用,服务启动关闭,日志查看,程序数据备份,数据库脚本执行,端口的占用情况,防火墙的开启关闭等等)。
- 安装配置常见软件和中间件(jenkins、jdk、tomcat、mysql、redis、mq等)
- 容器化部署的知识,docker,k8s操作等。