軟件測試 實踐 之測試環境的規劃與管理 只有穩定 ,才能有發展。 ——***:《振興中華民族》 (1990年1月7日)《***文" name="description" />
MILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt">軟件測試實踐
之測試環境的規劃與管理
只有穩定,才能有發展。
——***:《振興中華民族》(1990年1月7日)《***文選》第三卷第357頁
中國要實現自己的發展目標,必不可少的條件是安定的國內環境與和平的國際環境。
——***:《中國永遠不允許別國干涉內政》〈1990年7月11日〉,《***文選》第三卷第360-361頁
測試環境 是指為了完成軟件測試工作所必需的計算機硬件、軟件、網絡設備、歷史數據的總稱。毫無疑問,穩定和可控的測試環境,可以使測試人員花費較少的時間就完成測試用例的執行,也無需為測試用例、測試過程的維護花費額外的時間,并且可以保證每一個被提交的缺陷都可以在任何時候被準確的重現。
簡單的說,經過良好規劃和管理的測試環境,可以盡可能的減少環境的變動對測試工作的不利影響,并可以對測試工作的效率和質量的提高產生積極的作用。
一、規劃測試環境——讓環境為你服務
對于“金山詞霸”這樣的軟件,大多數測試工作都可以在一臺單獨的電腦上完成,而對于一套電信系統,為了執行測試用例,你可能會需要搭建一個由多臺計算機以及其他網絡設備組成,采用集群和負載均衡技術,并且接駁到Internet的計算機網絡。
不同的行業應用,不同的質量目標,都可能會影響到測試環境的規劃。但從測試工作自身的要求來看,一條應當遵守的原則就是“盡可能的還原軟件在用戶那里最終實際運行的環境”——雖然在很多時候這是不現實的。^_^
通常來說,我們所需要搭建的環境,主要是用于被測應用的系統測試——單元測試和集成測試由開發人員在開發環境中進行,而驗收測試則在用戶的最終應用環境中進行,因此都可以暫不考慮。
為了確定測試環境的組成,我們需要明確以下問題:
1. 所需要的計算機的數量,以及對每臺計算機的硬件配置要求,包括CPU的速度、內存和硬盤的容量、網卡所支持的速度、打印機的型號等;
2. 部署被測應用的服務器所必需的操作系統、數據庫管理系統、中間件、WEB服務器以及其他必需組件的名稱、版本,以及所要用到的相關補丁的版本;
3. 用來保存各種測試工作中生成的文檔和數據的服務器所必需的操作系統、數據庫管理系統、中間件、WEB服務器以及其他必需組件的名稱、版本,以及所要用到的相關補丁的版本;
4. 用來執行測試工作的計算機所必需的操作系統、數據庫管理系統、中間件、WEB服務器以及其他必需組件的名稱、版本,以及所要用到的相關補丁的版本;
5. 是否需要專門的計算機用于被測應用的服務器環境和測試管理服務器的環境的備份;
6. 測試中所需要使用的網絡環境。例如,如果測試結果同接入Internet的線路的穩定性有關,那么應該考慮為測試環境租用單獨的線路;如果測試結果與局域網內的網絡速度有關,那么應該保證計算機的網卡、網線以及用到的集線器、交換機都不會成為瓶頸;
7. 執行測試工作所需要使用的文檔編寫工具、測試管理系統、性能測試工具、缺陷跟蹤管理系統等軟件的名稱、版本、License數量,以及所要用到的相關補丁的版本。對于性能測試工具,則還應當特別關注所選擇的工具是否支持被測應用所使用的協議;
8. 為了執行測試用例,所需要初始化的各項數據,例如登陸被測應用所需的用戶名和訪問權限,或其他基礎資料、業務資料;對于性能測試,還應當特別考慮執行測試場景前應當滿足的歷史數據量。當然,還有另外一個非常關鍵的問題:在測試過程中受到影響的數據如何恢復?
明確了上面的問題后,明確哪些條件是可以滿足的,哪些是需要其他部門協助調配、采購或者支援的。建議在搭建測試環境之前,把上面的問題做成一張CheckList,并為每一項指定一個責任人,完成一項就填寫一項,最終形成的文檔則作為測試環境的配置說明文檔使用。當然,如果時間或其他條件允許,應當做好應急預案,盡量保證在環境失效時不會對正常工作產生太大的影響。
二、管理測試環境——把變化掌握在手中
測試環境搭建好以后不太可能永遠不發生變化,至少被測應用的每次版本發布都會對測試環境產生或多或少的影響。而應對變化之道,不是禁止變化,而是“把變化掌握在手中”。下面的這些建議可以幫助你盡可能擺脫環境變化所帶來的不利影響。
1. 設置專門的測試環境管理員角色
每個測試項目或測試小組都應當配備一名專門的測試環境管理員,其職責包括:
ü 測試環境的搭建。包括操作系統、數據庫、中間件、WEB服務器等必須軟件的安裝,配置,并做好各項安裝、配置手冊的編寫;
ü 記錄組成測試環境的各臺機器的硬件配置、IP地址、端口配置、機器的具體用途,以及當前網絡環境的情況;
ü 完成被測應用的部署,并做好發布文檔的編寫;
ü 測試環境各項變更的執行及記錄;
ü 測試環境的備份及恢復;
ü 操作系統、數據庫、中間件、WEB服務器以及被測應用中所需的各用戶名、密碼以及權限的管理;
ü 當測試組內多名成員需要占用服務器并且相互之間存在沖突時(例如在執行性能測試時,在同一時刻應當只有一個場景在運行),負責對服務器時間進行分配和管理。
2. 明確測試環境管理所需的各種文檔
一般來說,下面的幾個文檔是必需的,當然你也可以根據需要增加新的文檔。
ü 組成測試環境的各臺計算機上各項軟件的安裝配置手冊,記錄各項軟件的名稱、版本、安裝過程、相關參數的配置方法等,并記錄好歷次軟件環境的變更情況;
ü 組成測試環境的各臺機器的硬件環境文檔,記錄各臺機器的硬件配置(CPU/內存/硬盤/網卡)、IP地址、具體用途以及歷次的變更情況;
ü 被測應用的發布手冊,記錄被測應用的發布/安裝方法,包括數據庫表的創建、數據的導入、應用層的安裝等。另外,還需要記錄歷次被測應用的發布情況,對版本差異進行描述;
ü 測試環境的備份和恢復方法手冊,并記錄每次備份的時間、備份人、備份原因(與上次備份相比發生的變化)以及所形成的備份文件的文件名和獲取方式;
ü 用戶權限管理文檔,記錄訪問操作系統、數據庫、中間件、WEB服務器以及被測應用時所需的各種用戶名、密碼以及各用戶的權限,并對每次變更進行記錄。
3. 測試環境訪問權限的管理
應當為每個訪問測試環境的測試人員和開發人員設置單獨的用戶名,并根據不同的工作需要設置不同的訪問權限,以避免誤操作對測試環境產生不利的影響。下面的要求可以作為建立“測試環境訪問權限管理規范”的基礎。
ü 訪問操作系統、數據庫、中間件、WEB服務器以及被測應用等所需的各種用戶名、密碼、權限,由測試環境管理員統一管理;
ü 測試環境管理員擁有全部的權限;
ü 除對被測應用的訪問權限外,一般不授予開發人員對測試環境其他部分的訪問權限。如的確有必要(例如查看系統日志),則只授予只讀權限;
ü 除測試環境管理員外,其他測試組成員不授予刪除權限;
ü 用戶及權限的各項維護、變更,需要記錄到相應的“用戶權限管理文檔”中。
4. 測試環境的變更管理
對測試環境的變更應當形成一個標準的流程,并保證每次變更都是可追溯的和可控的。下面的幾項要點并不是一個完整的流程,但是可以幫助你實現這個目標。
ü 測試環境的變更申請由開發人員或測試人員提出書面申請,由測試環境管理員負責執行。測試環境管理員不應接受非正式的變更申請(例如口頭申請);
ü 對測試環境的任何變更均應記入相應的文檔;
ü 同每次變更相關的變更申請文檔、軟件、腳本等均應保留原始備份,作為配置項進行管理;
ü 對于被測應用的發布,開發人員應將整個系統(包括數據庫、應用層、客戶端等)打包為可直接發布的格式,由測試環境管理員負責實施。測試環境管理員不接受不完整的版本發布申請;
ü 對測試環境做出的變更,應該可以通過一個明確的方法返回到之前的狀態。
5. 測試環境的備份和恢復
對于測試人員來說,測試環境必須是可恢復的,否則將導致原有的測試用例無法執行,或者發現的缺陷無法重現,最終使測試人員已經完成的工作失去價值。因此,應當在測試環境(特別是軟件環境)發生重大變動(例如安裝操作系統、中間件或數據庫,為操作系統、中間件或數據庫打補丁等對系統產生重大影響并難以通過卸載恢復)時進行完整的備份,例如使用Ghost對硬盤或某個分區進行鏡像備份。并由測試環境管理員在相應的“備份記錄”文檔中記錄每次備份的時間、備份人以及備份原因(與上次備份相比發生的變化),以便于在需要時將系統重新恢復到安全可用的狀態。
另外,每次發布新的被測應用版本時,應當做好當前版本的數據庫備份。而在執行測試用例或性能測試場景之前,也應當做好數據備份或準備數據恢復方案,例如通過運行SQL腳本來將數據恢復到測試執行之前的狀態,以便于重復的使用原有的數據,減少因數據準備和維護而占用的工作量,并保證測試用例的有效性和缺陷記錄的可重現。