天天看點

測試環境的規劃與管理

測試環境的規劃與管理

時間:2008-1-7 17:30:28 來源:張偉光

    測試環境是指為了完成軟體測試工作所必需的計算機硬體、軟體、網絡裝置、曆史資料的總稱。毫無疑問,穩定和可控的測試環境,可以使測試人員花費較少的時間就完成測試用例的執行,也無需為測試用例、測試過程的維護花費額外的時間,并且可以保證每一個被送出的缺陷都可以在任何時候被準确的重制。

    簡單的說,經過良好規劃和管理的測試環境,可以盡可能的減少環境的變動對測試工作的不利影響,并可以對測試工作的效率和品質的提高産生積極的作用。

    一、規劃測試環境——讓環境為你服務

    對于“金山詞霸”這樣的軟體,大多數測試工作都可以在一台單獨的電腦上完成,而對于一套電信系統,為了執行測試用例,你可能會需要搭建一個由多台計算機以及其他網絡裝置組成,采用叢集和負載均衡技術,并且接駁到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腳本來将資料恢複到測試執行之前的狀态,以便于重複的使用原有的資料,減少因資料準備和維護而占用的工作量,并保證測試用例的有效性和缺陷記錄的可重制