1. 分類
1.1 軟件測試的方法可以從不同角度加以分類:
- 從是否需要執(zhí)行被測軟件的角度——分為靜態(tài)測試和動態(tài)測試跋选;
- 從是針對系統(tǒng)的外部功能還是內(nèi)部結(jié)構(gòu)的角度,——分為黑盒測試和白盒測試市埋;
- 從軟件測試的策略和過程的角度,——分為單元測試、集成測試、確認測試、系統(tǒng)測試和驗收測試等蚕愤。
1.1.1 靜態(tài)測試和動態(tài)測試
- 靜態(tài)測試就是通過對被測程序的靜態(tài)審查答恶,發(fā)現(xiàn)代碼中潛在的錯誤。
- 動態(tài)測試是通常意義上的測試萍诱,即使用和運行被測軟件悬嗓。
1.1.2 黑盒測試和白盒測試
- 黑盒測試是一種從用戶角度出發(fā)的測試。
- 白盒測試基于產(chǎn)品的內(nèi)部結(jié)構(gòu)來進行測試裕坊,檢查內(nèi)部操作是否按規(guī)定執(zhí)行
1.1.3 單元測試包竹,集成測試,確認測試籍凝,系統(tǒng)測試和驗收測試
- 單元測試是針對每個單元的測試周瞎,是軟件測試的最小單位。
- 集成測試是對已測試過的模塊進行組裝饵蒂,進行集成測試的目的主要在于檢驗與軟件設(shè)計相關(guān)的程序結(jié)構(gòu)問題
- 確認測試是檢驗所開發(fā)的軟件能否滿足所有功能和性能需求的最后手段声诸,通常采用黑盒測試方法。
- 系統(tǒng)測試的主要任務(wù)是檢測被測軟件與系統(tǒng)的其他部分的協(xié)調(diào)性退盯,通常采用黑盒測試方法彼乌。
- 驗收測試是軟件產(chǎn)品質(zhì)量的最后一關(guān)泻肯。這一環(huán)節(jié),測試主要從用戶的角度著手慰照,其參與者主要是用戶和少量的程序開發(fā)人員灶挟,通常采用黑盒測試方法。
2.靜態(tài)與動態(tài)測試
2.1 靜態(tài) 測試
- 計算機并不真正運行被測試的程序毒租,只對被測程序進行特性分析稚铣。
- 所謂靜態(tài)分析,就是不需要執(zhí)行所測試的程序
- 靜態(tài)測試包括代碼檢查蝌衔、靜態(tài)結(jié)構(gòu)分析榛泛、代碼質(zhì)量度量等。
- 它可以由人工進行噩斟,充分發(fā)揮人的邏輯思維優(yōu)勢曹锨,也可以借助軟件工具自動進行。
2.2 靜態(tài)測試的一般活動
1.與動態(tài)測試技術(shù)需要運行軟件不同剃允,靜態(tài)測試技術(shù)通過手工檢查(評審)或自動化分析(靜態(tài)分析)的方式對代碼或者其他的項目文檔進行檢查沛简。
2.在早期通過人工檢查和靜態(tài)分析發(fā)現(xiàn)和修改缺陷,其成本會比通過動態(tài)測試發(fā)現(xiàn)和修改缺陷成本低的多斥废;
3.靜態(tài)測試可以完全以人工的方式進行(評審)椒楣,也可以通過工具支持的方式來進行(靜態(tài)分析);
4.靜態(tài)測試的主要活動是檢查工作產(chǎn)品牡肉,并對工作產(chǎn)品做出評估捧灰;
5.靜態(tài)測試的結(jié)果可以優(yōu)化開發(fā)過程,并達到缺陷預(yù)防的目的统锤;
- 檢查算法的邏輯正確性毛俏,確定算法是否實現(xiàn)了所要求的功能;
- 檢查模塊接口的正確性饲窿,確定形參的個數(shù)煌寇、數(shù)據(jù)類型、順序是否正確逾雄,確定返回值類型及返回值的正確性阀溶;
- 檢查輸入?yún)?shù)是否有合法性檢查。
- 檢查調(diào)用其他模塊的接口是否正確鸦泳,檢查實參類型银锻、實參個數(shù)是否正確,返回值是否正確做鹰。
- 檢查是否設(shè)置了適當(dāng)?shù)?strong>出錯處理徒仓,以便在程序出錯時,能對出錯部分進行重做安排誊垢,保證其邏輯的正確性掉弛;
- 檢查表達式症见、語句是否正確,是否含有二義性殃饿。例如,下列表達式或運算符的優(yōu)先級:<=乎芳、=遵蚜、>=、&&奈惑、||吭净、++、--等肴甸;
- 檢查常量或全局變量使用是否正確寂殉;
- 檢查標識符的使用是否規(guī)范、一致原在,變量命名是否能夠望名知義友扰、簡潔、規(guī)范和易記庶柿;
- 檢查程序風(fēng)格的一致性村怪、規(guī)范性,代碼是否符合行業(yè)規(guī)范浮庐,是否所有模塊的代碼風(fēng)格一致甚负、規(guī)范;
- 檢查代碼是否可以優(yōu)化审残,算法效率是否最高梭域;
- 檢查代碼注釋是否完整,是否正確反映了代碼的功能维苔,并查找錯誤的注釋碰辅。
2.3 動態(tài)測試
1.動態(tài)方法是通過源程序運行時所體現(xiàn)出來的特征懂昂,來進行執(zhí)行跟蹤介时、時間分析以及測試覆蓋等方面的測試。
2.動態(tài)測試是真正運行被測程序
2.4 動態(tài)測試的基本步驟
- 選取定義域的有效值凌彬,或選取定義域外的無效值沸柔;
- 對已選取值決定預(yù)期的結(jié)果;
- 用選取值執(zhí)行程序铲敛;
- 執(zhí)行結(jié)果與預(yù)期的結(jié)果相比褐澎,不吻合則說明程序有錯。
- 在動態(tài)測試中伐蒋,又可有基于程序結(jié)構(gòu)的白盒測試和基于功能的黑盒測試工三。
2.5 其他測試方法
面向?qū)ο蟮能浖y試
- 面向?qū)ο蟮能浖y試(OO Test)是根據(jù)面向?qū)ο蟮能浖_發(fā)方法所設(shè)計的軟件系統(tǒng)所提出的軟件測試方法迁酸。
- OO Test又分為面向?qū)ο蠓治龅臏y試(OOA Test)、面向?qū)ο笤O(shè)計的測試(OOD Test)和面向?qū)ο蟮某绦驕y試(OOP Test)俭正。
協(xié)議軟件測試(測試第三方的API)
- 協(xié)議測試是一種黑盒測試奸鬓,它按照協(xié)議標準,通過控制觀察被測協(xié)議實現(xiàn)的外部行為對其進行評價掸读。
- 目前協(xié)議測試分成三個方面進行研究:一致性測試串远、互操作性測試和性能測試。
- 一致性測試主要測試協(xié)議實現(xiàn)是否嚴格遵循相應(yīng)的協(xié)議描述儿惫;
- 互操作性測試關(guān)注的是對于同一個協(xié)議標準澡罚,不同協(xié)議實現(xiàn)之間的互連通問題。
- 性能測試是觀測被測協(xié)議實現(xiàn)的各種性能參數(shù)肾请,如吞吐量和傳輸延遲等等留搔,其結(jié)果往往與輸入負載有關(guān)。
2.6 其他分類方法
- 按開發(fā)階段劃分
- 按測試技術(shù)劃分
- 按測試實施組織劃分
- 按測試的具體內(nèi)容劃分
2.6.1 按開發(fā)階段劃分
- 單元測試(Unit Testing)
- 集成測試( Integration Testing)
- 系統(tǒng)測試( System Testing)
- 驗收測試( Verification Testing)
2.6.2 按測試技術(shù)劃分
- 靜態(tài)測試(Static testing)
代碼審查筐喳、走查催式,靜態(tài)分析,技術(shù)評審避归。 - 動態(tài)測試(Dynamic testing)
黑盒測試荣月、白盒測試、灰盒測試梳毙。
2.6.3 按測試實施組織劃分
- 開發(fā)方測試
開發(fā)方測試是開發(fā)方在軟件開發(fā)環(huán)境下哺窄,通過檢測和提供客觀證據(jù),證實軟件的實現(xiàn)是否滿足規(guī)定的需求账锹。
2.6.4 按測試實施組織劃分
- 用戶測試
用戶測試是在實際應(yīng)用環(huán)境下萌业,用戶通過運行和使用軟件找出軟件使用過程中發(fā)現(xiàn)的軟件的缺陷與問題,檢測與核實軟件實現(xiàn)是否符合用戶的預(yù)期要求奸柬,并把信息反饋給開發(fā)者生年。
2.6.5 按測試實施組織劃分
- 第三方測試
第三方測試又稱“獨立測試”,是介于軟件開發(fā)方和用戶方之間的測試組織的測試廓奕。
2.6.6 按測試的具體內(nèi)容分為:
- 功能測試
- 性能測試
- 容量測試
- 健壯性測試
- 安全性測試
- 可靠性測試
- 兼容性測試
- 易用性測試
- 本地化測試
- 配置測試
- 安裝測試
- 文檔測試
3. 總結(jié)
測試方法的分類
從是否需要執(zhí)行被測軟件的角度 ——分為靜態(tài)測試和動態(tài)測試抱婉;
從是針對系統(tǒng)的外部功能還是內(nèi)部結(jié)構(gòu)的角度 ——分為黑盒測試和白盒測試阳啥;
從軟件測試的策略和過程的角度嚼沿,——分為單元測試、集成測試霸饲、確認測試铃肯、系統(tǒng)測試和驗收測試等患亿。
其他測試方法:第三方測試、協(xié)議軟件測試等