首先,軟件測試的出發點就是質量。軟件測試的一切工作應該圍繞質量而開展。質量是軟件測試的中心,可以看做是金字塔的頂點,而支撐這個頂點的就是人員、資源、技術、流程。
因此,構成軟件測試的5個要素就是:質量、人員、技術、資源、流程。
5個要素構成5個面,每個面由3個要素構成,代表著軟件測試的工作面。其中每兩個要素構成8條邊,每條邊代表兩個要素之間的關系,如何處理這些關系,也就決定著測試能否獲得成功。
質量是軟件測試的中心。測試是質量保證的重要手段之一,測試本身就是為質量服務的。測試能否通過,其檢驗的標準是用戶的需求,也就是質量的標準。所以,在軟件測試的5個要素中,質量是核心,其他4個要素要服務于質量,服從于質量。
繼續往深處思考,在測試活動中,哪兩樣東西是我們必須關注的?答案應該是“測試覆蓋率”和“效率”。如何保證質量,一個重要的衡量方法就是測試的覆蓋率,包括用戶實際需求的覆蓋率和代碼覆蓋率。在保證質量的前提下,確定任務的優先級,采取正確的策略和方法,包括自動化測試方法,以高效的方法完成測試。
現在已經知道了測試的關注點,那又如何來保證這兩點呢?不外乎就是測試人員、測試流程、測試技術、測試資源幾個方面。就人員來說,要從招聘、培訓和考核等各個環節來培育良好的團隊文化,樹立正確的工作態度,強化質量意識,提高團隊的戰斗力,構建卓越的測試團隊。無論是采用敏捷的測試流程還是傳統的測試流程,一定要結合具體的產品和技術特點,因地制宜的形成適合自己的、有效的測試流程。測試技術比較豐富,從客戶端到服務端,從黑盒測試到白盒測試,權利構造一個完成的測試技術體系,使之滿足測試工作的需要。測試過程中會涉及到一系列的硬件、軟件資源,滿足測試過程中的所需資源,確保在其他幾個要素都完備的情況下,不會因資源而導致項目出現進度延期,質量下降的現象。
5個工作面:
①質量-人員-技術:團隊建設,包括人員的招聘、培訓、考核等;
②質量-人員-資源:成本管理,人員和軟硬件資源都是測試的投入,但同時必須將人和軟硬件資源區別對待,不要將人也作為軟硬件資源那樣處理,否則會帶來較多的問題。
③質量-技術-流程:技術和流程結合起來就是一種測試架構或測試框架,通過技術,將流程融入系統或工具中,流程的執行才能穩定、有效。技術通過框架固化,技術才能發揮最大效益。
④質量-流程-資源:基礎設施,構建測試環境,將測試建立在堅固、流程的基礎設施之上。
⑤人員-技術-流程-資源:項目管理,在一定的質量標準下,如何平衡這些要素、如何獲得最大的生產力,就是軟件測試項目管理的主要任務。
8組關系:
①質量與人員的關系:質量需要組織中的全員負責,每個人的行為都能對軟件產品質量有直接或者間接的影響,每個人都應該樹立積極的態度,做正確的事情,對軟件產品質量的提高貢獻自己的力量。(全員參與)
②質量與流程的關系:借助流程避免或減少人為的錯誤,借助流程可以督促人們在正確的時間做正確的事,甚至基于已有的良好流程迫使流程自身的優化,持續改進。所以,基于流程的質量改進是相對可靠、穩定的,基于流程的質量改進是可持續發展的。
③質量與技術的關系:有些流程的實施需要借助技術的支撐。借助技術,將流程固話在某個信息系統中,這樣流程的執行就更加可靠。如未經過評審的代碼不允許上傳到svn,這時候就可以開發一個輔助的代碼評審系統,未經過評審環節就無法提交,從這個角度保證質量。從這個意義上看,技術完全可以服務于質量,并能更好地保證質量,或使質量保證工作能事半功倍。
④質量與資源的關系:質量保證是需要成本的,從這個角度看,質量的提高需要更多的資源。可以說,質量和資源是成正比的,資源不足會降低質量,而資源充足可以改進質量,質量與資源的關系是被動的,最終取決于人、流程和技術。
⑤人員與技術的關系:軟件測試人員隸屬于研發團隊,在工程師范疇內,因是技術人員,故以技術為本。軟件測試人員作為用戶代表,雖然更多的是站在用戶的角度去看問題,去測試產品,但還是要靠技術武裝自己。因為,要完成測試任務,無論是測試環境的設置,還是測試工具及其腳本開發、性能測試等,都需要技術,包括系統部署技術、網絡技術、變成技術等。
⑥人員與流程的關系:樹挪死、人挪活,流程是死的,人是活的。人發現流程有問題,就需要作出調整,對流程進行修改。流程是人開發出來的,流程是為人服務的,而不是人為流程服務。但同時,我們也要認識到,流程是多數人甚至是組織的全部人員,達成一致意見的結果。是一種約定,在流程沒有改版之前,人們要遵守流程。
⑦技術與資源的關系:技術與資源相輔相成,技術的發展需要資源的支撐,而技術發展以后,又可以反過來優化資源,減少資源的需求。如果技術和資源之間的關系建立在這樣和諧的良性循環基礎上,對企業、對產品都有利。
⑧流程與資源的關系:流程與資源的關系和技術與資源的關系類似,也是相輔相成的關系。流程需要資源支持,資源為流程服務;同時,流程可以幫助我們更好地管理資源,充分地利用資源。