軟體測試基礎知識

2022-08-24 08:57:08 字數 4488 閱讀 6771

軟體生命週期(sdlc)的六個階段

1)問題的定義及規劃——此階段是開發、需求產品通過討論,主要確定軟體的開發目標及其可行性。

2)需求分析——在確定軟體開發可行的情況下,對軟體需要實現的各個功能進行詳細分析。由於需求在整個軟體開發過程中可能會不斷變化和深入,所以需要制定相應的需求變更計畫,以保護整個專案的順利進行。

3)軟體設計——根據需求分析的結果,對整個軟體系統進行設計,如系統框架設計、資料庫設計等。軟體設計一般分為總體設計和詳細設計。

4)程式編碼——將軟體設計的結果轉換成計算機可執行的程式**。在程式編碼中必須要制定統一,符合彼岸準的編寫規範,以保證程式的可讀性,易維護性,提高程式的執行效率。

5)軟體測試——在軟體設計完成後需要經過嚴密的測試,以發現軟體在整個設計過程中存在的問題並加以糾正。整個測試過程分單元測試、組裝測試,系統測試三個階段進行。測試的方法主要有白盒測試和黑盒測試兩種。在測試過程中需要建立詳細的測試計畫並嚴格按照測試計畫進行測試,以減少測試的隨意性。

6)執行維護——軟體維護是軟體生命中期中持續時間最長的階段,在軟體開發完成並投入使用後,由於多方面的原因,軟體不能繼續適應使用者的需求,要延續軟體的使用壽命,就必須對軟體進行維護。軟體的維護包括糾錯性維護和改進性維護兩個方面。

軟體生命週期模型

1)從概念提出的那一刻,軟體產品就進入的軟體生命週期。在經歷需求、分析、設計、實現、部署後,軟體將被使用並進入維護階段,直到最後逐漸消亡,這樣的乙個過程,稱為軟體生命週期模型(life cycle model)。

2) 典型的模型包括:瀑布模型、快速原型模型、迭代模型。瀑布模型的特點(文件是主體),很多問題在最後才會暴露出來,迭代模型比瀑布模型問題暴露的早,快速原型法比瀑布模型更直觀。

軟體測試的概念

– 廣義,指軟體生成週期中所有的檢查、評審和確認工作,其中包括了對分析、設計階段,以及完成開發後維護階段的各類文件、**的審查和確認

–  狹義,識別軟體缺陷的過程,即實際結果與預期結果的不一致

– 軟體測試是為了發現錯誤而審查軟體文件、檢查軟體資料和執行程式**的過程

– 軟體測試應該是對軟體形成過程的文件,資料以及程式進行的測試,而不僅是對程式進行的測試

軟體質量——軟體滿足規定使用者或潛在使用者需求的能力,要從軟體在內部、外部和使用過程中表現來衡量,包含內部質量、外部質量和使用質量。

軟體測試 vs 質量保證

軟體質量保證和軟體測試時軟體質量工程中兩個不同層面的工作。

@ 質量保證(qa)——質量保證的終於工作通過預防,檢查與改進來保證軟體質量,所關注的重點是軟體質量的檢查與測量,著眼於軟體開發的過程、步驟和產物。

@ 軟體測試(qc)——測試過程雖然與開發過程緊密相關,但關心的不是過程的活動,而是對過程的產物以及開發出的軟體進行剖析。

軟體測試目的

1)測試的目的就是發現軟體中的各種缺陷

2)測試只能證明軟體存在缺陷,不能證明軟體不存在缺陷

3)測試可以使軟體的缺陷降低到一定程度,而不是徹底消滅

4)以較少的用例、時間、和人力照常軟體中的各種錯誤和缺陷,以確保軟體的質量

5)通過測試證明軟體的功能和效能與需求說明相符合,測試結果資料為可靠性分析提供了依據

軟體測試原則

1)good-enough:一種權衡投入、產出比的原則

2)保證測試的覆蓋程度,但窮舉測試時不可能的

3)所有測試都應追溯到使用者需求

4)越早測試越好,測試過程與開發成功應是想結合的

5)測試規模由小而大,單元測試到系統測試

6)為了盡可能地發現錯誤,應該由獨立的第三方來測試

7)不能為了便於測試擅自修改程式

8)既應該測試軟體該做什麼也應該測試軟體不該做什麼

軟體測試的物件

1)根據軟體定義,軟體包括程式、資料和文件,所以軟體測試並不僅是程式測試,也應該貫穿整個軟體生命週期

2)需求分析、概要設計、詳細設計以及程式編碼等各階段所得到的文件,包括需求規格說明,概要設計規格說明,詳細設計規格說明以及源程式

3) 為了把握各個環節的正確性,人民需要進行各種驗證和確認工作:

– 驗證(verification):保證軟體正確實現特定功能的一系列活動和過程,目的是保證軟體生命週期中的每乙個階段的成功滿足上乙個階段所設定的目標==do right thing

– 確認(validation):保證軟體滿足使用者需求的一系列的活動和過程,目的是在軟體開發完成後保證軟體,使用者需求相符合==do thing right

黑盒測試

– 黑盒測試,又稱功能測試或資料驅動測試,是針對軟體的功能需求/實現進行測試,通過測試來檢測每個功能是否符合需求,不考慮程式內部的邏輯結構

– 黑盒測試方法:功能劃分、等價類劃分、邊界值分析、因果圖、錯誤推測等

白盒測試

– 白盒測試也稱結構測試或邏輯驅動測試,必須知道軟體內部工作過程,**的內部結構、邏輯設計,通過測試來檢測軟體內部是否按照需求、設計正常執行

– 對應於程式的一些主要結構:語句、分支、邏輯路徑、變數

– 白盒測試的主要方法:語句覆蓋方法、分支覆蓋方法、邏輯覆蓋方法

灰盒測試

– 灰盒測試介於白盒和黑盒測試之間

– 灰盒測試一方面考慮程式**的功能性表現,另一方面,又需要考慮程式**的內部結構

– 通俗說,灰盒測試就是白盒加黑盒,比如效能測試,自動化功能測試就是採用了灰盒測試的方法

靜態測試

– 靜態測試部實際執行軟體,主要是對軟體的程式設計格式、結構等方面進行評估,它可以由人工進行,也可以借助軟體工具(qac++、c++test等)自動進行

– 靜態測試包括:**檢查、程式結構分析、**質量度量等

動態測試

– 動態測試需要在開發/測試環境或實際執行環境中執行軟體,並使用測試用例去查詢軟體缺陷,輸入設計好的測試用例,檢查程式**執行得到的結果與測試用例中預期結果之間是否有差異,判定實際結果與**結果是否一致

– 動態測試四部分:設計測試用例、執行測試用例、分析比較輸出結果,總結測試報告;主要使用黑、白、灰盒三種測試方法

– 動態測試包括:功能確認與介面測試、覆蓋率分析、效能分析、記憶體分析等

手工測試 vs 自動測試

@ 手工測試——測試人員設計測試用例並執行,然後根據實際結果和預期結果比較並記錄測試結果,最終輸出測試報表的測試活動

1)優點:

可充分發揮測試工程師的主觀能動性,將其智力體現在測試工作中

能發現許多缺陷,單同時又有一定的侷限性和單調枯燥性

2)缺點:

– 測試工作量大,重複多,修改的缺陷越多,回歸測試越困難

– 手工完成測試的全部過程無法保證測試的科學性與嚴密性

– 沒有人能向決策層提供精確的資料以度量當前的工作進度及工作效率 

– 反覆測試帶來的倦怠情緒及其他人為因素使得測試標準前後不一 

– 測試花費的時間越長,測試的嚴格性也就越低 

@ 自動化測試——利用測試工具,模擬使用者業務使用流程,讓他們自動執行來查詢缺陷

1)優點:

– 自動測試利用軟體測試工具自動實現全部或部分測試工作:管理、設計、執行和報告

– 節省大量的測試開銷,並能夠完成一些手工測試無法實現的測試

– 自動測試將測試人員從反覆、煩雜的測試執行中解放出來,用更多的時間進行測試設計和結果分析

2)缺點:

– 只可檢查比較主要的問題,如崩潰、宕機,無法發現一般的日常錯誤

– 軟體測試不可能完全自動化,自動化不能完成所有手工測試任務  

– 無創造性且靈活性差,不能改進測試的有效性 

– 過程中可能會遇到許多意想不到的問題,特別是當軟體不穩定時

– 編寫指令碼工作量大,執行時間成本和維護成本高

效能測試vs壓力測試

@ 效能測試

– 效能測試的目的不是去找bug,而是排除系統的瓶頸,以及為以後的回歸測試建立乙個基準。而效能測試的操作,實際上就是乙個非常小心受控的測量分析過程

– 概括就是:在不同負載下(負載一定)時,通過一些系統引數(如反應時間等)檢查系統的運**況

@ 壓力測試

– 壓力測試是為了發現系統能支援的最大負載,他的前提是要求系統效能處在可以接受的範圍內,比如經常規定的葉面3秒鐘內響應

– 概括就是:在效能可以接受的前提下,測試系統可以支援的最大負載

舉例說明:針對乙個**進行測試,模擬10到50個使用者就是在進行常規效能測試,使用者增加到1000乃至上萬就變成了壓力/負載測試。如果同時對系統進行大量的資料查詢操作,就包含了強度測試

軟 件 測 試 基 礎 知 識

軟體效能指標主要有響應時間,系統響應時間和應用延遲時間,吞吐量,併發使用者數,資源利用率五種。軟體實現的演算法與系統響應時間和應用延遲時間是直接相關的,所以軟體的效能也必定與實現演算法是有關係的吞度量是指系統在單位時間內處理請求的數量,對於無鬢髮的應用系統而言,吞度量是與響應時間嚴格的反比關係,因為...

軟體測試基礎知識

1 發現軟體錯誤 2 有效定義和實現軟體部件由底層到高層的組裝過程 3 驗證軟體是否滿足任務書和系統定義文件所規定的技術要求 4 為軟體質量模型的建立提供依據。概念 軟體測試是軟體質量保證的關鍵組成部分,對軟體測試的認識可分為以下幾個階段 測試就是除錯階段 測試是證明軟體正確階段 測試是發現軟體中錯...

軟體測試基礎知識

本人部落格文章 1.確認軟體的質量 a.是確認軟體做了你所期望做的事情 do the right thing b.是確認軟體以正確的方式來做了這個事情 do it right 2.是提供資訊 比如提供給開發人員或程式經理的回饋資訊,為風險評估所準備的資訊 3.是在測試軟體軟體產品本身,而且還包括軟體...