● ○ ●你会搭建测试环境吗?● ○ ●前端
导语:不少人在面试软件测试的过程当中,常常被问到“你会搭建测试环境吗”?面对这样的提问,你知道怎么回答么?web
● ○ ●如何回答● ○ ●面试
面试的时候,遇到这样的提问,不少人的都会感受脑子一下一片空白,或者星星点点,不知道从何提及。一方面不知道面试官问这个问题的意图是什么?也不知道他想获得的答案是什么?更加不知道该从哪些方面来回答。做为一个测试行业从业8年有余的测试人员,我想跟你们分享一些个人经验和见解。数据库
首先,毋庸置疑的是,面试官问这个问题,想要获得的是你确定的答案,但愿你是一个会搭建测试环境的优秀测试工程师。QA不论是作什么类型的测试,最基础的功能测试,须要搭建测试环境;进阶部分的性能压力测试,对搭建环境的要求更高。因此搭建测试环境是优秀测试工程师的必备技能之一,也是QA开展测试工做的前置条件。固然有些公司可能会有运维或者研发部门帮忙准备好测试环境,可是QA若是一味依赖别的部门,就会大大的局限测试工做的开展,若是别的部门没有时间或者进度滞后,会直接影响到测试工做的进度和效率;并且测试环境若是不是QA负责维护的,后期扩展业务须要优化测试环境的时候,或者遇到问题要调试的时候,都须要依赖其余部门,会致使测试工做不独立,也会显得测试工做人员不专业。后端
● ○ ●需掌握的知识● ○ ●tomcat
了解了QA具有搭建测试环境能力的重要性,那么真正要具有搭建测试环境的能力,须要掌握哪些技能和知识呢?服务器
这就须要咱们先知道测试环境是什么。测试环境(Testing Environment),是指为了完成软件测试工做所必需的计算机硬件、软件、网络设备、历史数据的总称,简而言之,测试环境=硬件+软件+网络+数据准备+测试工具。显而易见,咱们要学会搭建测试环境,须要具有这5种的技能和知识。因此,咱们针对每个知识领域你们须要掌握的知识点及其深度和广度,给你们作个详细的介绍,但愿能给你们做一个指引,知道本身该努力的方向。网络
硬件,通常测试会涉及到的硬件就是计算机系统相关的内容,好比Windows系统,Linux系统和MacOS系统。测试环境能够部署在以上任何一种系统上,根据当前被测软件的具体需求而定。通常软件的运行平台,可能会更多的在Windows系统上;可是相关服务的搭建,好比软件运行须要交互的服务,或者是软件后台的承载服务,都会在Linux系统上搭建。因此Linux系统相关的命令和操做是QA必需要知道并且熟练的。Linux系统有不少类型,如CentOS,Ubuntu,Redhat,Debian等,根据产品的具体需求选择合适的系统就能够。另外,咱们最好还要知道怎么安装Linux系统,由于在不少公司会给QA提供设备资源,须要QA根据需求在服务器上部署Linux系统。 这里还须要注意的一点,就是软件运行对硬件的要求。一般软件说明书上会明确软件对硬件的需求,好比CPU个数,内存大小,硬盘大小,网卡个数等信息,若是没有明确要求,QA能够跟开发或者产品沟通确认。因此,关于硬件这块,须要你们对各类操做系统有所了解,特别是可以操做Linux系统经常使用命令,可以安装系统,而且配置IP、路由等基础网络(这个在网络部分会再重点讲到),可以在各类系统上安装和搭建经常使用的服务。并发
软件,包括当前被测的软件以及相关依赖和交互的软件。当前被测软件的部署,通常在部署好的Linux系统上安装好服务以后,能够直接在前端经过web或者APP访问,后端只要部署完成了,前端的运行仍是比较简单的;依赖和交互的软件,通常是一些支持的软件,好比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等,也能够学习而且使用起来。总之,工具是辅助测试的好帮手,灵活使用可让你的测试效率事半功倍。固然,这里想补充一句,工具的重要性确实无可厚非,可是你们仍是不要盲目崇拜,一味追求工具的学习和使用,由于工具再好也仅仅就是一个工具而已,仍是须要专业测试人员应用良好的测试思路和理念去恰到其分地使用到测试中,才能将其做用发挥到极致。
● ○ ●面试技巧● ○ ●
讲到这里,可能会有不少人都以为压力山大,毕竟要掌握这么多专业的知识,对任何一我的来讲都不是一件易事。若是可以所有掌握当然是完美,可是对于经验没有那么丰富的人,甚至有不少从事测试多年的测试工程师,都没法自信的笃定本身能够在这全部的知识领域里游刃有余。因此,在你成长成为一个全能型优秀测试工程以前,被面试官问到这种问题要怎么办呢?这里,我能够分享给你们一些小技巧。
首先,去面试以前,先了解你要去面试的公司具体是个什么类型的公司。其实这点,不止针对这个问题,应该是针对全部的面试,都应该先弄清楚你要去面试的公司主要业务和职位要求,有针对的去准备本身的知识点和回答问题的方向,这是面试的一个必备智慧。好,回到咱们今天要讨论的环境搭建的问题,由于不一样的公司所须要你具有的搭建测试环境的能力是不同的。好比是一个传统的网络设备公司,如路由交换,防火墙等业务产品,他会要求你更偏向于的网络基础知识多一些,如网络拓扑的搭建和配置,相关协议的使用等,因此你能够提早作好相关知识的准备;若是是传统的Windows软件的公司,搭建测试环境大部分都是跟系统相关的,也就是上面咱们讲到的硬件部分要求的内容。那么你就能够提早把Linux系统的相关的知识抓紧时间恶补一下;若是是时下最流行的互联网公司,测试web应用,PC 端APP和移动端APP软件的较多。搭建这样的测试环境,则侧重更多的是Linux系统知识,还有相关服务的搭建以及各类工具的使用。 固然,这种分析也只是一个大概的总结,不是绝对正确也不能涵盖全部的状况,因此你们作一个参考就好。不过,先分析公司类型和业务,针对岗位需求提早作准备的这种思路,确定是百利而无一害的。
另外,面试以前,你们必定要根据本身已有的工做经验和知识体系作好相关的梳理。大部分面试官,都会要你根据工做经验描述搭建测试环境的过程,那么你就须要在实际项目经验的基础上,结合本身的知识储备,而后再有针对性的组织语言去迎合当前面试公司的要求,总结出来一份漂亮并且能知足对方预期的答案。这么说可能会有些抽象,咱们能够来看个具体实例。
● ○ ●实例● ○ ●
面试官:你之前公司测试须要本身搭建测试环境么?你会本身独立搭建测试环境么?
你:咱们原来公司都是测试人员本身搭建测试环境的,由于这样子的测试工做能比较自主独立的开展,并且后期的维护也会比较方便一些(首先,确定的回答了问题,告知你是会搭建测试环境的,并且也表达了你认为测试人员会搭建测试环境的必要性)。咱们通常会在拿到测试需求的时候,根据需求先把准备环境好。由于我上一家公司是一家防火墙公司,有本身的设备,也有相应的web应用和APP,因此我会同时测试这些前端应用以及防火墙设备服务(先介绍一下公司的业务类型以及本身的测试的产品,以方便后面讲环境搭建的重点,这里能够根据本身的实际状况而定)。因此准备这样的测试环境,咱们会须要准备两台Linux服务器分别模拟客户端和后端服务器,搭建好测试拓扑,配通网络就能够(代表网络基础配置能力你是具有的);而后Linux系统咱们通常也会本身安装,并且还要准备好相应的服务(表达出Linux系统的操做和经常使用服务搭建也是OK的);而后咱们会用客户端模拟一些用户流量,也会在Windows上安装一些经常使用的测试工具来模拟用户数据来测试产品(经常使用测试工具也是没有问题的)。这样最初的测试环境搭建基本就完成了。
面试官:因此Linux系统你是会用的对吧?大家通常会安装一些什么服务?具体操做步骤能简单描述一下么?(他会根据你的描述挑出来他感兴趣的点来细化的问你,好比一些具体的知识细节)
这个时候,就须要你回答具体的细节了,考验你的技术硬核能力了。固然,若是遇到本身不是很清楚的,必定要拈轻怕重,聪明的引导面试官问你擅长的领域,好比“这个我不是太了解,可是我用过另一个xxx,这个我比较熟悉”
......
● ○ ●总结● ○ ●
总而言之,面试官问你这样的问题,一方面是想考察你的技术能力,另外一方面也想考察你的表达能力。因此,你们能够对照一下上面列出来的知识点,若是感受本身的知识储备不足,能够趁面试以前好好补习一下;若是发现不少知识领域本身都有涉猎,可是回答的时候不知道从哪里开始,那就根据本身的经验和实际状况,时常总结和沉淀,梳理本身的知识体系。
记住,毫无准备的面试,成功率都不会过高;善于总结积累的人,运气都不会太差!