軟件測試相關概念以及原則
敏捷測試:1、強調從客戶角度進行測試
2、重點關注迭代測試新功能,不再強調測試階段
3、盡早測試,不間斷測試,具備條件即測試
4、強調持續反饋
5、預防缺陷重于發現缺陷
敏捷測試 VS 傳統測試
傳統測試:1、測試是質量的最后保護者
2、嚴格的變更管理
3、預先的計劃和細節的準備
4、重量級文檔
敏捷測試:1、開發和測試人員是緊密合作,大家都有責任對軟件負責
2、變更是可接受的,擁抱變更
3、計劃隨著進展時常調整
4、只需要絕對必要的文檔
基于腳本的測試:
Script-based Testing:先做測試設計再做測試
Script Testing(ST)
Exploratory Testing(ET):探索式測試;比較流行的測試方法。通過探索我們的被測系統,帶著問題來使用我們的被測系統,并在探索的過程中發現測試的要點,找出我們被測系統的問題,在測試過程當中測試設計和測試執行原則是并行的,對于測試人員來說更加自由,更加依賴測試人員的責任。
1、完全拋開測試腳本的測試
2、它是一種測試風格,思維,而不是一種測試技術
ST VS ET
ST:1、系統性強
2、容易管理,控制
3、設計在先,執行在后
4、主要是驗證自己的思路
5、可預見性
ET:1、自由靈活的
2、和ST是互補的
3、執行和設計(思考)并行
4、不斷和系統交互,帶著問題測試
5、學習的過程
探索式測試的優點:1、更能激發測試人員的創造性和工作樂趣
2、增加了發現新的或較深入bug的可能性
3、在較短時間內找到更多bug以及對SUT做一個快速的評估
4、有利于更加有效的實施自動化
5、更加適用于敏捷項目
6、減少了在簡單,繁復上用例的無謂編寫時間
缺點:1、測試管理上有局限性,膠南協調和控制
2、對于bug的重復利用和中時尚作用有限
3、對測試人員的測試技能和業務知識深度依賴較大
4、只有在被測系統已完全可用的前提下才更有作用
5、ET的生產率很難定義,測試的過程和測試完成度很難度量
6、ET本身較難進行自動化,更多的是看測試人員
---------
局部探索式測試:
輸入:接受輸入,產生輸出,存儲數據,進行運算。從輸入順序,輸出內容,輸出異常幾個角度來考慮我們的測試要點
狀態:臨時狀態和永久狀態。運行時有效,階段有效這種相對臨時的狀態。數據庫保存、文件保存為永久狀態。狀態的信息它可以協助我們來更加有效的判斷我們的測試輸入和輸出
代碼路徑:更多指代碼覆蓋
用戶數據:更多的應該采用真實用戶數據
執行環境:軟件操作系統、跟系統交互的第三方系統、系統的配置數據、運行系統的硬件設備
--------
全局探索式測試:漫游測試法
商業區:軟件從啟動到關閉這期間用戶可能使用到的功能
旅館區:軟件在休息,也就是沒有在運行時的一些功能,一般指運行在后臺的或者一些定時任務
歷史區:軟件版本歷史遺留代碼當中的一些功能或者在以前測試中發現的較多問題的功能
旅游區:比較關注的功能。新手指引、新用戶注冊
娛樂區:系統功能之外,輔助的特性、功能
破舊區:廢棄的功能
執行探索性測試:
know you mession:需要了解測試任務的重點
learning session:詳細的學習和探索被測系統,了解系統的業務邏輯,具體功能
coverage session:實施階段,完成主要功能點的測試驗收,覆蓋測試
deep session:在上一階段的基礎上來進行深入發散式探索式測試,挖掘深層次問題
close session:總結,整理測試過程中出現的信息,分析測試過程是不是有遺漏
缺陷大掃除:針對信息進行大掃除
基于風險的測試---RBT
定義:一種基于對軟件失效的風險評估并以此知道測試計劃、設計、執行、結果評價的軟件測試類型
哪些是風險?
質量風險:軟件功能、應用性、性能、軟件功能缺失、數據轉換
管理風險:人員技能不足、人力不足、測試環境不具備、被測系統的需求不清晰
優點:1、有限測試高風險,所以版本質量更加有保障
2、對項目識別風險的人要求較高,對功能和數據比較詳細,如果準確率達不到要求,很容易產生風險評估率的偏差
按測試類型分類:功能測試,性能測試,兼容性測試,部署測試,易用性測試,文檔測試,本地化測試,安全測試,無障礙測試,可靠性測試
----------
功能測試:根據產品特性,操作描述和用戶方案,測試一個產品的特性和可操作行為以確定他們滿足設計要求。簡單來說,就是對提供給用戶的軟件功能進行驗證
針對的問題:功能錯誤或遺漏、界面問題、性能錯誤、數據及訪問錯誤、初始化及終止錯誤
功能測試工具:QTP/winrunner:使用較多
silkTest、Rational、robot
開源:selenium、watir、sikuli
--------
性能測試:驗證軟件系統的性能,開源滿足需求規格給定的指標要求
衍生出:負載測試。在我們測試過程中來逐步增加負載,并且記錄下被測系統相應的性能表現,最終確定出我們系統在正常的指標范圍下最大的負載
--------
壓力測試:測試系統在極限情況下的壓力情況,測試在什么樣的負載壓力下會導致系統的失效,不能夠正常運行,測試系統所能承受的最大極限
--------
穩定性測試:稍大于正常業務量的一個負載,對系統進行持續的、長時間的測試
性能指標:并發用戶數、每秒事務數、系統響應時間、設備性能
性能測試工具:LoadRunner:使用較多,silkperformer,jmeter,webload
靜態性能評估(重點):開發web應用時,基于一系列web應用頁面性能優化的最佳實踐對web應用的應用進行靜態分析,并給出評估結果的性能分析方法
工具:yslow,pagespeed
應用性能管理:APM,提供對系統的實時監控以實現性能管理、故障管理的解決方案
聽云:www.tingyun.com
---------
安全測試:對軟件產品進測試以確保其符合產品需求和質量標準
安全測試工具:Appscan、webinspect、nessus、nmap、metasploit、webscarab、fortify(白盒測試)、W3AF
-------
滲透測試:通過模擬對軟件系統的惡意攻擊行為來評估系統安全性的一種測試
滲透測試 VS 安全測試
滲透測試:攻擊。目的就是攻破我們的軟件系統以證明系統存在的問題。------關注“點”
安全測試:防。對整個系統防御的功能進行系統的考慮來驗證。------關注“面”
--------
兼容性測試:軟件本身的兼容性,不同平臺軟件對運行設備的兼容性,軟件互操作性(比如開發的軟件是否與微信、qq等其他第三方軟件一起使用),瀏覽器內核
瀏覽器兼容性測試工具:Browsershorts、Browser Sandbox、Google瀏覽器兼容性測試插件
性能知識庫網址:www.w3help.org
---------
文檔測試:針對軟件產品的交付品,配套的文檔類部件的測試。如用戶手冊、使用說明、用戶幫助文檔等
關注要點:完整性、正確性、一致性、易瀏覽性、易理解性
--------
可靠性測試:軟件可靠性、硬件可靠性
-------
易用性測試:指測試用戶使用軟件時是否感覺方便,是否能保證用戶使用體驗的測試類型
-------
本地化測試:針對軟件的本地化版本實施的針對性測試(比如中文、英文)
主要測試內容:語言、書寫習慣、時區、日期格式、貨幣、當地風俗、法律法規、政治敏感內容
--------
部署測試:也稱安裝測試,主要驗證系統部署過程,并確保軟件經過安裝測試后可以正常使用
主要測試內容:在不同環境下的部署驗證,參照部署文檔執行,過程的合理,正確性,基礎數據
-------
無障礙測試:可訪問性測試,是指軟件需要提供便于特殊人群使用的功能,包括視障、聽障、老年人、身體殘疾用戶等
------
回歸測試:軟件功能修改后,對軟件進行重新測試以確認修改沒有引入新的錯誤或導致其他部分產生錯誤。回歸測試的中心在關鍵模塊和重點功能組件
------
冒煙測試:來自于硬件板卡驗證術語。軟件上則用于確認代碼中的更改會按預期運行,切不會破壞整個版本的穩定性
------
A/B測試:多用于互聯網行業。通過為頁面提供兩個版本給用戶使用并記錄相關用戶行為數據,來確定更優化設計的一種方案
A/B測試實施要點:1、多個方案并行
2、每次測試僅改動一個變量
3、按照某種規律進行優勝劣汰
