思維腦圖

2-1 軟體測試階段
1、單元測試
概念: 對軟體中的 最小可測試單元 進行檢查和驗證。
原則: (1)盡可能測試用例互相獨立 (2)一般由代碼開發人員實施
好處:(1)能盡早發現缺陷 (2)利于重構 (3)簡化內建(為內建測試奠定基礎) (4)單元測試規範很大程度上減少文檔編寫 (5)用于設計
限制:(1)窮盡測試不可能 (2)一行代碼需要3~5行測試代碼
單元測試架構:PHPUnit CppUnit JUnit nunit(針對.net)
2、內建測試
概念:在單元測試基礎上,将單元組裝測試,關注接口
內建測試實施方案:(1)Big Bang (2)自頂向下 (3)自底向上 (4)核心系統內建(先測試核心部分) (5)高頻測試
2、3常用于以前的瀑布模型,4、5常用于現在的靈活開發
3、系統測試(主要用黑盒測試)
概念:将內建測試的軟體與系統中其他部分結合起來,在 實際運作環境 中測試 ,偏于業務角度的驗證
關注點:(1)系統本身使用 (2)系統與其他系統的連通 (3)在不同壓力下的表現 (4)真實使用環境下的表現
4、驗收測試
概念:傳遞測試。使用者進行測試
細分:alpha測試:使用者在開發者提供的環境下測試 beta測試:完全脫離開發者
2-2 軟體測試手段
1、分類
根據測試可見度:黑盒、白盒、灰盒
狀态:靜态、動态
測試方式:手工、自動化
黑盒:
優點:(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測試方法:局部、全局
局部探索式測試:輸入、狀态、代碼路徑、使用者資料、執行環境。
全局探索式測試:漫遊測試法—–商業區、旅館區、曆史區、旅遊區、娛樂區、破舊區。
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):提供對系統的實時監控以實作性能管理、故障管理的解決方案。比如聽雲。
- 安全測試:是否符合産品安全需求和品質标準。
滲透測試:通過模拟對軟體系統的惡意攻擊行為來評估系統安全性的一種測試,與黑客不同于,黑客未授權,而且最後還會抹掉記錄。
-
-
滲透測試 VS 安全測試
攻————–防
點————–面
-
-
- 可以檢視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 常見軟體測試分類
- A/B測試(非常常用):多用于網際網路行業,通過為頁面提供2個版本給使用者使用并記錄相關的使用者行為資料,來确定更優化設計。
-
- A/B測試實施要點:
-
- 1.多個方案并行;
- 2.每次測試僅改動一個變量;
- 3.按照某種規則進行優勝劣汰。
- A/B測試工具:Google Analytics Content Experiments、Visual Website Optimizer