【教科書】軟件測試理論基礎,讓你一文了解軟件測試的點點滴滴

軟件測試(Software Testing)的定義

官方釋義

  1. 用來促進鑑定軟件的正確性、完整性、安全性和質量的過程;
  2. 是一種實際輸出與預期輸出間的審覈或者比較過程;
  3. 使用人工和自動手段來運行或測試某個系統的過程,其目的在於檢驗它是否知足規定的需求或是弄清預期結果與實際結果之間的差異;

經典定義

在規定的條件下對程序進行操做,以發現錯誤;也是對軟件質量進行評估的一個過程。安全

軟件質量的定義

 軟件知足規定或潛在用戶需求的能力。具體地說,軟件質量是軟件符合明確敘述的功能和性能需求、文檔中明確描述的開發標準、以及全部專業開發的軟件都應具備的和隱含特徵相一致的程度。工具

軟件測試與軟件質量的區別

軟件質量(QA)

 主要工做是經過預防,檢查與改進來保證軟件質量。它所關注的是軟件質量的檢查與測量。着眼軟件開發活動中的過程、步驟及產物,而不是對軟件進行剖析進而找出問題。性能

軟件測試

 測試關心的不是過程的活動,而是對過程的產物以及開發出的軟件進行剖析。測試人員要「執行」軟件,對過程當中的產物——開發文檔和源代碼進行走查,運行,以找出問題,報告質量。測試人員也必須假設軟件存在問題,因此所作的操做都是爲了找出更多的問題,而不只僅驗證每一件事是正確的。單元測試

軟件測試內容

 根據測試定義,測試貫穿於整個軟件生命週期中。在開發的不一樣階段,須要測試不一樣的內容。包括文檔,源代碼,數據等。測試

軟件測試的分類

  • 按開發階段來分:單元測試、集成測試、系統測試、驗收測試。
  • 按測試的實施單位來分:開發方測試、用戶測試、第三方測試。
  • 按測試技術來分:白盒測試、黑盒測試、灰盒測試。

軟件測試的經常使用種類

    • 功能測試:對產品的各功能進行驗證,根據功能測試用例,逐項測試,檢查產品是否達到用戶要求的功能。設計

    • 黑盒測試:把測試對象看作一個黑盒子,測試人員徹底不考慮程序內部的邏輯結構和內部特性,只依據程序的需求規格說明書,檢查程序的功能是否符合它的功能說明。所以黑盒測試又叫功能測試或數據驅動測試。
      黑盒測試方法包括:等價類劃分、邊界值分析、因果圖分析、錯誤推測法、功能圖分析等。指針

    • 白盒測試:是對軟件的過程性細節作細緻的檢查。是把測試對象看作一個打開的盒子,它容許測試人員利用程序內部的邏輯結構及有關信息,設計或選擇測試用例,對程序全部邏輯路徑進行測試。經過在不一樣點檢查程序狀態,肯定實際狀態是否與預期的狀態一致。所以白盒測試又稱爲結構測試或邏輯驅動測試。
      白盒測試方法包括:語句覆蓋、斷定覆蓋、條件覆蓋、斷定/條件覆蓋、條件組合覆蓋、路徑覆蓋等。對象

    • 單元測試:是對軟件中的基本組成單位進行的測試,如一個模塊、一個過程等等。它是軟件動態測試的最基本的部分,也是最重要的部分之一,其目的是檢驗軟件基本組成單位的正確性。一個軟件單元的正確性是相對於該單元的規約(詳細設計)而言的。所以,單元測試以被測試單位的規約爲基準。
      單元測試方法包括:控制流測試、數據流測試、排錯測試、分域測試等。遞歸

    • 集成測試:是在軟件系統集成過程當中所進行的測試,其主要目的是檢查軟件單位之間的接口是否正確。它根據集成測試計劃,一邊將模塊或其餘軟件單位組合成愈來愈大的系統,一邊運行該系統,以分析所組成的系統是否正確,各組成部分是否合拍。集成測試的策略主要有自頂向下和自底向上兩種。接口

    • 系統測試:是對已經集成好的軟件系統進行完全的測試,以驗證軟件系統的正確性和性能等知足其規約所指定的要求,檢查軟件的行爲和輸出是否正確並不是一項簡單的任務,它被稱爲測試的「先知者問題」。所以,系統測試應該按照測試計劃進行,其輸入、輸出和其餘動態運行行爲應該與軟件規約進行對比。軟件系統測試方法不少,主要有功能測試、性能測試、隨機測試等。

    • 迴歸測試:是指修改了舊代碼後,從新進行測試以確認修改沒有引入新的錯誤或致使其餘代碼產生錯誤,迴歸測試的困難在於很差肯定哪些內容應當被從新測試。

    • 驗收測試:由客戶或最終用戶執行,旨在向軟件的購買者展現該軟件系統知足其用戶的需求。它的測試數據一般是系統測試的測試數據的子集。所不一樣的是,驗收測試經常有軟件系統的購買者表明在現場,甚至是在軟件安裝使用的現場。這是軟件在投入使用以前的最後測試。

    • Alpha測試:由用戶在開發者的場所進行,而且在開發者對用戶的「指導」下進行測試。開發者負責記錄發如今錯誤和使用中遇到的問題。總之,Alpha測試是在受控的環境中進行的。

    • Beta測試:由軟件的最終用戶們在一個或多個客房場所進行。與Alpha測試不一樣,開發者一般在Beta測試的現場,因Beta測試是軟件在開發者不能控制的環境中的「真實」應用。用戶Beta測試過程當中遇到的一切問題(真實在或想像的),而且按期把這些問題報告給開發者。接收到在Beta測試期間報告的問題以後,開發者對軟件產品進行必要的修改,並準備向全體客戶發佈最終的軟件產品。

    • 冒煙測試:能夠根據其名稱理解爲該種測試耗時短,僅用一袋煙功夫足夠了;實際上是對軟件基本的功能進行測試,測試的對象是每個新編譯的須要正式測試的軟件版本,目的是確認軟件基本的功能正常,保證軟件系統能跑的起來,能夠進行後續的正式測試工做。

    • 隨機測試:主要是根據測試者的經驗對軟件進行功能和性能抽查。它是根據測試說明書執行樣例測試的重要補充手段,是保證測試覆蓋完整性的有效方式和過程。

    • 動態測試:是指經過運行被測程序,檢查運行結果與預期結果的差別,並分析運行效率和健壯性等性能,這種方法由三部分組成:構造測試實例、執行程序、分析程序的輸出結果。所謂軟件的動態測試,就是經過運行軟件來檢驗軟件的動態行爲和運行結果的正確性。目前,動態測試也是公司的測試工做的主要方式。

    • 靜態測試:是指不運行被測程序自己,僅經過分析或檢查源程序的語法、結構、過程、接口等來檢查程序的正確性。對需求規格說明書、軟件設計說明書、源程序作結構分析、流程圖分析、符號執行來找錯。靜態方法經過程序靜態特性的分析,找出欠缺和可疑之處,例如不匹配的參數、不適當的循環嵌套和分支嵌套、不容許的遞歸、未使用過的變量、空指針的引用和可疑的計算等。靜態測試結果可用於進一步的查錯,併爲測試用例選取提供指導。

    • UI測試:指測試用戶界面的風格是否知足客戶要求,文字是否正確,頁面美工是否好看,文字,圖片組合是否完美,背景是否美觀,操做是否友好等;用戶界面(UI)測試用於覈實用戶與軟件之間的交互。UI測試的目標是確保用戶界面會經過測試對象的功能來爲用戶提供相應的訪問或瀏覽功能。另外,UI測試還可確保UI中的對象按照預期的方式運行,並符合公司或行業的標準。包括用戶友好性,人性化,易操做性測試。UI測試比較主觀,與測試人員的喜愛有關。

    • 自動化測試:利用軟件測試工具自動實現所有或部分測試,它是軟件測試的一個重要組成部分,能完成許多手工測試沒法實現或難以實現的測試;正確、合理的實施自動測試,可以快速、全面的對軟件進行測試,從而提升軟件質量,節省經費,縮短軟件發佈週期。

    • 性能測試:是經過自動化的測試工具模擬多種正常、峯值以及異常負載條件來對系統的各項性能指標進行測試。負載測試和壓力測試都屬於性能測試,二者能夠結合進行。經過負載測試,肯定在各類工做負載下系統的性能,目標是測試當負載逐漸增長時,系統各項性能指標的變化狀況。壓力測試是經過肯定一個系統的瓶頸或者不能接收的性能點,來得到系統能提供的最大服務級別的測試。

相關文章
相關標籤/搜索