導語:很多人在面試軟件測試的過程中,經常被問到“你會搭建測試環境嗎”面對這樣的提問,你知道怎么回答么?
一、如何回答
面試的時候,遇到這樣的提問,很多人的都會感覺腦子一下一片空白,或者星星點點,不知道從何說起。
一方面不知道面試官問這個問題的意圖是什么?
也不知道他想得到的答案是什么?
更加不知道該從哪些方面來回答。
作為一個測試行業從業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系統。
這里還需要注意的一點,就是軟件運行對硬件的要求。
通常軟件說明書上會明確軟件對硬件的需求,比如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,這個我比較熟悉” ......
六、總結
總而言之,面試官問你這樣的問題,一方面是想考察你的技術能力,另一方面也想考察你的表達能力。
所以,大家可以對照一下上面列出來的知識點,如果感覺自己的知識儲備不足,可以趁面試之前好好補習一下;
如果發現很多知識領域自己都有涉獵,但是回答的時候不知道從哪里開始,那就根據自己的經驗和實際情況,時常總結和沉淀,梳理自己的知識體系。
記住,毫無準備的面試,成功率都不會太高;善于總結積累的人,運氣都不會太差!