【专业测试技能】全流程掌握:部署测试环境的策略与实践

简介: 本文分享了关于部署测试环境的策略与实践。文章讨论了部署测试环境的全过程,包括服务如MySQL、Redis、Zookeeper等的部署,以及解决服务间的依赖和兼容问题。文中还介绍了使用Jenkins、Docker等工具进行部署的方法,并通过实战案例讲解了如何创建和管理Jenkins Job、配置代理服务器Nginx、进行前后端服务的访问和优化。最后,作者强调了提问的重要性,并鼓励大家通过互联网解决遇到的问题。

一、前提概要

题主从事了10+年的测试岗位,来谈谈在公司如何整明白部署应用服务(环境)?因为在面试的时候,都会遇到提问:会部署测试环境吗?那你因为回答会吗?还是不会吗?不可能的,大多数测试人员从未完整的部署过测试环境,小公司由开发提供测试环境,大一点的公司可能还有运维,或者资深一点的测试大佬提供测试环境。先不卖关子了,部署环境其实应该包含了部署服务的全过程,如mysql、redis、zookeeper、rocketmq、activemq、java程序等等,它们单个看就是一个个的服务,但是组成一块作为一个完整的服务器所包含的,这就叫环境。然而最痛苦的不是部署一个个的服务,而是需要解决部署单个服务与系统、版本、依赖库之间所遇到的问题,或者是服务与服务之间的依赖/兼容问题。

二、隐藏的技能树

测试人员部署环境最应该掌握的技能,应该是熟练使用windows/linux系统下的操作指令及部署辅助工具的使用,如jenkins、docker可视化平台等等,例如某些需求,你需要知道jenkins在哪里配置系统环境变量、该使用哪个插件、如何分配用户权限、创建正确的job等等,以linux系统为例,掌握了它的基本操作指令,就需要进阶shell脚本开发,譬如部署java程序;复杂点的就是需要一键安装nginx\mysql\redis等等,那么如何才能掌握这几项技能呢?唯手熟尔!

三、实战出真知

  • jenkins这个工具呢,不出意外的话是部署在linux服务器的,且永不停机,所以也就断绝了部署在本机的可能,至于它的部署方式呢,这里介绍三种:
# a> 部署tomcat,将下载的jenkins.war包放置在tomcat/webapps目录下,启动tomcat服务即可;tomcat就会deploy部署jenkins服务,使用tomcat默认的8080端口即可访问jenkins服务;
# b> jenkins.war是个java项目,这个不要忘记了,那么它需要jvm虚拟机环境,所以它是可以通过java -jar jenkins.war来启动服务的;
# c> 这里需要说到docker容器,在linux服务器安装docker服务之后,就可以docker pull jenkins镜像,然后启动容器,这里不过多介绍,也实属这个方式最简单;但也免不了复杂;
# d> 应该还有第四种方式,那就是yum,但是需要找到对应linux系统版本的repo源,才能一键安装部署:yum install -r jenkins
[root@localhost /]# sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
[root@localhost /]# sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
[root@localhost /]# yum install fontconfig java-11-openjdk
[root@localhost /]# yum install jenkins
  • jenkins部署好了,接下来就是实操:创建job,前提需要准备很多插件,因为一开始的它并没有很多选择,如创建job的风格,一个自由风格的项目?
# a> 目前大多数后台是由java语言开发的,它的jar依赖也是由maven来托管的,所以maven风格的项目就需要有maven的插件;
# b> 同样对于个性化定制,如有你的项目团队是docker容器部署的服务,那还要jenkins支持docker的相关插件;
# c> 说道个性化定制,那么在每次构建的时候,服务git分支如何变更,参数化构建也是必不可少;
# d> 你的git仓库如何能被jenkins连接呢?是不是还需要git服务器呢?
# e> 前端项目不要忘了,它还有很多操作,nodejs环境少不了npm来构建部署前端项目。

对于高手而言,一个自由风格的job项目就够了,不管是前端还是后端,它都少不了插件的支持。
在这里插入图片描述

  • 你以为部署服务就这样结束了吗?还不够,顶多算完成了2/5,为啥?前后端服务你都能正确访问了吗?这里需要了解一个叫代理服务器的东西:nginx,静态代理、动态代理及更深层次的负载均衡。
# a> 安装nginx、配置nginx访问静态资源、动态资源。
location / {
   
   
        root /data/www/html/dist/ultrontech;
        index index.html index.htm;
        try_files $uri $uri/ /index.html;
    }

 location ^~/api {
   
   
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header Http-referer $http_referer;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    #if ($remote_addr = "113.19.32.129") {
   
   
        #   proxy_pass http://127.0.0.1:9101;
       #return 500 "服务在升级~~~";
    #}
        if ($http_user_agent ~* LWP::Simple|BBBike|wget|curl) {
   
   
            return 444;
        }
        proxy_pass http://servername;
    }
  • 前面两步干啥了?把git仓库的代码pull下来,并且通过前后端构建命令打包好,顶多移动到指定服务器目录下,这时还不能访问,所以结合第三步,需要构建job能到nginx配置能访问的目录。
# 初次部署服务、配置nginx,用到的两个命令:
[root@localhost /]# nginx -t # 测试配置文件是否正确,否则会给出错误的行
[root@localhost /]# nginx -s reload # 检查配置没问题之后,就需要重新加载配置文件,也就相当于重启nginx服务
  • 这时,该访问ip就访问ip,配置了有域名就访问域名,能正确渲染页面,请求到后台服务,那么部署测试环境就算是完成了;第三步只说前面完成了2/5,到这也没有完成整个1啊,姑且算个4/5。

  • 要求这么高吗?剩下的1/5体现在shell脚本、本地域名映射、以及需要做的一系列优化,如前面提到的job参数化构建、远程服务器配置等等操作。

四、总结一句话

看似简单的几个步骤,但是其中滋味只有真正去实践过才敢说知道,这可一点也不简单,有一句话很重要,即使你不知道,但一定要知道如何提问?因为如今的互联网能解决99%的问题,剩下的1%只不过是别人没分享出来而已。共勉吧!

相关文章
|
4天前
|
敏捷开发 人工智能 Devops
探索自动化测试的高效策略与实践###
当今软件开发生命周期中,自动化测试已成为提升效率、保障质量的关键工具。本文深入剖析了自动化测试的核心价值,探讨了一系列高效策略,包括选择合适的自动化框架、设计可维护的测试脚本、集成持续集成/持续部署(CI/CD)流程,以及有效管理和维护测试用例库。通过具体案例分析,揭示了这些策略在实际应用中的成效,为软件测试人员提供了宝贵的经验分享和实践指导。 ###
|
3天前
|
人工智能 前端开发 测试技术
探索软件测试中的自动化框架选择与优化策略####
本文深入剖析了当前主流的自动化测试框架,通过对比分析各自的优势、局限性及适用场景,为读者提供了一套系统性的选择与优化指南。文章首先概述了自动化测试的重要性及其在软件开发生命周期中的位置,接着逐一探讨了Selenium、Appium、Cypress等热门框架的特点,并通过实际案例展示了如何根据项目需求灵活选用与配置框架,以提升测试效率和质量。最后,文章还分享了若干最佳实践和未来趋势预测,旨在帮助测试工程师更好地应对复杂多变的测试环境。 ####
18 4
|
3天前
|
机器学习/深度学习 人工智能 jenkins
软件测试中的自动化与持续集成实践
在快速迭代的软件开发过程中,自动化测试和持续集成(CI)是确保代码质量和加速产品上市的关键。本文探讨了自动化测试的重要性、常见的自动化测试工具以及如何将自动化测试整合到持续集成流程中,以提高软件测试的效率和可靠性。通过案例分析,展示了自动化测试和持续集成在实际项目中的应用效果,并提供了实施建议。
|
4天前
|
Java 测试技术 持续交付
探索自动化测试在软件开发中的关键作用与实践
在现代软件开发流程中,自动化测试已成为提升产品质量、加速交付速度的不可或缺的一环。本文深入探讨了自动化测试的重要性,分析了其在不同阶段的应用价值,并结合实际案例阐述了如何有效实施自动化测试策略,以期为读者提供一套可操作的实践指南。
|
9天前
|
机器学习/深度学习 前端开发 测试技术
探索软件测试中的自动化测试框架选择与优化策略####
本文深入探讨了在当前软件开发生命周期中,自动化测试框架的选择对于提升测试效率、保障产品质量的重要性。通过分析市场上主流的自动化测试工具,如Selenium、Appium、Jest等,结合具体项目需求,提出了一套系统化的选型与优化策略。文章首先概述了自动化测试的基本原理及其在现代软件开发中的角色变迁,随后详细对比了各主流框架的功能特点、适用场景及优缺点,最后基于实际案例,阐述了如何根据项目特性量身定制自动化测试解决方案,并给出了持续集成/持续部署(CI/CD)环境下的最佳实践建议。 --- ####
|
6天前
|
测试技术 持续交付 Docker
探索软件测试中的自动化策略与挑战
在当今快节奏的软件开发周期中,自动化测试已成为提高产品质量和缩短上市时间的关键。然而,实施有效的自动化测试策略并非易事,它面临着技术选型、脚本维护、环境配置等一系列挑战。本文深入探讨了自动化测试的重要性,分析了常见的自动化测试工具和框架,并讨论了在构建和维护自动化测试体系过程中遇到的主要难题及其解决方案。通过案例分析,本文旨在为软件测试工程师提供实用的指导和建议,以优化他们的自动化测试实践。
|
4天前
|
Web App开发 敏捷开发 测试技术
探索自动化测试的奥秘:从理论到实践
【10月更文挑战第39天】在软件质量保障的战场上,自动化测试是提升效率和准确性的利器。本文将深入浅出地介绍自动化测试的基本概念、必要性以及如何实施自动化测试。我们将通过一个实际案例,展示如何利用流行的自动化测试工具Selenium进行网页测试,并分享一些实用的技巧和最佳实践。无论你是新手还是有经验的测试工程师,这篇文章都将为你提供宝贵的知识,帮助你在自动化测试的道路上更进一步。
|
4天前
|
敏捷开发 Java 测试技术
探索自动化测试:从理论到实践
【10月更文挑战第39天】在软件开发的海洋中,自动化测试是一艘能够带领团队高效航行的船只。本文将作为你的航海图,指引你理解自动化测试的核心概念,并分享一段实际的代码旅程,让你领略自动化测试的魅力和力量。准备好了吗?让我们启航!
|
9天前
|
测试技术 API Android开发
探索软件测试中的自动化框架选择与实践####
本文深入探讨了软件测试领域内,面对众多自动化测试框架时,如何依据项目特性和团队需求做出明智选择,并分享了实践中的有效策略与技巧。不同于传统摘要的概述方式,本文将直接以一段实践指南的形式,简述在选择自动化测试框架时应考虑的核心要素及推荐路径,旨在为读者提供即时可用的参考。 ####
|
7天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
36 3

热门文章

最新文章