??通常情況下不論采用什么方法和技術(shù)窜觉,其測試都是不徹底的谷炸,一是不能窮盡測試,二是測試的時間極其有限禀挫,沒有足夠的時間完成所需的測試旬陡。雖然我們不能保證被測試的程序中不存在遺漏的缺陷,但是语婴,如果軟件完成測試之后描孟,遺漏的嚴(yán)重錯誤過多,則表明測試是非常不充分的砰左,測試是失敗的匿醒。測試不足意味著讓用戶承擔(dān)很大的質(zhì)量風(fēng)險。反過來說菜职,如果過度測試青抛,則又會浪費寶貴的測試資源,產(chǎn)品遲遲不能發(fā)布酬核,增大企業(yè)的成本蜜另。因此,在實際的測試計劃中嫡意,如何平衡測試的投入和質(zhì)量的風(fēng)險是必須考慮的問題举瑰,需要考慮測試的范圍取舍、需要適當(dāng)?shù)爻惺芤恍╋L(fēng)險----哪些測試項優(yōu)先級高蔬螟,需要優(yōu)先測試此迅;哪些測試項優(yōu)先級低,在時間不夠的情況下旧巾,可以不測耸序。也可以選擇不同的測試方法,達(dá)到不同的測試效果鲁猩,如在特別高效率的測試情況下坎怪,測試覆蓋率有所降低,在某些情況下可能就是一種明智的決策廓握。即在測試的取舍上搅窿、在測試的投入與質(zhì)量風(fēng)險上,需要找到一個最佳平衡點隙券。這就是測試策略發(fā)揮作用的地方男应。
1、測試策略
??為了最大程度地減少這種遺漏的錯誤娱仔,同時也為了最大限度地發(fā)現(xiàn)存在的錯誤沐飘,在測試實施之前要確定有效的測試策略。然后牲迫,根據(jù)測試策略薪铜,選定測試方法众弓、確定測試范圍等恩溅,豐富測試計劃隔箍,制定詳細(xì)的測試方案。依據(jù)軟件項目類型脚乡、規(guī)模及應(yīng)用背景的不同蜒滩,我們將選擇不同的測試方案,以最少的軟奶稠、硬及人力資源投入而獲得最佳的測試效果俯艰,這就是測試策略目標(biāo)所在。
??軟件測試策略:即在一定的軟件測試標(biāo)準(zhǔn)锌订、測試規(guī)范的指導(dǎo)下竹握,依據(jù)測試項目的特定環(huán)境約束而規(guī)定軟件測試的原則、方式辆飘、方法的集合啦辐,這就是測試策略,其包括如下:
- 實施的測試類型和測試的目標(biāo)蜈项;
- 實施測試的階段及相應(yīng)的技術(shù)芹关;
- 用于評估測試結(jié)果的方法和標(biāo)準(zhǔn);
- 對采取測試策略所帶來的影響或風(fēng)險的說明等紧卒。
2侥衬、測試策略制定的三項基本要素
??軟件測試制定有3項基本要素:輸入、輸出和過程跑芳。
??(1)輸入:作為制定測試策略的依據(jù)轴总,包括限制條件和已具有的資源;
- 所要求的軟博个、硬件的詳細(xì)說明怀樟,包括測試環(huán)境、測試工具等坡倔;
- 人力資源和測試進(jìn)度的約束漂佩,包括測試組成員角色和職責(zé)說明;
- 測試方法和衡量測試是否通過的標(biāo)準(zhǔn)罪塔;
- 被測軟件組件或系統(tǒng)的功能性和技術(shù)性需求文檔投蝉,及其變更請求的控制流程。
- 軟件系統(tǒng)所受到的其他限制征堪。
??(2)輸出:制定策略的成功瘩缆,即最終對所制定 策略的定義或說明。 - 通過/失敗的準(zhǔn)則和測試風(fēng)險評估的結(jié)果佃蚜。
- 已批準(zhǔn)和簽署的測試策略文檔庸娱。
- 測試策略相對應(yīng)的測試計劃着绊、測試用例的設(shè)計思想和思路。
(3)制定策略的過程熟尉。
??測試組分析需求归露,參與設(shè)計的討論,測試策略應(yīng)該覆蓋整個項目的生命周期斤儿,需要各類技術(shù)人員參與剧包;各類技術(shù)人員相互之間應(yīng)多交流、討論往果,以保證制定正確的測試策略疆液。
3、如何制定測試策略
??測試策略描述如何全面的陕贮、客觀地和有效地開展測試堕油,對測試的公正性、遵照的標(biāo)準(zhǔn)做一個說明肮之。在制定測試策略過程中掉缺,需要考量用戶特點、系統(tǒng)功能之間的關(guān)系局骤、資源配置攀圈、上個版本的測試質(zhì)量和已有的測試經(jīng)驗等各個因素的影響,從而找到問題的解決辦法峦甩,包括采取哪些測試方法赘来、采用什么樣的測試工具等。盡可能地考慮到某些細(xì)節(jié)凯傲,借助創(chuàng)造性的思維或頭腦風(fēng)暴犬辰,往往能幫助找到測試的新途徑。
??為了制定正確的測試策略冰单,先要明確其輸入幌缝,包括被測的軟件系統(tǒng)的功能性和技術(shù)性需求,以及測試目標(biāo)诫欠、測試方法和完成標(biāo)準(zhǔn)等涵卵。然后,根據(jù)測試目標(biāo)或測試需求確定測試的內(nèi)容荒叼,評估各項測試內(nèi)容可能存在的風(fēng)險并確定測試的優(yōu)先級轿偎,針對不同的測試內(nèi)容選擇最合適的測試方法、技術(shù)和工具被廓,針對不同的測試風(fēng)險采取不同的對策坏晦,最后確定測試策略,包括測試各個階段完成的標(biāo)準(zhǔn)、所采用的方法和對策以及測試用例設(shè)計的取舍等昆婿。
??測試策略制定步驟:
??在制定策略的過程中球碉,權(quán)衡資源約束和風(fēng)險等因素是很關(guān)鍵的,有效的測試策略就是為了降低風(fēng)險仓蛆,在有限的資源下完成給定的測試任務(wù)睁冬,優(yōu)先級高的測試任務(wù)優(yōu)先完成。如果不采取測試策略多律,就不能及時完成測試任務(wù)痴突。而采取一定的測試策略(如新方法、特別的方法)能及時完成測試任務(wù)狼荞,或者是舍棄某些非常低或較低優(yōu)先級的測試任務(wù),從而增加了測試風(fēng)險帮碰。所以需要正確把握測試目標(biāo)和測試風(fēng)險之間的平衡相味,獲得最佳的測試策略。
4殉挽、如何更好地制定測試策略
??針對不同的測試階段(單元測試丰涉、集成測試、系統(tǒng)測試)斯碌、不同的測試對象或測試目標(biāo)制定相對應(yīng)的測試策略一死。例如,單元測試傻唾,執(zhí)行嚴(yán)格的代碼復(fù)查投慈,以保證在早期就能發(fā)現(xiàn)大部分的問題,而對功能性的回歸測試冠骄,盡量借助自動化完成伪煤,而且要求每天執(zhí)行冒煙測試或驗證測試,包括在安全性測試凛辣、配置測試執(zhí)行時可進(jìn)行一些探索性測試抱既。所以在制定測試策略時,可選擇的范圍很大扁誓。
-采用不同的測試方式防泵,如加強靜態(tài)測試、采用探索式測試就有可能解決進(jìn)度的問題蝗敢。
- 采用不同的測試方法捷泞,白盒方法準(zhǔn)確有效,但黑盒方法能夠直接面對業(yè)務(wù)前普,完成端到端的驗證肚邢。
- 在選擇不同的測試方式、方法時,需要考慮團隊的能力骡湖,甚至需要考慮團隊人員的責(zé)任心贱纠,如果能力強、責(zé)任心強响蕴、探索式測試效果會好得多谆焊。
- 測試用例的選擇、優(yōu)化浦夷,一般要求測試用例事先定義優(yōu)先級辖试,這樣有多少時間或人力資源,就做多少測試劈狐,按優(yōu)先級的順序罐孝,從高向地來選擇測試。
- 不同的測試層次(單元肥缔、集成莲兢、系統(tǒng))其策略是不一樣的
- 新的測試環(huán)境是否是虛擬環(huán)境、新的測試工具是否易用等都是影響因素续膳。
為了更好地確定軟件測試策略改艇,也可以試著問一些如下的問題,在尋找這些答案的過程中坟岔,也就找到了有效的測試策略谒兄。 - 如何確定回歸測試的范圍?
- 如何利用可重復(fù)性的測試社付?
- 測試缺乏可預(yù)見性承疲,如何收集能衡量測試結(jié)果的指標(biāo)?
- 如何建立穩(wěn)定的瘦穆、模擬系統(tǒng)實際運行的測試環(huán)境纪隙?
- 如何從無窮的輸入數(shù)據(jù)中選擇合理的、有效的測試數(shù)據(jù)集扛或?
- 如何加強靜態(tài)測試-----規(guī)格說明書绵咱、設(shè)計文檔和程序代碼等的審查?
- 如何處理單元測試和集成測試的關(guān)系熙兔?
- 如何處理手工測試和自動化測試之間的平衡悲伶,使它們的互補性得到發(fā)揮,測試的效率和質(zhì)量達(dá)到最佳狀態(tài)住涉?
- 如何衡量這份測試策略的有效性麸锉?
5、基于測試技術(shù)的測試策略
著名的軟件測試專家mysers指出了使用各種測試方法的綜合策略舆声。
- 在任何情況下都要使用邊界值分析方法花沉,因為邊界值分析方法所設(shè)計的測試用例能很有效地發(fā)現(xiàn)軟件代碼的缺陷柳爽。
- 等價類劃分方法是對邊界值分析方法的有效補充。
- 如果軟件某些功能的輸入數(shù)據(jù)/條件存在多種組合情況碱屁,則一開始就可選用因果圖法磷脯。
- 錯誤推測法可以幫助追加一些比較特殊、不易直接推理出來的測試用例娩脾。
- 對照程序邏輯來審查已有測試用例的邏輯覆蓋成都赵誓。如果沒有達(dá)到要求的覆蓋率,則應(yīng)當(dāng)再增加一些測試用例柿赊。
- 盡管用戶更傾向于基于程序規(guī)格說明的功能測試俩功,但是白盒測試能發(fā)現(xiàn)潛在的邏輯錯誤,而這種錯誤往往是功能測試發(fā)現(xiàn)不了的碰声。
6诡蜓、分階段的測試策略
- 嚴(yán)格地執(zhí)行代碼復(fù)查,以保證在早期就發(fā)現(xiàn)問題奥邮,而不是在代碼發(fā)布之后万牺。
- 利用單元測試和集成測試,可以盡早地發(fā)現(xiàn)更多的問題洽腺,并準(zhǔn)備好自動化測試;
- 需要建立一個正規(guī)的且自動化的冒煙測試覆旱,只有100%通過冒煙測試蘸朋,才能進(jìn)入下一個階段。
- 在系統(tǒng)測試中扣唱,以每次發(fā)布用戶基線為結(jié)束標(biāo)志藕坯,用戶基線會增長,同時也會逐漸地要求一些更為精確的性能測試噪沙。
- 不能忽略安全性測試炼彪、可用性測試、配置測試和數(shù)據(jù)完整性測試正歼。
- 在功能性辐马、安全性測試、配置測試中可進(jìn)行一些探索性測試局义。
- 制定更為詳細(xì)的用戶驗收測試計劃喜爷,將其與測試腳本和培訓(xùn)材料一起提供給用戶,以幫助用戶快速提高并完成任務(wù)萄唇。
7檩帐、基于測試方案的綜合測試策略
- 根據(jù)軟件產(chǎn)品或服務(wù)特性對客戶的使用價值以及特性失效所造成的損失,來確定相應(yīng)特性的測試優(yōu)先級另萤。產(chǎn)品特性的優(yōu)先級越高湃密,其被測試的時間越早,測試的力度也越大。
- 要使用盡可能少的測試用例泛源,發(fā)現(xiàn)盡可能多的程序錯誤拔妥。一次完整的軟件測試過后,如果程序中遺漏的(較)嚴(yán)重錯誤過多俩由,則表明本次測試是不足的或失敗的毒嫡,這意味著可能讓用戶承擔(dān)較大的利益損失風(fēng)險。反過來說幻梯,如果過度測試兜畸,則又會浪費軟件企業(yè)自身的寶貴資源。所以碘梢,需要在以上兩點–風(fēng)險和效率上進(jìn)行權(quán)衡咬摇,找到一個最佳平衡點。
- 測試策略應(yīng)該盡量的簡單煞躬、清晰肛鹏,例如可以在優(yōu)先的白板上通過2~3行字和1~2個圖就描述出測試策略來,或者可以通過一個簡短的會議(20分鐘~30分鐘)恩沛,就能把測試策略解釋清楚在扰。
- 基于缺陷分析的測試策略,通過缺陷分析雷客,可以更好地了解開發(fā)人員的習(xí)慣芒珠,找到容易犯錯的地方,可以更好地設(shè)計測試用例搅裙,更快地發(fā)現(xiàn)缺陷皱卓。也可以從缺陷出發(fā),反推回去部逮,找到合適的測試策略娜汁。