導(dǎo)語:很多人在面試軟件測試的過程中,經(jīng)常被問到“你會搭建測試環(huán)境嗎”面對這樣的提問,你知道怎么回答么?
一、如何回答
面試的時候,遇到這樣的提問,很多人的都會感覺腦子一下一片空白,或者星星點點,不知道從何說起。
一方面不知道面試官問這個問題的意圖是什么?
也不知道他想得到的答案是什么?
更加不知道該從哪些方面來回答。
作為一個測試行業(yè)從業(yè)8年有余的測試人員,我想跟大家分享一些我的經(jīng)驗和看法。
首先,毋庸置疑的是,面試官問這個問題,想要得到的是你肯定的答案,希望你是一個會搭建測試環(huán)境的優(yōu)秀測試工程師。
QA不管是做什么類型的測試,最基礎(chǔ)的功能測試,需要搭建測試環(huán)境;
進階部分的性能壓力測試,對搭建環(huán)境的要求更高。
所以搭建測試環(huán)境是優(yōu)秀測試工程師的必備技能之一,也是QA開展測試工作的前置條件。
當(dāng)然有些公司可能會有運維或者研發(fā)部門幫忙準(zhǔn)備好測試環(huán)境,但是QA如果一味依賴別的部門,就會大大的局限測試工作的開展。
如果別的部門沒有時間或者進度滯后,會直接影響到測試工作的進度和效率;
而且測試環(huán)境如果不是QA負(fù)責(zé)維護的,后期擴展業(yè)務(wù)需要優(yōu)化測試環(huán)境的時候,或者遇到問題要調(diào)試的時候,都需要依賴其他部門,會導(dǎo)致測試工作不獨立,也會顯得測試工作人員不專業(yè)。

二、需掌握知識
了解了QA具備搭建測試環(huán)境能力的重要性,那么真正要具備搭建測試環(huán)境的能力,需要掌握哪些技能和知識呢?
這就需要我們先知道測試環(huán)境是什么。
測試環(huán)境(Testing Environment),是指為了完成軟件測試工作所必需的計算機硬件、軟件、網(wǎng)絡(luò)設(shè)備、歷史數(shù)據(jù)的總稱,簡而言之,測試環(huán)境=硬件+軟件+網(wǎng)絡(luò)+數(shù)據(jù)準(zhǔn)備+測試工具。
顯而易見,我們要學(xué)會搭建測試環(huán)境,需要具備這5種的技能和知識。
所以,我們針對每一個知識領(lǐng)域大家需要掌握的知識點及其深度和廣度,給大家做個詳細(xì)的介紹,希望能給大家作一個指引,知道自己該努力的方向。
◆ 硬件
一般測試會涉及到的硬件就是計算機系統(tǒng)相關(guān)的內(nèi)容,比如windows系統(tǒng),linux系統(tǒng)和macOS系統(tǒng)。
測試環(huán)境可以部署在以上任何一種系統(tǒng)上,根據(jù)當(dāng)前被測軟件的具體需求而定。
一般軟件的運行平臺,可能會更多的在Windows系統(tǒng)上;但是相關(guān)服務(wù)的搭建,比如軟件運行需要交互的服務(wù),或者是軟件后臺的承載服務(wù),都會在Linux系統(tǒng)上搭建。
所以Linux系統(tǒng)相關(guān)的命令和操作是QA必須要知道而且熟練的。
Linux系統(tǒng)有很多類型,如centos,Ubuntu,Redhat,Debian等
根據(jù)產(chǎn)品的具體需求選擇合適的系統(tǒng)就可以。
另外,我們最好還要知道怎么安裝Linux系統(tǒng),因為在很多公司會給QA提供設(shè)備資源,需要QA根據(jù)需求在服務(wù)器上部署Linux系統(tǒng)。
這里還需要注意的一點,就是軟件運行對硬件的要求。
通常軟件說明書上會明確軟件對硬件的需求,比如CPU個數(shù),內(nèi)存大小,硬盤大小,網(wǎng)卡個數(shù)等信息,如果沒有明確要求,QA可以跟開發(fā)或者產(chǎn)品溝通確認(rèn)。
所以,關(guān)于硬件這塊,需要大家對各種操作系統(tǒng)有所了解,特別是能夠操作Linux系統(tǒng)常用命令,能夠安裝系統(tǒng),并且配置IP、路由等基礎(chǔ)網(wǎng)絡(luò)(這個在網(wǎng)絡(luò)部分會再重點講到),能夠在各種系統(tǒng)上安裝和搭建常用的服務(wù)。
◆ 軟件
包括當(dāng)前被測的軟件以及相關(guān)依賴和交互的軟件。
當(dāng)前被測軟件的部署,一般在部署好的Linux系統(tǒng)上安裝好服務(wù)之后,可以直接在前端通過web或者App訪問,后端只要部署完成了,前端的運行還是比較簡單的;
依賴和交互的軟件,一般是一些支持的軟件,比如JDK,Tomcat,數(shù)據(jù)庫等。
怎么安裝部署,大家可以去自行百度,網(wǎng)上相關(guān)的教程很多。

三、需掌握技能
◆ 網(wǎng)絡(luò)
這個可能是很多測試人員的一個知識盲區(qū)。
網(wǎng)絡(luò)是一個比較龐大的知識體系,涉及的內(nèi)容特別多而且復(fù)雜。
所以大家可以優(yōu)先學(xué)習(xí)一些跟搭建環(huán)境密切相關(guān)的網(wǎng)絡(luò)知識,然后自己再慢慢的去滲透和深造。
一般公司網(wǎng)絡(luò)環(huán)境,最基本的要求是交換和路由相關(guān)的知識。
比如要自己搭建一個網(wǎng)絡(luò)拓?fù)洌褂枚嗯_網(wǎng)絡(luò)設(shè)備(如服務(wù)器,路由交換等中間設(shè)備,客戶端等)。
QA需要規(guī)劃和配置IP地址,部署路由和VLAN等相關(guān)配置,實現(xiàn)網(wǎng)絡(luò)隔離和通信,這樣才可以開展正常的業(yè)務(wù)測試;
另外,對于一些常用的基礎(chǔ)網(wǎng)絡(luò)協(xié)議,如TCP,UDP,HTTP等,最好也能有個基本的認(rèn)知。
因為很多服務(wù)都是基于這些基礎(chǔ)協(xié)議實現(xiàn)的,知道這些能夠加深自己的理解,有利于測試的作的實現(xiàn)。
當(dāng)然,如前面提到的,除了以上網(wǎng)絡(luò)設(shè)備,我們還需要操作Linux的基本網(wǎng)絡(luò)配置。
◆ Linux IP和路由配置
◆ Linux系統(tǒng)命令抓包
◆ 調(diào)試網(wǎng)絡(luò)通信問題等
這些都是需要Linux命令和網(wǎng)絡(luò)基礎(chǔ)知識結(jié)合在一起使用的。
◆ 數(shù)據(jù)準(zhǔn)備
一般指測試數(shù)據(jù)的準(zhǔn)備。
測試數(shù)據(jù)會在測試用例設(shè)計的階段設(shè)計好,然后軟件運行的時候,作為軟件輸入去驗證軟件功能。
如果是少量、正常的測試數(shù)據(jù),可以直接通過手動方式模擬出來,如果是大量的用戶數(shù)據(jù)的模擬,可以借助測試工具來構(gòu)建,這個接下來的測試工具部分會再詳細(xì)講到。
◆ 測試工具
是很多測試人員都比較感興趣而且趨之若鶩的一個知識領(lǐng)域。
大家執(zhí)行功能測試的時候,會利用各種工具代替手工,簡化和深化測試;
執(zhí)行壓力和性能的時候,就更加需要借助測試工具模擬出來高并發(fā)、高吞吐、高持續(xù)的數(shù)據(jù)。
由此可見,工具確實很重要也很實用,縱觀大量招聘公司的職位要求,基本都有“熟悉xxx測試工具”的明確要求項。
QA可以針對自己將要做的測試類型,選擇合適的工具進行學(xué)習(xí)。
比如你要做的是接口測試,可以選擇Jmeter或者postman;
你要做壓力和性能測試,可以學(xué)習(xí)Loadrunner,IxLoad或者Avalanche的使用;
要模擬多種協(xié)議的流量,也可以使用Linux上常用的流量測試工具,如Hping,Curl,ab等;
還有一些常用的debug和抓包工具,如fiddler,wireshark等,也可以學(xué)習(xí)并且使用起來。
總之,工具是輔助測試的好幫手,靈活使用可以讓你的測試效率事半功倍。
當(dāng)然,這里想補充一句,工具的重要性確實無可厚非,但是大家還是不要盲目崇拜,一味追求工具的學(xué)習(xí)和使用,因為工具再好也僅僅就是一個工具而已。
還是需要專業(yè)測試人員應(yīng)用良好的測試思路和理念去恰到其分地使用到測試中,才能將其作用發(fā)揮到極致。

四、面試技巧
講到這里,可能會有很多人都覺得壓力山大,畢竟要掌握這么多專業(yè)的知識,對任何一個人來說都不是一件易事。
如果能夠全部掌握固然是完美,但是對于經(jīng)驗沒有那么豐富的人,甚至有很多從事測試多年的測試工程師,都無法自信的篤定自己可以在這所有的知識領(lǐng)域里游刃有余。
所以,在你成長成為一個全能型優(yōu)秀測試工程之前,被面試官問到這種問題要怎么辦呢?
這里,我可以分享給大家一些小技巧。
首先,去面試之前,先了解你要去面試的公司具體是個什么類型的公司。
其實這點,不止針對這個問題,應(yīng)該是針對所有的面試,都應(yīng)該先弄清楚你要去面試的公司主要業(yè)務(wù)和職位要求,有針對的去準(zhǔn)備自己的知識點和回答問題的方向,這是面試的一個必備智慧。
好,回到我們今天要討論的環(huán)境搭建的問題,因為不同的公司所需要你具備的搭建測試環(huán)境的能力是不一樣的。
比如是一個傳統(tǒng)的網(wǎng)絡(luò)設(shè)備公司,如路由交換,防火墻等業(yè)務(wù)產(chǎn)品,他會要求你更偏向于的網(wǎng)絡(luò)基礎(chǔ)知識多一些,如網(wǎng)絡(luò)拓?fù)涞拇罱ê团渲茫嚓P(guān)協(xié)議的使用等,所以你可以提前做好相關(guān)知識的準(zhǔn)備;
如果是傳統(tǒng)的Windows軟件的公司,搭建測試環(huán)境大部分都是跟系統(tǒng)相關(guān)的,也就是上面我們講到的硬件部分要求的內(nèi)容。
那么你就可以提前把Linux系統(tǒng)的相關(guān)的知識抓緊時間惡補一下;
如果是時下最流行的互聯(lián)網(wǎng)公司,測試web應(yīng)用,PC 端APP和移動端APP軟件的較多。
搭建這樣的測試環(huán)境,則側(cè)重更多的是Linux系統(tǒng)知識,還有相關(guān)服務(wù)的搭建以及各種工具的使用。
當(dāng)然,這種分析也只是一個大概的總結(jié),不是絕對正確也不能涵蓋所有的情況,所以大家做一個參考就好。
不過,先分析公司類型和業(yè)務(wù),針對崗位需求提前做準(zhǔn)備的這種思路,肯定是百利而無一害的。
另外,面試之前,大家一定要根據(jù)自己已有的工作經(jīng)驗和知識體系做好相關(guān)的梳理。
大部分面試官,都會要你根據(jù)工作經(jīng)驗描述搭建測試環(huán)境的過程,那么你就需要在實際項目經(jīng)驗的基礎(chǔ)上,結(jié)合自己的知識儲備,然后再有針對性的組織語言去迎合當(dāng)前面試公司的要求。
總結(jié)出來一份漂亮而且能滿足對方預(yù)期的答案。
這么說可能會有些抽象,我們可以來看個具體實例。

五、實例
面試官:你以前公司測試需要自己搭建測試環(huán)境么?你會自己獨立搭建測試環(huán)境么?
你:我們原來公司都是測試人員自己搭建測試環(huán)境的,因為這樣子的測試工作能比較自主獨立的開展,而且后期的維護也會比較方便一些。
(首先,肯定的回答了問題,告知你是會搭建測試環(huán)境的,而且也表達了你認(rèn)為測試人員會搭建測試環(huán)境的必要性)。
我們一般會在拿到測試需求的時候,根據(jù)需求先把準(zhǔn)備環(huán)境好。
因為我上一家公司是一家防火墻公司,有自己的設(shè)備,也有相應(yīng)的web應(yīng)用和APP,所以我會同時測試這些前端應(yīng)用以及防火墻設(shè)備服務(wù)。
(先介紹一下公司的業(yè)務(wù)類型以及自己的測試的產(chǎn)品,以方便后面講環(huán)境搭建的重點,這里可以根據(jù)自己的實際情況而定)。
所以準(zhǔn)備這樣的測試環(huán)境,我們會需要準(zhǔn)備兩臺Linux服務(wù)器分別模擬客戶端和后端服務(wù)器,搭建好測試拓?fù)洌渫ňW(wǎng)絡(luò)就可以。
(表明網(wǎng)絡(luò)基礎(chǔ)配置能力你是具備的)
然后Linux系統(tǒng)我們一般也會自己安裝,而且還要準(zhǔn)備好相應(yīng)的服務(wù)。
(表達出Linux系統(tǒng)的操作和常用服務(wù)搭建也是OK的)
然后我們會用客戶端模擬一些用戶流量,也會在Windows上安裝一些常用的測試工具來模擬用戶數(shù)據(jù)來測試產(chǎn)品。
(常用測試工具也是沒有問題的)
這樣最初的測試環(huán)境搭建基本就完成了。
面試官:所以Linux系統(tǒng)你是會用的對吧?你們一般會安裝一些什么服務(wù)?具體操作步驟能簡單描述一下么?
(他會根據(jù)你的描述挑出來他感興趣的點來細(xì)化的問你,比如一些具體的知識細(xì)節(jié))
這個時候,就需要你回答具體的細(xì)節(jié)了,考驗?zāi)愕募夹g(shù)硬核能力了。
當(dāng)然,如果遇到自己不是很清楚的,一定要避重就輕,聰明的引導(dǎo)面試官問你擅長的領(lǐng)域。
比如“這個我不是太了解,但是我用過另外一個xxx,這個我比較熟悉” ......
六、總結(jié)
總而言之,面試官問你這樣的問題,一方面是想考察你的技術(shù)能力,另一方面也想考察你的表達能力。
所以,大家可以對照一下上面列出來的知識點,如果感覺自己的知識儲備不足,可以趁面試之前好好補習(xí)一下;
如果發(fā)現(xiàn)很多知識領(lǐng)域自己都有涉獵,但是回答的時候不知道從哪里開始,那就根據(jù)自己的經(jīng)驗和實際情況,時常總結(jié)和沉淀,梳理自己的知識體系。
記住,毫無準(zhǔn)備的面試,成功率都不會太高;善于總結(jié)積累的人,運氣都不會太差!