軟件測試基礎學習

本課程學習導圖



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測試方法:局部、全局
               局部探索式測試:輸入、狀態、代碼路徑、用戶數據、執行環境。
               全局探索式測試:漫遊測試法—–商業區、旅館區、歷史區、旅遊區、娛樂區、破舊區。

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應用的頁面進行靜態分析,並給出評估結果的性能分析方法。工具備YSlowPageSpeed。他們是瀏覽器插件,評級靜態網頁的標準有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 常見軟件測試分類

  • 迴歸測試:軟件功能修改後,對軟件進行從新測試,以確認修改沒有引入新的錯誤或致使其餘部分產生錯誤。儘可能實現自動化。 迴歸測試的重心在關鍵模塊重點功能組件

  • Monkey測試:搞怪測試。就是用一些隨機、稀奇古怪的方式來操做軟件,以測試系統的健壯性和穩定性。

  • 冒煙測試:確認代碼中的更改會按預期運行,且不會破壞整個版本的穩定性。相似於迴歸測試,可是測試的注重點不一樣。敏捷開發的「每日構建」中用冒煙測試來確認合入的代碼沒有影響主要功能的正常。

  • A/B測試(很是經常使用):多用於互聯網行業,經過爲頁面提供2個版本給用戶使用並記錄相關的用戶行爲數據,來肯定更優化設計。
    • A/B測試實施要點:
      • 1.多個方案並行;
      • 2.每次測試僅改動一個變量;
      • 3.按照某種規則進行優勝劣汰。
    • A/B測試工具:Google Analytics Content Experiments、Visual Website Optimizer





相關文章
相關標籤/搜索