• 0
  • 0
分享


  面试的时候,被问到你会搭建测试环境吗?相信很多人的都会感觉脑子一下一片空白,或者星星点点,不知道从何说起。

  一方面不知道面试官问这个问题的意图是什么?也不知道他想得到的答案是什么?更加不知道该从哪些方面来回答。

  作为一个测试行业从业8年有余的测试人员,我想跟大家分享一些我的经验和看法。

  首先,毋庸置疑的是,面试官问这个问题,想要得到的是你肯定的答案,希望你是一个会搭建测试环境的优秀测试工程师。

  QA不管是做什么类型的测试,最基础的功能测试,需要搭建测试环境;进阶部分的性能压力测试,对搭建环境的要求更高。

  所以搭建测试环境是优秀测试工程师的必备技能之一,也是QA开展测试工作的前置条件。

  当然有些公司可能会有运维或者研发部门帮忙准备好测试环境,但是QA如果一味依赖别的部门,就会大大的局限测试工作的开展,如果别的部门没有时间或者进度滞后,会直接影响到测试工作的进度和效率;而且测试环境如果不是QA负责维护的,后期扩展业务需要优化测试环境的时候,或者遇到问题要调试的时候,都需要依赖其他部门,会导致测试工作不独立,也会显得测试工作人员不专业。

  了解了QA具备搭建测试环境能力的重要性,那么真正要具备搭建测试环境的能力,需要掌握哪些技能和知识呢?

  这就需要我们先知道测试环境是什么?

  测试环境(Testing Environment),是指为了完成软件测试工作所必需的计算机硬件、软件、网络设备、历史数据的总称,简而言之,测试环境=硬件+软件+网络+数据准备+测试工具。

  显而易见,我们要学会搭建测试环境,需要具备这5种的技能和知识。

  所以,我们针对每一个知识领域大家需要掌握的知识点及其深度和广度,给大家做个详细的介绍,希望能给大家作一个指引,知道自己该努力的方向。

  硬件,一般测试会涉及到的硬件就是计算机系统相关的内容,比如Windows系统,Linux系统和MacOS系统。

  测试环境可以部署在以上任何一种系统上,根据当前被测软件的具体需求而定。

  一般软件的运行平台,可能会更多的在Windows系统上;但是相关服务的搭建,比如软件运行需要交互的服务,或者是软件后台的承载服务,都会在Linux系统上搭建。

  所以Linux系统相关的命令和操作是QA必须要知道而且熟练的。

  Linux系统有很多类型,如CentOS,Ubuntu,Redhat,Debian等,根据产品的具体需求选择合适的系统就可以。

  另外,我们最好还要知道怎么安装Linux系统,因为在很多公司会给QA提供设备资源,需要QA根据需求在服务器上部署Linux系统。 (不会安装linux系统的同学也可以找我要软件还有视频安装哦)

  这里还需要注意的一点,就是软件运行对硬件的要求。

  通常软件说明书上会明确软件对硬件的需求,比如CPU个数,内存大小,硬盘大小,网卡个数等信息,如果没有明确要求,QA可以跟开发或者产品沟通确认。

  所以,关于硬件这块,需要大家对各种操作系统有所了解,特别是能够操作Linux系统常用命令,能够安装系统,并且配置IP、路由等基础网络(这个在网络部分会再重点讲到),能够在各种系统上安装和搭建常用的服务。

  软件,包括当前被测的软件以及相关依赖和交互的软件。

  当前被测软件的部署,一般在部署好的Linux系统上安装好服务之后,可以直接在前端通过web或者APP访问,后端只要部署完成了,前端的运行还是比较简单的;依赖和交互的软件,一般是一些支持的软件,比如JDK,tomcat,数据库等。

  怎么安装部署,大家可以去自行百度,网上相关的教程很多,如果找不到,我可以发相关资料给大家,基本上30分钟就可以搭建好JDK+tomcat+数据库。

  网络,这个可能是很多测试人员的一个知识盲区。

  网络是一个比较庞大的知识体系,涉及的内容特别多而且复杂。

  所以大家可以优先学习一些跟搭建环境密切相关的网络知识,然后自己再慢慢的去渗透和深造。

  一般公司网络环境,最基本的要求是交换和路由相关的知识。

  比如要自己搭建一个网络拓扑,使用多台网络设备(如服务器,路由交换等中间设备,客户端等),QA需要规划和配置IP地址,部署路由和VLAN等相关配置,实现网络隔离和通信,这样才可以开展正常的业务测试;另外,对于一些常用的基础网络协议,如TCP,UDP,HTTP等,最好也能有个基本的认知,因为很多服务都是基于这些基础协议实现的,知道这些能够加深自己的理解,有利于测试的作的实现。

  当然,如前面提到的,除了以上网络设备,我们还需要操作Linux的基本网络配置,如Linux IP和路由配置,Linux系统命令抓包,调试网络通信问题等,这些都是需要Linux命令和网络基础知识结合在一起使用的。

  数据准备,一般指测试数据的准备。测试数据会在测试用例设计的阶段设计好,然后软件运行的时候,作为软件输入去验证软件功能。

  如果是少量、正常的测试数据,可以直接通过手动方式模拟出来,如果是大量的用户数据的模拟,可以借助测试工具来构建,这个接下来的测试工具部分会再详细讲到。

  测试工具,是很多测试人员都比较感兴趣而且趋之若鹜的一个知识领域。

  大家执行功能测试的时候,会利用各种工具代替手工,简化和深化测试;执行压力和性能的时候,就更加需要借助测试工具模拟出来高并发、高吞吐、高持续的数据。

  由此可见,工具确实很重要也很实用,纵观大量招聘公司的职位要求,基本都有“熟悉xxx测试工具”的明确要求项。

  QA可以针对自己将要做的测试类型,选择合适的工具进行学习。

  比如你要做的是接口测试,可以选择Jmeter或者postman;你要做压力和性能测试,可以学习Loadrunner,IxLoad或者Avalanche的使用;要模拟多种协议的流量,也可以使用Linux上常用的流量测试工具,如Hping,Curl,ab等;还有一些常用的debug和抓包工具,如fiddler,wireshark等,也可以学习并且使用起来。

  总之,工具是辅助测试的好帮手,灵活使用可以让你的测试效率事半功倍。

  当然,这里想补充一句,工具的重要性确实无可厚非,但是大家还是不要盲目崇拜,一味追求工具的学习和使用,因为工具再好也仅仅就是一个工具而已,还是需要专业测试人员应用良好的测试思路和理念去恰到其分地使用到测试中,才能将其作用发挥到极致。

  讲到这里,可能会有很多人都觉得压力山大,毕竟要掌握这么多专业的知识,对任何一个人来说都不是一件易事。如果能够全部掌握固然是完美,但是对于经验没有那么丰富的人,甚至有很多从事测试多年的测试工程师,都无法自信的笃定自己可以在这所有的知识领域里游刃有余。



作者:Py猫的故事   

来源:http://www.51testing.com/html/51/n-4477351.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 一、App启动速度优化1.1 Google 加速方案利用提前展示出来的Window,快速展示出来一个界面,给用户快速反馈的体验;避免在启动时做密集沉重的初始化(Heavy app initialization);定位问题:避免I/O操作、反序列化、网络操作、布局嵌套等。1.2 通用加速方案:利用主题快速显示界面;异步初始化组件;梳理业务逻辑,延迟初始化组件、操作;正确使用线程;去掉无用代码、重复逻辑等1.3 启动方式:冷启动当启动应用时,后台没有该应用的进程(常见如:进程被杀、首次启动等),这时系统会重新创建一个新的进程分配给该应用暖启动当启动应用时,后台已有该应用的进程(常见如:按back键...
            0 0 1887
            分享
          • 先通过一个简单的类比说个好理解的,这个比喻是我从美版知乎Quora上看到的,觉得比较形象、好理解拿来用用。可以把WebDriver驱动浏览器类比成出租车司机开出租车。类比在开出租车时有三个角色:乘客:他/她告诉出租车司机去哪里,大概怎么走 出租车司机:他按照乘客的要求来操控出租车 出租车:出租车按照司机的操控完成真正的行驶,把乘客送到目的地在WebDriver中也有类似的三个角色:自动化测试代码:自动化测试代码发送请求给浏览器的驱动(比如火狐驱动、谷歌驱动) 浏览器驱动:它来解析这些自动化测试的代码,解析后把它们发送给浏览器 浏览器:执行浏览器驱动发来的指令,并最终完成工程师想要的操作。所以在...
            0 0 1239
            分享
          • 每个人再工作的时候最大的希望就是花最少的时间去做好事情,方便自己方便他人。最近有被一个实习生笑到,他发文件给我从来只是在企微上悄悄发送,发完之后没有任何一句话,也不口头留一句,即使他工位就在我的斜对面。三番五次之后,我忍不住跟他说了句,你每次发完文件不能跟我说一下吗?其实这样我无非就是想确认几件事情,这样我好开展后续工作:首先你把文件发给我了,肯定是需要我回应的,等同于把一件任务的接力棒传到了我这里,那如果因为消息太多我没看到,这项任务是不是就延迟了呢?其次,把文件发给我之后,我会稍微瞄一眼,大概回复他一个时间,比如几点看完可以双发一起沟通修改的地方。最后,很多时候打字沟通的效果肯定是远远不如...
            1 1 13529
            分享
          • 通常情况下面试会问到类似的问题,最主要的并不是要说出多么多的测试点,而应该展现的是你的思考方式。一般对于这类型的问题,会从以下几方面入手:功能、外观、性能、安全、兼容、易用性,当然也可能会有一些特殊的测试,因此要结合实际情况考虑。那么对于登陆界面的测试,也主要从以下方面入手:1、功能测试对于登陆界面,常用的功能有账户及密码输入框、注册链接、忘记密码链接、其他方式登陆等,那么我们就要逐一测试这些功能能否正常使用、链接能否正常跳转、提示是否正常等。输入正确的用户账户和密码,能够成功登陆并跳转至正确页面;输入错误的用户账户或密码,校验失败,提示错误信息;什么都不输入,直接点登陆,检查提示信息;检查注...
            0 0 1354
            分享
          •   讲到这个接口测试的原理的话,我们先要搞清楚,我们去访问客户端跟服务端它之间交互的一个原理是什么?  首先给大家举一个例子,比如我在自己的电脑上,输入www.zhihu .com  在知乎里面我去输入一个(软件测试),这个是我要搜索的一个内容。点击搜索一下,我就得到了相关Python的一些搜索的结果,那么我在执行这么一个过程的时候,那么它做了一个什么样的操作呢?  我们的客户端和服务端,到底有一个什么样的交互跟数据的传递呢?我们用画图的方式来解释一下。(图糙理不糙)  我们在知乎搜索里面是不是输入了一个软件测试,我们把这个输入的Python内容是不是传给了服务端了。  1.通过网络把我在PC...
            0 0 1049
            分享
      • 51testing软件测试圈微信