軟體測試組織與方法

2021-03-31 13:54:36 字數 3501 閱讀 3512

隨著計算機硬體成本的不斷下降,軟體在整個計算機系統的成本中占有越來越高的比例,如何提高軟體質量是整個計算機軟體行業的重大課題。軟體測試作為軟體開發的乙個重要環節,日益受到人們的重視。為了盡可能多地找出程式中的錯誤,生產出高質量的軟體產品,加強對測試工作的組織和管理就顯得尤為重要。

乙個軟體從開始計畫起,到廢棄不用止,稱為軟體生存週期。一般來說,軟體生存周包括計畫、開發、執行三個時期,每一時期又可分為若干更小的階段。計畫時期的主要任務是分析使用者要求,分析新系統的主要目標以及開發該系統的可行性。開發時期要完成設計和實現兩大任務具體。具體分為需求分析、概要設計、詳細設計、編碼、測試。其中編碼和測試是軟體開發期的最後兩個階段。執行時期是軟體生存週期的最後乙個時期,軟體人員在這一時期的工作,主要是做好軟體維護。

統計表明,開發較大規模的軟體,有40%以上的精力是耗費在測試上的,即使富有經驗的程式設計師,也難免在編碼中發生錯誤,何況,有寫錯誤在設計甚至分析階段早已埋下禍根,無論是早期潛伏下來的錯誤或編碼中新引入的錯誤,若不及時排除,輕者降低軟體的可靠性,重者導致整個系統的失敗。為防患於未然,強調軟體測試的重要性是必要的。

在g.j.myers的經典著作《軟體測試技巧》中,給出了測試的定義: "程式測試是為了發現錯誤而執行程式的過程"。測試的目的是發現程式中的錯誤,是為了證明程式有錯,而不是證明程式無錯。在軟體開發過程中,分析、設計與編碼等工作都是建設性的,惟獨測試是帶有"破壞性",測試可視為分析、設計和編碼3個階段的"最終複審",在軟體質量保證中具有重要地位。為了確保軟體的質量,較理想的做法應該是對軟體的開發過程,按軟體工程各階段形成的結果,分別進行嚴格的審查。

當設計工作完成以後,就應該著手測試的準備工作了,一般來講,由一位對整個系統設計熟悉的設計人員編寫測試大綱,明確測試的內容和測試通過的準則,設計完整合理的測試用例,以便系統實現後進行全面測試。

在實現組將所開發的程式經驗證後,提交測試組,由測試負責人組織測試,測試一般可按下列方式組織:

(1)首先,測試人員要仔細閱讀有關資料,包括規格說明、設計文件、使用說明書及在設計過程中形成的測試大綱、測試內容及測試的通過準則,全面熟悉系統,編寫測試計畫,設計測試用例,作好測試前的準備工作。

(2)為了保證測試的質量,將測試過程分成幾個階段,即:**審查、單元測試、整合測試和驗收測試。

(3)**會審:

**會審是由一組人通過閱讀、討論和爭議對程式進行靜態分析的過程。會審小組由組長,2~3名程式設計和測試人員及程式設計師組成。會審小組在充分閱讀待審程式文字、控制流程圖及有關要求、規範等檔案基礎上,召開**會審會,程式設計師逐句講解程式的邏輯,並展開熱烈的討論甚至爭議,以揭示錯誤的關鍵所在。實踐表明,程式設計師在講解過程中能發現許多自己原來沒有發現的錯誤,而討論和爭議則進一步促使了問題的暴露。例如,對某個區域性性小問題修改方法的討論,可能發現與之有牽連的甚至能涉及到模組的功說明、模組間介面和系統總結構的大問題,導致對需求定義的重定義、重設計驗證,大大改善了軟體的質量。

(4)單元測試:

單元測試集中在檢查軟體設計的最小單位-模組上,通過測試發現實現該模組的實際功能與定義該模組的功能說明不符合的情況,以及編碼的錯誤。由於模組規模小、功能單

一、邏輯簡單,測試人員有可能通過模組說明書和源程式,清楚地了解該模組的i/o條件和模組的邏輯結構,採用結構測試(白盒法)的用例,盡可能達到徹底測試,然後輔之以功能測試(黑盒法)的用例,使之對任何合理和不合理的輸入都能鑑別和響應。高可靠性的模組是組成可靠系統的堅實基礎。

(5)整合測試:

整合測試是將模組按照設計要求組裝起來同時進行測試,主要目標是發現與介面有關的問題。如資料穿過介面時可能丟失;乙個模組與另乙個模組可能有由於疏忽的問題而造成有害影響;把子功能組合起來可能不產生預期的主功能;個別看起來是可以接受的誤差可能積累到不能接受的程度;全程資料結構可能有錯誤等。

(6)驗收測試:

驗收測試的目的是向未來的使用者表明系統能夠像預定要求那樣工作。經整合測試後,已經按照設計把所有的模組組裝成乙個完整的軟體系統,介面錯誤也已經基本排除了,接著就應該進一步驗證軟體的有效性,這就是驗收測試的任務,即軟體的功能和效能如同使用者所合理期待的那樣。

經過上述的測試過程對軟體進行測試後,軟體基本滿足開發的要求,測試宣告結束,經驗收後,將軟體提交使用者。

整合測試及其後的測試階段,一般採用黑盒方法。

(1)用邊值分析法和(或)等價分類法提出基本的測試用例;

(2)用猜測法補充新的測試用例;

(3)如果在程式的功能說明中含有輸入條件的組合,宜在一開始就用因果圖法,然後再按以上(1)、(2)兩步進行。

a、先仿照上述步驟用黑盒法提出一組基本的測試用例,然後用白盒法作驗證。如果發現用黑盒法產生的測試用例未能滿足所需的覆蓋標準,就用白盒法增補新的測試用例來滿足它們。覆蓋的標準應該根據模組的具體情況確定。對可靠性要求較高的模組,通常要滿足條件組合覆蓋或路徑覆蓋標準。

b、先用白盒法分析模組的邏輯結構,提出一批測試用例,然後根據模組的功能用黑盒法進行補充。

人是測試工作中最有價值也是最重要的資源,沒有乙個合格的、積極的測試小組,測試就不可能實現。為高質高效地完成測試任務,好的測試工程師應具有如下能力:

一名理想的測試者必須能夠同測試涉及到的所有人進行溝通,具有與技術(開發者)和非技術人員(客戶,管理人員)的交流能力。既要可以和使用者談得來,又能同開發人員說得上話,不幸的是這兩類人沒有共同語言。和使用者談話的重點必須放在系統可以正確地處理什麼和不可以處理什麼上。而和開發者談相同的資訊時,就必須將這些活重新組織以另一種方式表達出來,測試小組的成員必須能夠同等地同使用者和開發者溝通。

就總體言,開發人員對那些不懂技術的人持一種輕視的態度。一旦測試小組的某個成員作出了乙個錯誤的斷定,那麼他們的可信度就會立刻被傳揚了出去。乙個測試者必須既明白被測軟體系統的概念又要會使用工程中的那些工具。要做到這一點需要有幾年以上的程式設計經驗,前期的開發經驗可以幫助對軟體開發過程有較深入的理解,從開發人員的角度正確的評價測試者,簡化自動測試工具程式設計的學習曲線。

開發者指責測試者出了錯是常有的事,測試者必須對自己的觀點有足夠的自信心。如果容許別人對自己指東指西,就不能完成什麼更多的事情了。

當你告訴某人他出了錯時,就必須使用一些外交方法。機智老練和外交手法有助於維護與開發人員的協作關係,測試者在告訴開發者他的軟體有錯誤時,也同樣需要一定的外交手腕。如果採取的方法過於強硬,對測試者來說,在以後和開發部門的合作方面就相當於"贏了戰爭卻輸了戰役"。

在遇到狡辯的情況下,乙個幽默的批評將是很有幫助的。

乙個理想的測試者應該有能力將以前曾經遇到過的類似的錯誤從記憶深處挖掘出來,這一能力在測試過程中的價值是無法衡量的。因為許多新出現的問題和我們已經發現的問題相差無幾。

可以預料,開發者會盡他們最大的努力將所有的錯誤解釋過去。測式者必須聽每個人的說明,但他必須保持懷疑直到他自己看過以後。

幹測試工作很容易使你變得懶散。只有那些具有自我督促能力的人才能夠使自己每天正常地工作。

乙個好的測試工程師具有"測試是為了破壞"的觀點,捕獲使用者觀點的能力,強烈的質量追求,對細節的關注能力。應用的高風險區的判斷能力以便將有限的測試針對重點環節。

總之,測試是軟體生存週期中的乙個關鍵的階段,也是保證軟體質量的重要活動之一。無論怎樣強調軟體測試的重要性和它對軟體可靠性的影響都不過分,面對軟體開發規模的增大、複雜程度的增加,更應高度重視軟體測試工作的組織與管理,以提到軟體質量。

軟體測試的組織與管理

本文 自軟體工程專家網 www.21cmm.com 作為軟體開發的重要環節,軟體測試越來越受到人們的重視。隨著軟體開發規模的增大 複雜程度的增加,以尋找軟體中的錯誤為目的的測試工作就顯得更加困難。然而,為了盡可能多地找出程式中的錯誤,生產出高質量的軟體產品,加強對測試工作的組織和管理就顯得尤為重要。...

軟體測試的組織與管理

作為軟體開發的重要環節,軟體測試越來越受到人們的重視。隨著軟體開發規模的增大 複雜程度的增加,以尋找軟體中的錯誤為目的的測試工作就顯得更加困難。然而,為了盡可能多地找出程式中的錯誤,生產出高質量的軟體產品,加強對測試工作的組織和管理就顯得尤為重要。從軟體的生存週期看,測試往往指對程式的測試,這樣做的...

軟體測試的組織與管理

作為軟體開發的重要環節,軟體測試越來越受到人們的重視。隨著軟體開發規模的增大 複雜程度的增加,以尋找軟體中的錯誤為目的的測試工作就顯得更加困難。然而,為了盡可能多地找出程式中的錯誤,生產出高質量的軟體產品,加強對測試工作的組織和管理就顯得尤為重要。從軟體的生存週期看,測試往往指對程式的測試,這樣做的...