前言
测试环境是QA开展测试工作的前置条件。稳定和可控的测试环境,可以使测试人员在执行测试用例时无需花费额外的时间去维护。有些公司运维或者研发部门会帮忙准备好测试环境,但是QA如果一味依赖其他部门,会局限测试工作的开展。
一、什么是测试环境
测试环境,指为了完成软件测试工作所必需的计算机硬件、软件、网络设备、历史数据的总称,简而言之,测试环境=硬件+软件+网络+数据准备+测试工具。
硬件:指测试必需的服务器、客户端、网络连接等辅助设备。
软件:指测试软件运行时的操作系统、数据库及其他应用软件。
网络:指被测软件运行时的网络系统、网络结构以及其他网络设备构成的环境等。
数据准备:一般指测试数据的准备。测试数据会在测试用例设计的阶段设计好,然后软件运行的时候,作为软件输入去验证软件功能。如果是少量、正常的测试数据,可以直接通过手动方式模拟出来,如果是大量的用户数据的模拟,可以借助测试工具来构建。
测试工具:工具是辅助测试的好帮手,针对将要做的测试类型,可选择合适的工具让我们的测试事半功倍。比如接口测试,可以选择Jmeter或者postman;抓包工具,可以选择fiddler,wireshark等。
二、搭建测试环境的原则
1.真实
要求测试人员尽量模拟用户的真实使用环境。我们应该选用合适的操作系统和软件平台,了解符合测试软件运行的最低要求及用户使用的硬件配置,考虑到与其他软件共存时,是否能正常运行等。
2.无毒
若搭建的测试环境感染病毒,会导致测试软件经常出现莫名的崩溃,运行不起来等现象,导致测试中断。使用正版杀毒软件防止病毒感染测试环境,保证无毒环境。
3.独立
测试过程中要确保我们的测试环境独立,避免测试环境被占用,影响测试进度及测试结果。有时开发人员为确定问题会使用我们的测试环境,这样会打乱我们的测试活动。为避免这种情况,测试环境与开发环境应相互独立,开发人员根据缺陷表单,在开发环境中复现和定位问题。
4.可复用
当我们刚搭建好测试环境,安装测试软件之前及测试过程中,对操作系统及测试环境进行备份是必要的。在当测试环境遭到破坏时,可以恢复测试环境,避免测试数据丢失,出现不可预知的问题。
三、如何搭建测试环境
1.认识LNMT架构
这里主要介绍测试环境服务端的部署。不同公司的服务端部署都不一样。互联网公司比较典型的部署框架LNMT(Linux+Nginx+Mysql+Tomcat)如下图:
浏览器和APP端是通过HTTP协议跟服务器进行交互的。
Nginx,有些公司也用Apache。这是常用的HTTP服务器和反向代理服务器。Nginx是用来提供静态资源的服务,Nginx接收到来自浏览器的请求以后,判断这个请求是否是静态资源(以JS、CSS、HTML、PNG等结尾的静态文件),如果是,则Nginx直接返回相应文件;如果不是静态资源,是动态请求,比如,请求某一个日志的内容,则Nginx会把请求转发给Tomcat来处理。
Tomcat,是处理动态的HTTP请求,调用各种其他服务,完成相应的任务,并返回HTTP响应给Nginx。如果涉及到写日志、读日志等数据相关的操作,就需要对数据库进行读写。另外,由于这些动态请求也会依赖一些第三方服务,比如说要调用支付宝的支付服务,那么它就会再发起一个HTTP请求到支付宝的对外服务器。它处理完整个逻辑之后,就会把相应的内容返回给Nginx,然后由Nginx返回给浏览器。
Mysql数据库,将各种数据有序的管理起来,并对其他应用提供统一的接口和服务。
2.LNMT架构部署
此处主要介绍搭建环境的思路,更详细的配置步骤不再赘述。
1)申请虚拟机器
申请两台虚拟机A和B,机器A作为Nginx服务器+Mysql服务器;机器B作为2台Tomcat服务器。
2)在机器A上安装和配置Nginx
下载并安装Nginx
配置环境变量
启动Nginx
3在机器A上安装Mysql
下载安装包并解压
添加环境变量
初始化数据库
启动Mysql
4)在机器B上部署两台Tomcat
关闭防火墙和selinux
安装jdk环境
下载Tomcat并解压两次,目录不同
两台Tomcat建立软链接
修改其中一台Tomcat的配置文件server.xml,避免端口冲突。server.xml配置的是地址、端口、最大连接数、编译好的应用程序目录等信息
启动Tomcat服务
验证部署成功,即浏览器输入ip地址+端口号能成功访问
5)配置Nginx
配置负载均衡和两个Tomcat的反向代理
检查语法并加载Nginx
验证配置成功
总结
对于测试人员来说,对于这一整个机制需要理解,比如,各个工具的作用是什么,各个配置文件的意义是什么,各块的配置是怎么连起来的。
在搭建测试环境的过程中要多跟开发、运维沟通。测试环境的搭建和维护处在重要的位置,它的好坏直接影响测试结果的真实性和准确性。维护测试环境需要大量的精力,不是一个人能完成的,需要我们大家积极配合。