培養(yǎng)整個團隊的測試能力,成為專業(yè)的測試團隊。
由于測試團隊獨立于開發(fā)團隊,測試團隊成員的開發(fā)技能相對較弱,對于系統(tǒng)的需求、設計和代碼的理解需要投入更多的工作量,而且測試人員和開發(fā)人員需要建立正式的溝通渠道,例如:需要建立更加完善的配置管理和缺陷管理系統(tǒng)。
5)外部測試專家基于特定的測試目標執(zhí)行測試
聘請來自于組織外部的專家對特定的測試目標執(zhí)行測試。外部專家并不對整個系統(tǒng)進行全面的測試,而只關注其中特定的領域,例如:可能只關注被測試對象的重要的質量屬性(例如:易用性、安全性或性能等)。這些專家在特定的領域都有很深的造詣,可以在短時間內快速對被測試對象的特定方面進行評估,發(fā)現(xiàn)缺陷并提出改進意見。但是這些外部的測試專家的成本通常都很高,項目因此要有高額的投入。
6)測試由組織外的團隊執(zhí)行
這種形式實現(xiàn)了最大化的測試獨立,既能夠以揭露軟件中的缺陷為目的開展工作,也能不受發(fā)現(xiàn)的缺陷的影響。組織和經(jīng)濟上的獨立性使其有更充分的條件按測試要求去完成工作。由于專業(yè)優(yōu)勢,獨立測試工作形成的測試結果更具信服力。由于測試結果常常和軟件的質量評價聯(lián)系在一起,因此,由專業(yè)化的獨立測試機構進行評價權威性更強。但是這種獨立性也帶來一些負面影響:知識傳遞可能不充分、需要明確的需求定義、需要很好的溝通平臺以及外部組織的質量不確定等。這些影響因素在采用這種形式的測試組織時是需要加以考慮的。
上面介紹了六種不同的測試獨立性的形式。測試獨立性的優(yōu)點有:
● 對軟件測試和軟件中的錯誤抱著客觀的態(tài)度,這種客觀的態(tài)度可以解決測試中的心理學問題,既能夠以揭露軟件中的錯誤為目的進行工作,也能不受發(fā)現(xiàn)的錯誤的影響。
● 經(jīng)濟上的獨立性使其工作有更充分的條件按測試要求去完成。
● 獨立測試作為一種專業(yè)工作,在長期的工作過程中勢必能夠積累大量的實踐經(jīng)驗,形成自己的專業(yè)優(yōu)勢。
● 軟件測試是技術含量很高的工作,需要有專業(yè)隊伍加以研究,并進行工程實踐。專業(yè)化分工是提高測試水平、保證測試質量、充分發(fā)揮測試效用的必然途徑。
● 由于專業(yè)優(yōu)勢,獨立測試工作形成的測試結果更具信服力,而測試結果常常和對軟件的質量評價聯(lián)系在一起。因此,由專業(yè)化的獨立測試機構進行評價的權威性更強。
● 獨立測試機構的主要任務是進行獨立測試工作,這使得測試工作在經(jīng)費、人力和時間方面更有保證,不會因為開發(fā)的壓力而減少對測試的投入,降低測試的有效性,從而可以避免開發(fā)組織側重軟件開發(fā)而對測試工作產生不利的影響。
測試的獨立性并不是越高越好。隨著測試獨立性的提高,也會帶來一些問題:
● 組織的復雜度越來越高,管理成本增加,當測試團隊不屬于該組織的時候,對于測試團隊的測試質量無法及時監(jiān)控。
● 溝通效率降低,原來可能只是需要打個招呼的問題,現(xiàn)在需要通過復雜的配置管理、缺陷管理和文檔管理系統(tǒng)來解決。
● 測試人員和開發(fā)人員的距離越來越遠,項目團隊氛圍可能會下降,某些極端情況甚至出現(xiàn)開發(fā)人員和測試人員的對立現(xiàn)象。
● 測試人員重點關注測試相關技能,對開發(fā)技能的掌握比較差,不利于發(fā)現(xiàn)系統(tǒng)需求和設計方面的缺陷。
● 獨立的測試團隊可能降低開發(fā)人員的質量責任感,開發(fā)人員可能會覺得產品質量應該是測試團隊的事情,而不是整個項目團隊的責任。
一個組織的測試活動可以采用多種測試獨立性策略。不同的測試級別可以使用不同形式的測試獨立性策略。低級別的測試采用獨立性比較低的策略,高級別的測試采用獨立性比較高的策略,例如:組件測試和集成測試由開發(fā)人員來完成,系統(tǒng)測試由企業(yè)內部獨立的測試團隊完成,驗收測試由組織外引入的測試團隊完成,如表1所示。具體的形式可以根據(jù)組織和項目的實際情況進行調整。