直至目前,我國還沒有適應國情的、系列化協調配套的、工程化的軟件生產過程管理、軟件質量評測、控制技術規范和法律規程指導,為此,我國急需以大力發展軟件第三方測試工程為基礎,建立、健全我國軟件工程監理體制。
第三方測試有別于開發人員或用戶進行的測試,其目的是為了保證測試工作的客觀性。從國外的經驗來看,測試逐漸由專業的第三方承擔。同時第三方測試還可適當兼顧初級監理的功能,其自身具有明顯的工程特性,為發展軟件工程監理制奠定堅實的基礎。
第三方測試工程主要包括需求分析審查、設計審查、代碼審查、單元測試、功能測試、性能測試、可恢復性測試、資源消耗測試、并發測試、健壯性測試、安全測試、安裝配置測試、可移植性測試、文檔測試以及最終的驗收測試等十余項。
測試并不僅僅是為了要找出錯誤。測試方還需要對錯誤進行歸類和總結,通過分析錯誤產生的原因和錯誤的分布特征,可以幫助項目管理者發現當前所采用的軟件過程的缺陷,以便改進,更好地幫助用戶。根據軟件工程的要求,測試工作應貫穿開發的全過程,如右圖所示。
從測試流程中可以看出,編碼和單元測試基本上屬于程序的調試,一般由開發方自己進行。作為第三方測試,定位在系統測試和集成測試最為有效。但是,為了得到高質量的軟件,第三方也要適當介入編碼與單元測試,能夠更好地保證測試的有效性、準確性和可信性。
認清“第三方”的責任
第三方測試以合同的形式制約了測試方,使得它與開發方存在某種‘對立’的關系,所以它不會刻意維護開發方的利益,保證了測試工作在一開始就具有客觀性。第三方一般都不直接參加開發方系統的設計和編程,為了能夠深入理解系統,發現系統中存在得問題,第三方測試必須按軟件工程的要求辦事,以軟件工程的標準要求開發方和用戶進行配合,從而較好地體現軟件工程的理念。引入第三方測試后,由于測試方相對的客觀位置,由用戶、開發方、測試方三方組成的三角關系也便于處理以往用戶、開發方雙方糾纏不清的矛盾,使得許多問題能得到比較客觀的處理。
第三方測試不同于開發方的自測試。由開發人員承擔的測試存在很多弊病,除去自身利益驅使帶來的問題外,還有許多不客觀的毛病,主要表現在思維的定勢上。由于他熟悉設計和編程等,往往習慣于按一定的“程式”考慮問題,以至思路比較局限,難于發現“程式”外存在的問題。因為第三方測試的目的就是為盡量多地發現程序中的錯誤而運行程序的過程,可以更多的發現問題。此外,隨著系統越做越大,客觀上講開發人員也無精力參與測試,同時也不符合大生產專業分工的原則。
第三方測試不同于用戶的自測試。用戶是應用軟件需求的提出者,對于軟件應該完成的功能是非常清楚的,是進行功能驗證的最佳人選。客觀情況是,大部分的用戶都不是計算機的專業人士,很難對系統的內部實現過程進行深入的分析。對系統的全面測試,功能測試僅僅是一個方面,還要包括并發能力、性能等多種技術測試。這些測試對技術有很高的要求,必須由計算機的專業人員才能完成。
第三方測試一般還兼顧初級監理的職能,不但要對應用進行各種測試,還進行需求分析的評審、設計評審、用戶類文檔的評審等,這些工作對用戶進行系統的驗收以及推廣應用都非常有意義。
如何組織管理
在測試的過程中,用戶、開發方與測試方形成了一個三角關系,從最終目標來講,三方是完全一致的,都是希望保證系統穩定運行。但在測試過程中,三方的關系卻是既對立又合作。對立是指各自堅持自己的職責,合作是指每一方的工作都需要其它兩方的支持和幫助。

軟件測試的過程
為了保證測試的順利進行,測試方必須強化內部的組織管理。根據我們的經驗,完整的測試機構必須包括業務分析部門、技術支持部門、規劃設計部門和綜合后勤部門。例如在中國現代化支付系統第三方測試項目當中,信息化工程總體研究中心的人員分工大致是:部分人員專攻支付業務,部分人員專攻技術支持,部分人員負責測試規劃與綜合案例的設計,部分人員負責現場情景調度,部分人員從事案例的細化與運行。測試結果表明,總體上達到了各司其職、忙而有序。
“第三方”測試什么
根據軟件的特性,第三方軟件測試工程可劃分為三種類型四個層次。
(1) 第一類是系統軟件、環境軟件和各類工具軟件等的測評。這類軟件多作為計算機的環境或作 “公用” 支撐軟件,產品類型多、市場銷量大、生產廠商多,產品的特點大都有企業、甚至國際的產品質量標準,用戶選擇使用時大都希望進行產品功能、性能的對比測試;對于這類軟件的評測重點是軟件產品的功能、性能和特點評測。
(2)第二類是面向應用軟件系統的測評。這類軟件,具有很強的行業應用特性,往往是要由用戶與開發商簽定項目合同,開發商負責開發,用戶負責驗收。對這類軟件的評測,根據用戶對第三方的依賴程度,又可分為兩個層次。
① 第一個層次只對應用軟件系統進行綜合性功能、性能測試。大體是在軟件系統級進行“黑盒”測試,并不對軟件過程進行控制、監督。
② 第二個層次是對應用軟件系統進行質量監理與評測。不僅承擔第一個層次的任務還要對軟件過程進行監控,具備初級軟件工程監理的職責。
承擔該類軟件質量監理評測的第三方,承擔軟件過程質量監理的責任,在軟件生命周期過程中,從軟件定義開始,要對軟件過程從質量保證角度進行規范化的監督、管理和控制。評測工作不僅包括軟件生命周期各階段的評審,而且還要對程序系統,進行包括模塊白盒測試在內的系統集成、系統驗收等測試。第三方實際上是軟件業主授權的初級的軟件工程監理。
(3)第三類是對軟件企業的CMM評估認證,也是最高層次的軟件評測。
了解測試評估
測試評估是軟件測試的一個階段性的結論,用所生成的測試評估報告,來確定測試是否達到完全和成功的標準。在測度評估階段向用戶提供強有力的支持,包括通過測試報告,驗證測試結果是否符合測試計劃中制定的測試標準;根據缺陷報告提供的測試結果數據,給出軟件質量和測試完整性的評估報告;特別在以下幾方面對測試的過程進行評測:
(1)評估測試用例覆蓋:測試的目標是確保100%的測試用例全部成功地執行。如果這個目標可行或不可能達到,則要根據不同的情況制定不同的測試覆蓋標準。主要考慮風險和嚴重性、可接受的覆蓋百分比。
(2)評估代碼覆蓋:需要斷定測試目標期望的總的測試代碼行數,在測試中真正執行的代碼行數及其百分比,將此結果記錄在測試評估報告中。
(3)分析缺陷:對缺陷進行分析,應遵照缺陷分析策略中制定的分析標準。
最常用的缺陷分析標準有三種:缺陷分布——缺陷數量作為隨缺陷屬性變化的函數(如狀態和級別);缺陷趨勢——缺陷數量作為以時間為條件的函數;缺陷滯留——特殊的缺陷密度報告,缺陷數量與缺陷在某一狀態保留的時間長短有關。
(4)確定測試是否達到完全和成功的標準在此階段將判定測試是否已達到完全并可接受,生成測試結果報告。