本課程學習導圖
2-1 軟件測試階段
一、單元測試
概念: 對軟件中的 最小可測試單元 進行檢查和驗證。
原則: (1)儘量測試用例相互獨立 (2)通常由代碼開發人員實施
好處:(1)能儘早發現缺陷 (2)利於重構 (3)簡化集成(爲集成測試奠基基礎) (4)單元測試規範很大程度上減小文檔編寫 (5)用於設計
限制:(1)窮盡測試不可能 (2)一行代碼須要3~5行測試代碼
單元測試框架:PHPUnit CppUnit JUnit nunit(針對.net)
二、集成測試
概念:在單元測試基礎上,將單元組裝測試,關注接口
集成測試實施方案:(1)Big Bang (2)自頂向下 (3)自底向上 (4)核心系統集成(先測試核心部分) (5)高頻測試
二、3經常使用於之前的瀑布模型,四、5經常使用於如今的敏捷開發
三、系統測試(主要用黑盒測試)
概念:將集成測試的軟件與系統中其餘部分結合起來,在 實際運行環境 中測試 ,偏於業務角度的驗證
關注點:(1)系統自己使用 (2)系統與其餘系統的連通 (3)在不一樣壓力下的表現 (4)真實使用環境下的表現
四、驗收測試
概念:交付測試。用戶進行測試
細分:alpha測試:用戶在開發者提供的環境下測試 beta測試:徹底脫離開發者
2-2 軟件測試手段
一、分類
根據測試可見度:黑盒、白盒、灰盒
狀態:靜態、動態
測試方式:手工、自動化
黑盒:
優勢:(1)容易實施,無需關注內部 (2)更貼近用戶視角
缺點:(1)測試覆蓋率較低,通常只有40% (2)黑盒自動化測試複用率低,維護成本較高
主要測試什麼?(1)不正確or遺漏功能 (2)接口上,輸入輸出是否正確 (3)是否有數據結構錯誤或外部信息(好比數據文件)訪問錯誤 (4)系統性能是否知足要求
主要設計方法:(1)等價類劃分法 (2)邊界值分析法(比較重點關注) (3)錯誤推斷法 (4)因果圖法 (5)正交試驗分析法 (6)狀態遷移圖法 (7)流程分析法
白盒:結構化測試,邏輯測試,透明測試
優勢:(1)迫使測試人員理解軟件原理 (2)覆蓋率較高,能夠檢測每條分支和路徑 (3)能發現隱藏在代碼的錯誤 (4)對代碼測試比較完全
缺點:(1)成本高 (2)沒法檢測遺漏路徑 (3)沒法檢測數據敏感性錯誤 (4)沒法直接驗證需求正確性
主要測試方法:(1)代碼檢測法 (2)靜態結構分析法 (3)靜態質量度量法 (4)邏輯覆蓋法(6種):語句、路徑、斷定、條件、斷定/條件、條件組合覆蓋。 (5)基本路徑測試法
靜態測試:
不執行被測程序,經過評審軟件文檔、代碼、程序複雜度、檢查是否符合編程標準,來發現程序不足之處。
有些白盒是靜態測試。
方法: 互審:程序員互相檢查;走查:小組集體檢查;會議:召開會議檢查
動態測試:
運行被測程序,比較運行結果與預期結果,分析運行效率、正確性、健壯性等。
黑盒大部分是動態測試。
手工測試:衆包測試、探索式測試
優勢:容易發現缺陷,容易實施、創造性、靈活性
缺點:不一致性、可靠性低、依賴人力資源、重複測試效率低、覆蓋量不容易度量
自動化測試:
用單獨的測試工具軟件,控制測試的自動化執行,並對預期和結果進行自動檢查。
單元、接口、性能多用該測試。
優勢:高效高速、準確可靠、高複用性、覆蓋量容易度量
缺點:機械、發現缺陷率低、一次性投入較大
2-3 軟件測試模式之瀑布模型
按測試模式分類:瀑布模型、敏捷測試、基於腳本測試、基於風險測試、探索式測試等
瀑布模型、v模型、W模型、x模型、H模型
2-4 敏捷測試、基於腳本測試、基於風險的測試
敏捷測試特色:
- 強調從客戶角度進行測試
- 重點關注迭代測試新功能,再也不強調測試階段
- 儘早測試,不間斷測試,具有條件即測試
- 強調持續反饋
- 預防缺陷重於發現缺陷。
敏捷測試VS傳統測試
基於腳本測試-SBT Script-based Testing
腳本測試-ST Scripted Testing
探索式測試-ET Exploratory Testing
- ET徹底拋開測試腳本的測試。它是一種測試風格、思惟而不是一種測試技。
- 優勢:
1.更能激發測試人員的創造性和工做樂趣
2.增長了發現新的或較深刻Bug的可能性
3.在較短期內找到更多Bug以及對SUT作一個快速的評估
4.有利於更加有效的實施自動化
5.更加適用於敏捷項目
6.減小了在簡單、繁複上用例的無謂編寫時間
1.測試管理上有侷限性,較難協調和控制
2.對於Bug的重複利用和重複上做用有限
3.對測試人員的測試技能和業務知識深度依賴較大
4.只有在被測系統已徹底可用的前提下才更有做用
5.ET的生產率很難定義
6.ET自己較難進行自動化
局部探索式測試:輸入、狀態、代碼路徑、用戶數據、執行環境。
全局探索式測試:漫遊測試法—–商業區、旅館區、歷史區、旅遊區、娛樂區、破舊區。
ET和ST要結合使用 ET應用好比說,問幾個問題猜出你心中的答案的應用
基於風險測試-RBT Risk-based Testing
風險有:質量風險、管理風險、風險級別=風險可能性*風險嚴重度
基於模型的測試-MBT model-based testing
根據需求建模,藉助工具建模而後執行,偏向於自動化測試。主要的MBT工具,微軟的Spec Explorer。。
2-5 軟件測試的分類
按照測試類型分:
功能測試(最主要)
|
性能測試
|
兼容性測試
|
|
|
部署測試
|
易用性測試
|
|
|
文檔測試
|
本地化測試
|
|
|
安全測試
|
無障礙測試
|
可靠性測試
|
- 功能測試:對提供給用戶的功能進行測試。
-
- 針對的問題:功能 錯誤或遺漏、界面問題、軟件自己性能錯誤、數據及訪問錯誤初始化及終止錯誤。
- 功能自動化測試工具:QTP(基於關鍵字驅動)如今其實已經用的不多了、winrunner; silkTest; Rational robot; selenium; Watir; Sikuli
- 性能測試:負載測試、壓力測試、穩定性測試
-
- 性能指標:併發用戶數VU、每秒事務數TPS、系統響應時間、設備性能
- 自動化測試工具:LoadRunner、Silkperformer、Jmeter、WebLoad、Apache Bench、LoadUI
- 靜態性能評估:對Web應用的頁面進行靜態分析,並給出評估結果的性能分析方法。工具備YSlow、PageSpeed。他們是瀏覽器插件,評級靜態網頁的標準有14個,減小HTTP請求之類的。
- 應用性能管理(APM):提供對系統的實時監控以實現性能管理、故障管理的解決方案。好比聽雲。
滲透測試:經過模擬對軟件系統的惡意攻擊行爲來評估系統安全性的一種測試,與黑客不一樣於,黑客未受權,並且最後還會抹掉記錄。
攻————–防
點————–面
-
- 能夠查看OWASP網站,關注網站中的OWASP Top10和Test Guide
- 安全測試工具:APPscan(針對web應用的漏洞掃描)、Webinspect(相似APPscan)、Nessus(針對服務器主機類)、Nmap(端口嗅探工具)、MetaSploit(攻擊框架)、WebScarab(代理劫持)、Fortify(白盒測試,代碼靜態分析)、W3AF(針對web應用)
- 兼容性測試:軟件自己的兼容性、不一樣平臺下的兼容性、在運行設備下的兼容性、軟件互操做性(指的是軟件內部不一樣功能操做是否兼容 & 與其餘軟件是否兼容,好比與微信是否兼容,與微信不兼容基本上就沒用了)
-
- 對web應用,還有瀏覽器兼容性,由於瀏覽器的內核不一樣
- 瀏覽器兼容性測試工具:BrowserShots(該網站輸入url值,能夠看不一樣平臺下的顯示)
- 文檔測試:配套的文檔的測試。如用戶手冊、使用說明、用戶幫助文檔等。
- 可靠性測試:軟件可靠性、(可靠性測試更多的是)硬件可靠性。
- 易用性測試:使用軟件時是否感受方便,用戶體驗怎樣。
- 本地化測試:針對軟件的本地化版本實施的針對性測試。好比英文版,中文版。不過不只僅是語言,測試內容還有:1.語言、書寫習慣;2.時區、日期格式、貨幣;3.當地風俗、法律法規;4.政治敏感內容。
- 部署測試:安裝測試,主要驗證系統部署過程,並確保軟件通過安裝測試後能夠正常使用。主要測試內容:不一樣環境下的部署驗證;參照部署文檔執行,過程的合理、正確性;
3-1 常見軟件測試分類
- 迴歸測試:軟件功能修改後,對軟件進行從新測試,以確認修改沒有引入新的錯誤或致使其餘部分產生錯誤。儘可能實現自動化。 迴歸測試的重心在關鍵模塊和重點功能組件。
- Monkey測試:搞怪測試。就是用一些隨機、稀奇古怪的方式來操做軟件,以測試系統的健壯性和穩定性。
- 冒煙測試:確認代碼中的更改會按預期運行,且不會破壞整個版本的穩定性。相似於迴歸測試,可是測試的注重點不一樣。敏捷開發的「每日構建」中用冒煙測試來確認合入的代碼沒有影響主要功能的正常。
- A/B測試(很是經常使用):多用於互聯網行業,經過爲頁面提供2個版本給用戶使用並記錄相關的用戶行爲數據,來肯定更優化設計。
-
- A/B測試實施要點:
-
- 1.多個方案並行;
- 2.每次測試僅改動一個變量;
- 3.按照某種規則進行優勝劣汰。
- A/B測試工具:Google Analytics Content Experiments、Visual Website Optimizer