第1步:基本策略輪廓
拿出一個空白的寫字板,和大家一起開始。首先,把每個你想要捕獲、制定的測試方面寫到寫字板上,分成列的形式。對于我們的項目,我把測試階段(包含了項目所執行的測試類型)、不同的代碼環境和衡量指標各分成了一列,其中的衡量指標決定我們何時在不同的環境之間移動代碼。圖一展現了它的基本面貌。
圖一寫字板—-輪廓
我使用紅色標注出這些定義。列出項目組當前并存執行的每個測試階段;在測試階段的下面,列出要執行的測試類型。而尋找測試類型的過程,會幫助你清晰地定義測試階段,同時,你可以把每個階段所代表的含義和產生的內容分成一組。這里沒有所謂的“正確”定義;唯一重要的一點,就是大家都認可你所使用的定義。你也可能需要定義測試的類型,但更重要的是確保每個人都能夠理解如何區分不同的測試類型。記住,你要使大家能夠自由地討論測試策略,一個清晰的框架需要清晰的定義。
第2步:目前的安排
接下來,列出不同的項目環境,以及當前所使用的衡量指標,后者決定了何時在環境之間移動構建。在我們的項目中,我詢問了每一個參加會議的人,發現項目組會執行系統測試和一些回歸測試,以及為少量用戶提供的專門的接受測試。而這里缺少單元測試和集成測試的一致性,以及通常在代碼提交給用戶之后所要進行的代碼復查工作。系統測試中,我們利用一些功能測試和生命周期測試,將大部分的需求做了驗證。而在前面的迭代中,項目組執行了一個或兩個臨時的潛在測試,所以我們已經包含了那些測試。所有的回歸測試,在時間允許的情況下,從前面的一次發布開始,是手工地基于測試用例的測試。
我們具有5個項目環境。每個開發人員有著他們自己的本地環境,接著,他們要將其全部集成到一個普遍的開發環境中。一旦被集成,項目要構建一個測試環境,以進行系統測試的工作。然后,基于需求驗證和發布日期(關鍵的衡量指標),把代碼移動到質量保證(QA)的環境中。用戶根據發布的版本對大多數的期望功能進行復查,然后在一系列的結束標志(另一個關鍵的衡量指標)出現后,代碼即可移動到產品中。圖2展現了我們的測試策略,它包含了上面所說的全部內容。在衡量指標的那一列中,我們對每個環境中的需求驗證級別進行了討論,確定了那些能準確地反映當前過程的數字。
圖2寫字板—-測試的當前狀態
第3步:突如其來的改進
一旦所有的人都同意了寫字板上有關衡量指標的內容,我們就可以開始制定項目測試希望達到的目標了。我們談論了一些有關實踐和工具的內容,后者可以幫助我們提高效率,并與我們當前的資源(人力和財力)水平相符合。同時,我們意識到,很可能不能再擴大測試組的規模了,這樣我們會設法讓開發人員為測試提供幫助,而談論的關注點也隨之開始圍繞在此問題上。當然,我們也可以把關注點放在我們所經歷的那些關鍵問題上。(還記得前面我所羅列的那些問題嗎?)
在第六屆IEEE關于Web Site發展的國際研討會上,Hung Nguyen為我們描述了一種制定測試策略的技術—-獲得一個“bug centric”。他的方法是查看產品中已發現的問題,然后將這些具體問題視為目標,反向地創建策略。他的關注點是設法添加可見性,以此確定成本,來提高產品的發布速度。無論你的上下文背景是什么,都要確保自由討論的小組能夠了解到他們所要解決的問題。如果你的測試策略沒有一個明確的完成目標,那么就后退一步,先建立一個清晰的目標。最糟的莫過于你的測試策略具有一個錯誤的目標—-這個策略注定會以失敗告終。它會產生新的問題,也會把現有的問題變得更糟。最好的情況,它偶爾可能會解決一些問題,但同時,會讓我們更加的難于解決剩余的問題(實際沒有如此困難)。
在我們自由討論的時候,商定了許多問題,并得到了一些結論:
· 利用單元測試和集成測試,我們可以盡早地發現更多的問題,并準備好自動化測試的初始級別,同時,它們為我們提供了一些衡量指標,這些指標讓我們可以更好的跟蹤開發過程,這樣,我們可以做出決定—-何時移動我們的代碼。(多數情況下,我們使用J2EE和Oracle來構建應用程序,同時,也使用一些其他的技術補充。但不論J2EE或Oracle,它們都具有非常健壯和自由的單元和集成測試工具。)
· 系統測試中,我們以每次發布用戶基線為結束,用戶基線會增長,同時他們也會逐漸地要求一些更為精確的性能測試—-盡管我們對此還只是略知皮毛。
· 我們不能再依賴于需求驗證,不能再繼續將其作為我們主要的測試類型了。盡管那是非常重要的事情,因為我們不能忽略安全性測試、可用性測試、配置測試和數據完整性測試,以及上百種其他類型的測試。
· 我們決定進行一些基于session(session-based)的探索性測試,而最初是以成對的方式執行該測試的,直到我們更為適應這種類型測試的過程,同時,也發展了我們快速學習和解決問題的能力。一旦我們適應了探索性測試的工作,那么我們可以開始執行更多的sessions。
文章來源于領測軟件測試網 http://www.kjueaiud.com/