古代戰(zhàn)爭開始前,朝廷都會對戰(zhàn)爭的有利不利方面反復(fù)計算,推演與計劃部署。孫子在他那本曠世巨著中的第一篇談到了針對戰(zhàn)爭的廟算,可見對它的重視。

  與戰(zhàn)爭類似,測試也是一場投入人力與物力的活動,目的在于對產(chǎn)品生產(chǎn)過程中或者生成產(chǎn)品中存在的缺陷進行“追捕”,以便開發(fā)人員的“殲滅”。那么自然在這樣的活動中,測試人員也需要有自己的廟算,“經(jīng)之以五,校之以計”,對測試活動進行周密細致的計劃安排,只有取得測試的“廟算”之勝,才能有效保證測試活動的成功。

  那么一份測試計劃需要考慮哪些問題呢?起碼得涵蓋以下內(nèi)容:

  一、明確哪些該測,哪些不該測

  這是一個確定范圍的問題。測試只能是基于有限資源,受限于人力物力財力以及產(chǎn)品發(fā)布時間。因此測試往往需要第一步考慮自己在這有限的資源里先測什么,后測什么,哪些不測。一般來講,不測的部分包括使用的第三方產(chǎn)品,不提供給用戶的部分,或者分析得知的同類配置或風(fēng)險小的部分。在一些增強版本中,甚至可以對之前版本的穩(wěn)定部分不進行測試。

  二、測試模塊的測試策略

  針對不同模塊需要采用不同的策略。有些模塊可能只能進行單元測試,有些模塊必然包括在系統(tǒng)測試中;產(chǎn)品的性能測試需要得到哪些數(shù)據(jù),產(chǎn)品的安全測試采用哪些手段;黑盒測試有哪些模塊,哪些模塊需要白盒測試。哪些需要自動化測試,哪些手工測試已經(jīng)勝任,Regression測試在什么情況下采用,Ad-hoc測試在哪些人中開展。

  三、測試的工具使用

  測試的策略中需要使用什么工具,測試的管理用了哪些軟件。是否自行開發(fā)測試工具,使用了哪些開發(fā)語言。

  四、測試的進度安排

  測試的模塊或環(huán)境不可能能夠同時在開始具備完成,用戶的需求也可能陸續(xù)在開發(fā)引入。測試的進度隨著項目的進度進程也有自己的變化,測試進度需要同項目進度匹配。同時,有些alpha階段可以開始測試,有些必須等到beita階段才能開展。

  五、測試的環(huán)境與人員安排

  針對前面定義下來的測試內(nèi)容和策略,需要多少測試環(huán)境。需要定義環(huán)境的使用情況,指定環(huán)境負責(zé)人,使用人。環(huán)境不一定具備產(chǎn)品需求的定義要求,但必須能證明滿足用戶的需求。

  六、測試的準入與離開標準

  每一階段的產(chǎn)品有每一階段的要求,既包括進入該階段需要具備的準則,也包括離開該階段的要求。測試的開始必然需要一個達到一定質(zhì)量要求的版本,該版本需要達到一個什么樣的質(zhì)量水平才能標志該階段的質(zhì)量已經(jīng)達標,從而退出本階段的測試

  七、測試的潛在風(fēng)險和解決之道

  任何項目都有風(fēng)險,項目組需要在測試前盡可能多的預(yù)見可能的風(fēng)險,商議制定解決方法。可能產(chǎn)品依賴的平臺不具備;平臺不夠開發(fā)測試使用;某些產(chǎn)品的解決方案是否存在潛在的法律風(fēng)險;工具的調(diào)研是否發(fā)現(xiàn)不能勝任的情況;測試人員對相應(yīng)模塊或語言及工具的掌握或培訓(xùn);產(chǎn)品出現(xiàn)難以解決的嚴重問題;產(chǎn)品需求可能存在重大改動等等這些都是潛在的風(fēng)險。

  簡言之大體測試計劃需要考慮的是:測什么(目標),怎么測(策略),拿什么測(環(huán)境與工具),誰來測(責(zé)任人),啥時開測啥時測完(進入與離開標準),測試哪些階段(測試的進度),以及哪些影響測試(風(fēng)險)。

  除此之外,一般一份測試報告還會在開始簡單介紹項目背景和測試計劃基于的文檔(比方市場需求文檔,產(chǎn)品需求文檔,產(chǎn)品質(zhì)量計劃)以及對這份文檔批復(fù)同意的經(jīng)理簽名。對文檔中重要術(shù)語的縮寫說明,項目人員可能需要的培訓(xùn)也可以寫到測試計劃中。

  經(jīng)驗證明,測試計劃做得越深入越仔細,后面展開的測試工作越可控,測試成功率也越高。孫子曰:“多算勝,少算不勝,而況無算乎!”大概說的是這個道理吧。