天天看點

全網最全最系統——軟體測試基礎學習!(小白建議收藏)

思維腦圖

全網最全最系統——軟體測試基礎學習!(小白建議收藏)

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

繼續閱讀