測試環境是QA開展測試工作的前置條件。穩定和可控的測試環境,可以使測試人員在執行測試用例時無需花費額外的時間去維護。有些公司運維或者研發部門會幫忙准備好測試環境,但是QA如果一味依賴其他部門,會局限測試工作的開展。
一、什么是測試環境
測試環境,指為了完成軟件測試工作所必需的計算機硬件、軟件、網絡設備、歷史數據的總稱,簡而言之,測試環境=硬件+軟件+網絡+數據准備+測試工具。
硬件:指測試必需的服務器、客戶端、網絡連接等輔助設備。
軟件:指測試軟件運行時的操作系統、數據庫及其他應用軟件。
網絡:指被測軟件運行時的網絡系統、網絡結構以及其他網絡設備構成的環境等。
數據准備:一般指測試數據的准備。測試數據會在測試用例設計的階段設計好,然后軟件運行的時候,作為軟件輸入去驗證軟件功能。如果是少量、常的測試數據,可以直接通過手動方式模擬出來,如果是大量的用戶數據的模擬,可以借助測試工具來構建。
測試工具:工具是輔助測試的好幫手,針對將要做的測試類型,可選擇合適的工具讓我們的測試事半功倍。比如接口測試,可以選擇Jmeter或者postman;抓包工具,可以選擇fiddler,wireshark等。
二、搭建測試環境的原則
1. 真實
要求測試人員盡量模擬用戶的真實使用環境。我們應該選用合適的操作系統和軟件平台,了解符合測試軟件運行的最低要求及用戶使用的硬件配置,考慮到與其他軟件共存時,是否能正常運行等。
2. 無毒
若搭建的測試環境感染病毒,會導致測試軟件經常出現莫名的崩潰,運行不起來等現象,導致測試中斷。使用正版殺毒軟件防止病毒感染測試環境,保證無毒環境。
3. 獨立
測試過程中要確保我們的測試環境獨立,避免測試環境被占用,影響測試進度及測試結果。有時開發人員為確定問題會使用我們的測試環境,這樣會打亂我們的測試活動。為避免這種情況,測試環境與開發環境應相互獨立,開發人員根據缺陷表單,在開發環境中復現和定位問題。
4. 可復用
當我們剛搭建好測試環境,安裝測試軟件之前及測試過程中,對操作系統及測試環境進行備份是必要的。在當測試環境遭到破壞時,可以恢復測試環境,避免測試數據丟失,出現不可預知的問題。
三、如何搭建測試環境
1.認識LNMT架構
這里主要介紹測試環境服務端的部署。不同公司的服務端部署都不一樣。互聯網公司比較典型的部署框架LNMT(Linux+Nginx+Mysql+Tomcat)如下圖:
- 瀏覽器和APP端是通過HTTP協議跟服務器進行交互的。
- Nginx,有些公司也用Apache。這是常用的HTTP服務器和反向代理服務器。Nginx是用來提供靜態資源的服務,Nginx接收到來自瀏覽器的請求以后,判斷這個請求是否是靜態資源(以JS、CSS、HTML、PNG等結尾的靜態文件),如果是,則Nginx直接返回相應文件;如果不是靜態資源,是動態請求,比如,請求某一個日志的內容,則Nginx會把請求轉發給Tomcat來處理。
- Tomcat,是處理動態的HTTP請求,調用各種其他服務,完成相應的任務,並返回HTTP響應給Nginx。如果涉及到寫日志、讀日志等數據相關的操作,就需要對數據庫進行讀寫。另外,由於這些動態請求也會依賴一些第三方服務,比如說要調用支付寶的支付服務,那么它就會再發起一個HTTP請求到支付寶的對外服務器。它處理完整個邏輯之后,就會把相應的內容返回給Nginx,然后由Nginx返回給瀏覽器。
- Mysql數據庫,將各種數據有序的管理起來,並對其他應用提供統一的接口和服務。
2. LNMT架構部署
此處主要介紹搭建環境的思路,更詳細的配置步驟不再贅述。
1) 申請虛擬機器
申請兩台虛擬機A和B,機器A作為Nginx服務器+Mysql服務器;機器B作為2台Tomcat服務器。
2) 在機器A上安裝和配置Nginx
- 下載並安裝Nginx
- 配置環境變量
- 啟動Nginx
3)在機器A上安裝Mysql
- 下載安裝包並解壓
- 添加環境變量
- 初始化數據庫
- 啟動Mysql
4)在機器B上部署兩台Tomcat
- 關閉防火牆和selinux
- 安裝jdk環境
- 下載Tomcat並解壓兩次,目錄不同
- 兩台Tomcat建立軟鏈接
- 修改其中一台Tomcat的配置文件server.xml,避免端口沖突。server.xml配置的是地址、端口、最大連接數、編譯好的應用程序目錄等信息
- 啟動Tomcat服務
- 驗證部署成功,即瀏覽器輸入ip地址+端口號能成功訪問
5)配置Nginx
- 配置負載均衡和兩個Tomcat的反向代理
- 檢查語法並加載Nginx
- 驗證配置成功
總結
對於測試人員來說,對於這一整個機制需要理解,比如,各個工具的作用是什么,各個配置文件的意義是什么,各塊的配置是怎么連起來的。
在搭建測試環境的過程中要多跟開發、運維溝通。測試環境的搭建和維護處在重要的位置,它的好壞直接影響測試結果的真實性和准確性。維護測試環境需要大量的精力,不是一個人能完成的,需要我們大家積極配合。