建立、組織和管理一支優(yōu)秀的測試團隊是做好軟件測試工作的基礎(chǔ)。測試活動的開展必須貫穿于整個軟件開發(fā)生命周期,因此,測試活動應(yīng)該和相關(guān)的開發(fā)活動進行協(xié)調(diào),并統(tǒng)一規(guī)劃。不同的組織,可能會以不同的方式組織測試團隊,以達到組織和項目層面的測試目標。
采用獨立的測試人員進行測試和評審,發(fā)現(xiàn)缺陷的效率會明顯提高,因此,獨立的測試團隊是一個較好的選擇。獨立測試的方式并不是完全的替代開發(fā)人員進行的測試,因為開發(fā)人員也可以高效地在他們的工作產(chǎn)品中找出很多缺陷。因此,根據(jù)組織和項目的特點,可以選擇不同的獨立測試策略:
● 非獨立的測試人員(開發(fā)人員測試自己的代碼)。
● 測試由不同的開發(fā)人員執(zhí)行,而不是代碼的編寫者本人。
● 測試由開發(fā)團隊中專門的測試人員完成。
● 測試由獨立于開發(fā)團隊的測試團隊完成。
● 外部測試專家基于特定的測試目標執(zhí)行測試。
● 測試由組織外的團隊執(zhí)行(例如:外包)。
對于龐大、復(fù)雜的系統(tǒng)或安全關(guān)鍵系統(tǒng),最好讓獨立的測試人員進行多個級別的測試。開發(fā)人員也可以參與其中(特別是在測試級別比較低的時候),但是開發(fā)人員缺少測試目的性和測試相關(guān)技能會限制他們的測試效率。獨立測試人員有權(quán)要求定義測試過程及規(guī)則,但是只有在明確授權(quán)的情況下才能充當這種過程相關(guān)的角色。在實際的項目中,可以考慮采用多種獨立測試策略相結(jié)合的形式。
1)非獨立的測試人員
在這種情況下,沒有任何的獨立性。開發(fā)人員對自己開發(fā)的代碼進行測試。開發(fā)人員將根據(jù)自己的理解對代碼進行測試,一旦發(fā)現(xiàn)缺陷,開發(fā)人員能夠馬上進行修復(fù),大大縮短解決問題的時間;同時由于開發(fā)人員對代碼很熟悉,知道哪些地方可能存在更多的問題,可以有針對性地進行測試。但通常情況下,開發(fā)人員愿意花費更多的時間在開發(fā)活動上,而留給測試活動的時間很少,測試活動的質(zhì)量無法得到保障。從心理學(xué)來看,讓開發(fā)人員發(fā)現(xiàn)自己代碼中存在的缺陷存在一定難度,因此,不太容易發(fā)現(xiàn)缺陷。
2)測試由不同的開發(fā)人員執(zhí)行
測試由不同的開發(fā)人員執(zhí)行,而不是代碼的開發(fā)者本人。這種形式在一定程度上體現(xiàn)了測試的獨立性。一方面,擔當測試工作的開發(fā)人員對系統(tǒng)設(shè)計和開發(fā)的代碼比較熟悉,而且同為開發(fā)人員,溝通比較通暢;另一方面測試對象并不是自己開發(fā)的代碼,這種情況下缺陷的發(fā)現(xiàn)率將會有一定程度的提高。開發(fā)人員兼任測試人員的工作,沒有形成獨立的測試團隊,整個團隊的核心是開發(fā),這種情況下,一個開發(fā)人員測試另一個開發(fā)人員的代碼可能不情愿報告缺陷。同時,開發(fā)人員設(shè)計的測試用例通常集中在正面的功能測試用例上,對于一些非功能測試以及異常情況的考慮比較少。
3)測試由開發(fā)團隊中專門的測試人員完成
開發(fā)團隊內(nèi)部有專門的測試人員或測試團隊,這些測試人員或測試團隊向開發(fā)經(jīng)理匯報工作。該模式下,測試人員已從開發(fā)人員中獨立出來,因此,測試人員具有一定的獨立性,他們可以采用和開發(fā)人員不同的視角分析和檢查被測試產(chǎn)品;同時測試人員和開發(fā)人員聯(lián)系緊密,可以和開發(fā)人員及時溝通。但是這種模式下,測試人員仍然受到開發(fā)經(jīng)理的制約,不能完全獨立地從產(chǎn)品質(zhì)量出發(fā)進行測試,由于整個項目進度和經(jīng)費的關(guān)系,測試的投入可能不夠,在開發(fā)任務(wù)緊張的情況下,這些測試人員還可能負責部分開發(fā)任務(wù),從而不能保證產(chǎn)品質(zhì)量。
4)測試由獨立于開發(fā)團隊的測試團隊完成
這種情況下,測試團隊具有相當?shù)莫毩⑿浴4藭r,測試團隊直接向利益相關(guān)者(例如:項目經(jīng)理)匯報,測試團隊重點關(guān)注被測試對象的質(zhì)量。發(fā)現(xiàn)缺陷成為測試團隊最重要的目標之一,對測試對象中出現(xiàn)的問題能夠進行客觀的分析和評價。由于整個團隊都負責測試相關(guān)活動,測試團隊可以集中精力