摘要:軟件測試作為保證軟件質量的重要手段,越來越引起人們的重視,而軟件測試項目中存在著風險,如果能預先重視風險的評估,并對可能會出現的風險制定積極的應對計劃,就可以在風險到來的時候,最大限度的避免風險或者降低風險所帶來的損失。
關鍵詞:測試風險;測試管理;軟件測試
軟件本身的復雜性以及測試本身的特性決定了測試活動實施過程中風險的大量存在,而風險會影響測試活動的成敗,嚴重時還可能導致整個項目的失敗。因此,對測試風險的管理越來越引起人們的重視。
1、風險存在的必然性
軟件測試項目的風險來自于軟件和測試自身的特點。
1.1 軟件的特點
1)軟件產品是不可見的:軟件項目的開發進度和軟件質量管控過程是否符合標準很難衡量,使得軟件的管理也難于把握;
2)軟件生產過程形式多樣,不存在絕對正確的形式:不同的軟件開發項目,應采取不同的或者特定的軟件開發過程。但在項目開發之初卻不能確定正確的形式,只能根據項目的特點和開發經驗選擇,并在開發過程中不斷的調整,真正適合該軟件的開發過程只有在項目開發結束才能確定;
3)大型軟件項目往往是“一次性”:項目一次性的特點使得過去的經驗不能被廣泛的借鑒。控制軟件管理風險的唯一途徑是設立監測系統,開展有效的風險監控和管理。
1.2 測試的特點
1)完全測試是不可能的:在有限的資源和時間條件下,找出所有的軟件缺陷和錯誤,使軟件趨于完美是不可能的,主要原因為是輸入量太大、輸出結果太多、路徑組合太多;
2)測試具有病毒一樣的免疫性:軟件缺陷具有病毒一樣可怕地免疫性,對其采用的測試越多,免疫能力就越強,軟件測試工程師想要找出更多軟件缺陷就更加困難;
3)測試是“泛型概念”:軟件測試涵蓋需求分析、概要設計等在內的整個軟件生命周期,以確保每一個階段都經住考驗;另外,測試自身也需要來自第三方的評估和監督,以確保測試的可靠性;
4)80-20原則:80%的軟件缺陷常常生存在20%的軟件模塊中。我們在系統分析、系統設計、系統實現階段只能檢測和規避80%的軟件缺陷。在下一步的系統測試中,可以幫助我們找到剩余缺陷的80%,剩余4%的缺陷只有在系統交付使用后經過大范圍長時間使用后才會暴露出來。所以,軟件測試只能保證盡可能多的發現軟件缺陷,卻無法保證能夠發現所有的軟件缺陷;
5)缺陷的必然性:由于軟件測試中錯誤的相關性,并非全部的軟件缺陷都能夠被成功修復。在缺陷的修復過程中會不可避免的引入新的錯誤,另外,在修復的過程中,我們往往還會受到時間、成本等各方面因素的限制,導致最終不可能完全的修復所有的軟件缺陷。
2、風險的評估
風險的管理基本的內容有兩項:風險評估和風險控制。
風險評估是在風險識別的基礎上,對識別出來的風險進行評估,主要從下列四個方面入手:
1)風險概率分析,即對風險發生的可能性設置一個尺度,如很高、較高、中等、較低、很低等;
2)描述風險并預測風險發生后,對軟件產品和測試結果可能產生的影響或造成的損失等;
3)確定風險評估的正確性,要對每個風險的表現、范圍、時間做出盡量準確的判斷;
4)根據損失(影響)和風險概率的乘積,來確定風險的優先級別,定制風險應對措施。
3、風險控制的原則
風險控制是建立在風險評估的基礎之上的,主要工作原則有:
1)針對有些可以避免的風險,例如測試用例執行率未達到100%,可以通過制定測試規范,要求測試人員嚴格按照測試用例執行測試,并記錄用例執行情況,來避免該類風險;
2)有些不可避免的風險,采取措施降低風險,尤其是等級較高的風險,將其轉化為不會引起嚴重后果的等級較低的風險;
3)凡事預則立,事先做好風險管理計劃,當風險成為現實時,可以更好的避免、轉移或減低風險;
4)對風險的處理制定應急、高效的解決方案。
4、軟件測試風險分析與管理方法
軟件生命周期包括問題定義及規劃、需求分析、軟件設計、程序編碼、軟件測試和運行維護六個階段,而軟件測試前面的任何一個環節的不嚴謹都可能增加軟件測試活動的風險。軟件測試活動中也存在各種各樣的風險,其中常見風險有需求變更風險、測試過程風險、測試組織和人員風險。
4.1 需求變更風險
在軟件測試項目尤其是歷時較長的大項目的實施過程中,總會不可避免的出現需求的變更。如何把握好需求的變更,減少需求變更帶來的風險,成為影響整個項目成敗的關鍵。
4.1.1 軟件測試項目需求變更的管理
1)設定需求變更的參考標準,將需求基線。當軟件測試項目組確認要產生需求變更時,用標準的變更申請表格將委托方的變更申請記錄存檔。每次的變更都應在需求基線的基礎上進行。
2)軟件測試項目組收到委托方提交的需求變更申請后,成立項目變更控制委員會(CCB),負責對項目變更所帶來的影響進行評估,包括測試項目的人力、物力、資金、管理、時間、質量、工作負荷等內部因素,以及資本、委托方要求的完工時間、項目負債情況等各個方面的影響。
3)變更確定后,選擇可行的實施方案。為了將項目變更的風險降低到最小,力求在盡可能小的變動幅度內對測試項目的目標、預算、團隊以及項目的進度等主要的因素進行微調。
4)需求變更后,要重新確定新的需求基線;受影響的軟件計劃、產品、活動等也要進行相應的變更,以保證和最新需求的一致性。
4.2 測試過程風險
在測試工作中,主要的風險有:
1)需求的臨時或突然變化,導致設計的修改和代碼的重寫,使得測試時間不夠;
2)測試用例沒有得到100%的執行;
3)質量需求或產品的特性理解不準確,造成測試范圍分析的誤差,結果某些地方始終測試不到或驗證的標準不對;
4)質量標準不都是很清晰的,如適用性的測試,仁者見仁、智者見智;
5)測試用例設計不到位,忽視了一些深層次的邏輯、邊界條件、用戶場景等;
6)測試環境與實際生產環境一般情況下都不可能完全一致,造成測試結果的誤差;
7)有些缺陷出現頻率不是百分之百,不容易被重現;如果代碼質量差,軟件缺陷很多,被漏檢的缺陷可能性就大;
8)回歸測試一般是選擇性的執行部分測試用例,必然帶來風險。
前面3種風險可以通過前期調研人員或測試人員與客戶加強溝通或者制定嚴格的制度來避免的,而針對有些不可避免的風險,采取一些有效的測試風險控制方法來盡量降低風險,例如測試環境不正確,可以通過事先列出要檢查的所有條目,在測試環境設置好后,由其他人員按已列出條目逐條檢查;針對程序中總是存在的“未發現的缺陷”,可以通過提高測試用例的覆蓋率(如達到99.9%)來降低這種風險;針對經常出現的產品發布前夕,在某個不是很重要的新功能上發現一個嚴重缺陷的問題,可以通過去掉該新功能來轉移因為修改此缺陷可能引起的某個原有功能上的缺陷的風險。回歸測試只執行部分用例帶來的風險是可以避免的,但出于時間或成本的綜合考慮,一般是存在的。
提前做好風險管理計劃和風險控制策略,可以更好的避免、轉移或者降低風險:
1)在執行項目計劃,做資源、時間、成本等的估算時,要留有余地;
2)在項目開始前,制定風險管理計劃,重點把握邊界上可能會出現變化、難以控制的因素;
3)重視人員隊伍的培養,對每個關鍵性技術崗位人員培養后備人員,確保項目不受人員流動的嚴重影響;
4)制定工作機制和文檔標準,保證文檔的及時產生,便于項目知識的分享和移交;
5)對工作進行相互審查,不同的測試人員在不同測試模塊上相互調換,及時發現問題;
6)日常跟蹤所有工作過程,及時發現風險的跡象,以避免風險。
4.3 測試組織和人員風險
4.3.1 測試組織風險
測試人員不獨立于開發者,測試人員獨立與開發者的程度將影響測試結果。
1)成立專門的測試組織;
2)制定專門的測試管理流程和質量保證手冊,規范測試過程,保證測試的質量;
3)委托專門的測試組織執行測試活動。
4.3.2 人員風險
測試項目尤其是周期較長的項目幾乎不可避免的要面臨人員的流動,從而增加項目失敗的風險系數。及早預防是降低這種人員風險的基本策略。下面從第三方測試的角度具體介紹一下人員風險的控制方法:
1)指派一名項目副經理或項目經理助理協調項目經理管理項目工作,降低關鍵崗位人員流動的風險。但是一般只建議在項目經理這種比較重要的崗位采用這種冗余復制的策略來預防人員風險,否則將大大增加項目成本;
2)建立良好的文檔管理機制,包括項目組進度文檔,個人進度文檔(測試日志)、版本控制文檔、整體技術文檔(測試策略、測試用例)、個人技術文檔(測試執行記錄、缺陷報告)等。一旦出現人員的變動,替補組員能夠根據完整的文檔盡早接手工作;
3)控制項目團隊中外包或兼職人員的比例,且項目核心部分的工作應該盡量由全職人員來擔任,以減少兼職人員對項目組人員不穩定性的影響;
4)加強測試項目組內的技術交流,定期召開項目例會,使測試組成員能夠相互熟悉對方的工作和進度,能夠在必要的時候接替對方工作;
5)為項目測試工作的開展提供盡可能好的基礎環境,比如待遇、項目組內良好的人際關系和工作氛圍等。良好的工作環境對于穩定項目組人員以及提高生產效率都有不可忽視的作用。
4.3.3 外包人員風險
1)制定相關的管理流程文件,規范外包人員的活動,防患于未然,規避外包風險;
2)通過外派監管團隊的方式對整個測試活動進行監控;
3)通過對測試活動的中間交付物進行檢查保證測試的質量,例如:對設計的測試用例進行評審、對編寫的測試代碼進行抽查、檢查測試執行的日志等;
4)對于外包測試的形式,除了避免承包方項目人員的泄密,還要注意雙方數據傳輸過程中的信息保密。在采用外包測試的時候,不可避免地要進行各種信息的傳送,可能是雙方的電話、E-Mail交流,也可能是軟件版本的傳輸,在條件允許的情況下要盡量使用VPN等方式。如果有必要,對傳輸的數據要進行加密。
5、結束語
測試過程中的風險總是存在的,該文對測試活動中主要的風險進行識別和控制,并確定針對性措施,避免風險發生,或者把風險降到最小。要想做好風險管理工作,就必須徹底改變測試項目的管理方式,建立防患于未然的管理意識,并結合具體的實踐工作不斷地分析遇到的風險,總結各種風險的應對措施,指導實踐,降低產品質量風險。