當前位置:學問君>學習教育>畢業論文>

淺談軟件測試的幾個問題

學問君 人氣:1.83W
淺談軟件測試的幾個問題

  【論文關鍵詞】:定義;因素;組織

  【論文摘要】:現今軟件開發的規模越來越大,作爲軟件開發的重要環節,軟件測試越來越受到人們的重視,軟件測試的重要性更加突出。文章主要探討軟件測試中的影響因素和軟件測試質量的提升與測試管理階段採用的方法和人員的組織的幾點認識。
    
  
  一、軟件測試的定義
  
  軟件測試(Software testing)是軟件生存期(Software life cycle)中的一個重要階段,是軟件質量保證的關鍵步驟。通俗地講,軟件測試就是在軟件投入執行前,對軟件需求分析、設計規格說明和編碼進行最終複審的活動。1983年IEEE提出的軟件工程術語中給軟件測試下的定義是:"使用人工或自動的手段來執行或測定某個軟件系統的過程,其目的在於它是否滿足規定的需求或弄清預期結果與實際結果之間的差別"。這個定義明確指出:軟件測試的目的是爲了檢驗軟件系統是否滿足需求。
  從用戶的角度來看,普遍希望透過軟件測試暴露軟件中隱藏的錯誤和缺陷,所以軟件測試應該是"爲了發現錯誤而執行程序的過程"。或者說,軟件測試應該根據軟件開發各階段的規格說明和程序的內部結構而精心設計一批測試用例(即輸入數據及其預期的輸出結果),並利用這些測試用例去執行程序,以發現程序錯誤或缺陷。
  
  二、影響軟件測試的因素
  
  影響測試效率的因素除了測試方法之外,主要因素還有人爲因素、軟件類型、錯誤類型、測試充分度等。下面對這些因素作一個簡要分析。
  
  1. 人爲因素
  軟件測試中的許多工作是由人來完成的,因此,人爲因素是影響測試效率的一個重要方面。這樣的差異並非偶然,這是因爲測試人員在應用一個測試方法時具有很大的靈活性,從而使測試人員的經驗和學習能力可以有較大的發揮餘地。所以只能採用越來越嚴格的測試方法和過程來有效地避免人爲因素對測試效率的影響。
  
  2. 軟件類型
  軟件類型也是影響測試效率的一個重要因素。即使是同一個測試者,測試不同類型的軟件的效率和發現軟件錯誤的能力也是不盡相同的。測試什麼類型的軟件的效率較高則因人而異,這往往與測試者的相關知識、經驗與專業訓練有關。
  
  3. 測試充分度
  測試充分度反映了一個測試是否得到了良好的執行,它直接關係到測試的效率。1993年Frankl和Weiss發現,只有當充分度十分接近100%時,才能使測試發現錯誤的能力得到發揮。因此,在測試軟件時,必須設法使充分度十分接近100%,否則將難以保證測試質量。
  
  三、加強對測試工作的組織和管理
  
  隨着軟件開發規模的增大、複雜程度的增加,以尋找軟件中的錯誤爲目的的測試工作就顯得更加困難。然而,爲了儘可能多地找出程序中的錯誤,生產出高質量的軟件產品,加強對測試工作的組織和管理就顯得尤爲重要。
  從軟件的生存週期看,測試往往指對程序的測試,這樣做的優點是被測對象明確,測試的可操作性相對較強。但是,由於測試的依據是規格說明書、設計文檔和使用說明書,如果設計有錯誤,測試的質量就難以保證。即使測試後發現是設計的錯誤,這時,修改的代價是相當昂貴的。因此,較理想的做法應該是對軟件的開發過程,按軟件工程各階段形成的結果,分別進行嚴格的審查。
  雖然測試是在實現且經驗證後進行的,實際上,測試的準備工作在分析和設計階段就開始了。
  
  1. 測試的過程及組織
  當設計工作完成以後,就應該着手測試的準備工作了,一般來講,由一位對整個系統設計熟悉的設計人員編寫測試大綱,明確測試的內容和測試透過的準則,設計完整合理的測試用例,以便系統實現後進行全面測試。
  在實現組將所開發的程序經驗證後,提交測試組,由測試負責人組織測試,測試一般可按下列方式組織:
  (1) 首先,測試人員要仔細閱讀有關資料,包括規格說明、設計文檔、使用說明書及在設計過程中形成的測試大綱、測試內容及測試的透過準則,全面熟悉系統,編寫測試計劃,設計測試用例,作好測試前的準備工作。
  (2) 爲了保證測試的質量,將測試過程分成幾個階段,即:代碼審查、單元測試、集成測試和驗收測試。
  (3) 代碼會審:代碼會審是由一組人透過閱讀、討論和爭議對程序進行靜態分析的過程。會審小組由組長,2~3名程序設計和測試人員及程序員組成。會審小組在充分閱讀待審程序文字、控制流程圖及有關要求、規範等檔案基礎上,召開代碼會審會,程序員逐句講解程序的,並展開熱烈的討論甚至爭議,以揭示錯誤的關鍵所在。實踐表明,程序員在講解過程中能發現許多自己原來沒有發現的錯誤,而討論和爭議則進一步促使了問題的暴露。例如,對某個局部性小問題修改方法的討論,可能發現與之有牽連的甚至能涉及到模組的功說明、模組間接口和系統構的大問題,導致對需求定義的重定義、重設計驗證,大大改善了軟件的質量。
  (4) 單元測試:單元測試集中在檢查軟件設計的最小單位-模組上,透過測試發現實現該模組的實際功能與定義該模組的功能說明不符合的情況,以及編碼的錯誤。由於模組規模小、功能單一、邏輯簡單,測試人員有可能透過模組說明書和源程序,清楚地瞭解該模組的'I/O條件和模組的邏輯結構,採用結構測試(白盒法)的用例,儘可能達到徹底測試,然後輔之以功能測試(黑盒法)的用例,使之對任何合理和不合理的輸入都能鑑別和響應。高可靠性的模組是組成可靠系統的堅實基礎
  (5) 集成測試:集成測試是將模組按照設計要求組裝起來同時進行測試,主要目標是發現與接口有關的問題。如數據穿過接口時可能丟失;一個模組與另一個模組可能有由於疏忽的問題而造成有害影響;把子功能組合起來可能不產生預期的主功能;個別看起來是可以接受的誤差可能積累到不能接受的程度;全程數據結構可能有錯誤等。
  
  2. 測試的人員組織
  爲了保證軟件的開發質量,軟件測試應貫穿於軟件定義與開發的整個過程。因此,對分析、設計和實現等各階段所得到的結果,包括需求規格說明、設計規格說明及源程序都應進行軟件測試。基於此,測試人員的組織也應是分階段的。
  (1) 軟件的設計和實現都是基於需求分析規格說明進行的。需求分析規格說明是否完整、正確、清晰是軟件開發成敗的關鍵。爲了保證需求定義的質量,應對其進行嚴格的審查。
  (2) 設計評審:軟件設計是將軟件需求轉換成軟件表示的過程。主要描繪出系統結構、詳細的處理過程和數據庫模式。按照需求的規格說明對系統結構的合理性、處理過程的正確性進行評價,同時利用關係數據庫的規範化理論對數據庫模式進行審查。
  (3) 程序的測試:軟件測試。是整個軟件開發過程中交付用戶使用前的最後階段,是軟件質量保證的關鍵。軟件測試在軟件生存週期中橫跨兩個階段:通常在編寫出每一個模組之後,就對它進行必要的測試(稱爲單元測試)。編碼與單元測試屬於軟件生存週期中的同一階段。該階段的測試工作,由編程組內部人員進行交叉測試(避免編程人員測試自己的程序)。這一階段結束後,進入軟件生存週期的測試階段,對軟件系統進行各種綜合測試。測試工作由專門的測試組完成,測試組設組長一名,負責整個測試的計劃、組織工作。測試組的其他成員由具有一定的分析、設計和編程經驗的專業人員組成,人數根據具體情況可多可少,一般3~5人爲宜。