每一個系統的成型,上線都離不開測試,這段時間陸陸續續的學習測試,在這裏總結一番;做爲學習交流之用;html
早期定義:軟件測試是對程序可以按預期運行創建起一種信心。
經典定義:測試是爲了發現錯誤而執行程序的過程。
IEEE定義(ISO/IEC/IEEE 29119):使用人工或者自動的手段來運行或測量軟件系統的過程,以檢驗軟件系統是否知足規定的要求,並找出與預期結果之間的差別。安全
五大要素有:質量、人員、資源、流程、技術。
其中最主要的是軟件質量,其餘四個要素都是爲質量服務的。
其次是人員,決定了技術,資源,流程,以及配置和使用。
技術包含了:軟件測試技術、軟件測試方法、使用的工具。技術是手段。
流程:測試計劃,測試用例,測試執行,測試報告。有一些進入進出的標準(規範性,對軟件測試作一個規範的要求)。
資源:測試所須要的硬件設備、網絡環境、測試設備、測試時間(週期)。網絡
注意:人不是資源。數據結構
目標:
①提高測試覆蓋率-> 可以有效的保證軟件的質量
②提高測試效率->可以使咱們更好地完成軟件測試併發
1、測試顯示缺陷的存在,但不能證實系統不存在缺陷。
通過軟件測試,能夠發現軟件中的故障;可是通過軟件測試,不能保證軟件就沒有故障了。
2、窮盡測試是不可能的,應設定及時終止的條件。
3、測試應該儘早進行
框架
4、缺陷具有羣集特性
越是發現問題多的模塊,越是須要重點測試的對象
5、測試的殺蟲劑悖論
在測試中,若是採用一樣的測試用例,一樣的測試方法。屢次重複的測試某一個模塊,最後就不能再發現新的缺陷。因此說,測試用例和測試方法應該不按期的評審修改,而且增長不一樣的測試方法和用例來測試不一樣的部分,從而更多的發現軟件的缺陷。
6、測試的二八原則
測試時間和資源每每是有限的,要找出全部的缺陷是不可能的,這時咱們須要遵循二八原則。
把80%的時間或者資源用在20%的重點模塊上,重點測試模塊中20%的重要模塊。來達到測試效率和資源配置的最佳的比例。
7、測試活動依賴於測試背景
針對不一樣的測試背景針對的活動是不一樣的,好比:電信級的軟件對性能、大併發量的訪問會有更高的要求。而金融,銀行系統相關的軟件,對安全性能要求更高。工具
單元測試、繼承測試、系統測試、驗收測試性能
什麼是單元測試單元測試
對軟件中的最小可測試單元進行檢查和驗證學習
單元測試的原則:
1.儘量保證各個測試用例是相互獨立的;
2.通常由代碼的開發人員來實施,用以檢驗所開發的代碼功能符合本身的設計要求。
單元測試的益處:
1.能儘早發現缺陷;收益最高;
2.有利於重構;
3.簡化集成;
4.文檔;
5.用於設計;
單元測試的限制
1.不可能覆蓋全部的執行路徑,因此不可能保證捕捉到全部路徑的錯誤;
2.每一行代碼,通常須要3-5行測試代碼才能完成單元測試。因此存在投入和產出的一個平衡;
單元測試框架:
Xunit,JUnit,nunit,PPUnit,CppUnit
定義:
在單元測試的基礎上,測試在將全部的軟件單元按照概要設計規格說明的要求組裝成模塊、子系統或系統過程當中各部分工做是否達到或實現相應技術指標及要求的活動
集成測試的主要實施方案
1.Big Bang 所有完成,測試
2.自頂向下
3.自底向上 從最低層測試,逐步組裝測試;(經常使用測試)
4.核心系統集成
5.高頻集成
集成測試&單元測試
1.測試的對象不一樣;
2.測試的一舉不一樣;
3.測試的方法不一樣;
定義:是將通過集成測試的軟件,做爲計算機系統的一個部分,系統中其餘部分結合起來,在實際運行環境下對計算機系統進行的一系列嚴格有效的測試,以發現軟件潛在的問題,保證系統的正常運行。
關注點
關注系統自己的使用
關注系統與其餘相關係統間的連通
關注系統在不一樣使用壓力下的表現
關注系統在真實使用環境下的表現
系統測試&集成測試
測試環境:
集成測試:由經過了單元測試的各個模塊所集成起來的構件
系統測試:除了軟件以外,還包括計算機硬件及相關的外圍設備、數據採集和傳輸機構、支持軟件、系統操做人員等整個系統;
測試時間:
集成測試介於單元測試和系統測試之間測試
系統測試在集成測試以後
測試內容:
集成測試:各個單元模塊之間的接口
系統測試:整個系統的功能和性能
測試角度:
集成測試:偏向於技術角度的驗證
系統測試:偏向於業務角度的驗證
定義:也稱交付測試,針對用戶需求、業務流程的正式的測試,肯定系統是否知足驗收標準,由用戶、客戶、或其餘受權機構決定是否接受系統。
細分
用戶驗收測試
運行驗收測試
合同和規範驗收測試
alpha測試
Beta測試
黑盒測試、白盒測試
靜態測試、動態測試
手工測試、自動化測試
定義:把程序看做一個不能打開的黑盒子,在徹底不考慮程序內部結構和內部特性的狀況下,在程序接口進行測試,它只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收輸入數據而產生正確的輸出信息。主要針對軟件界面和軟件功能進行測試。
圖例:
優勢:
1.容易實施,不須要關注內部的實現
2.更貼近用戶的使用角度
缺點:
1.測試覆蓋率角度,通常只能覆蓋到代碼量的不到40%;
2.針對黑盒測試的自動化測試,複用率較低,維護成本較高;
關注點:
1.是否有不正確或者遺漏的功能?
2.在接口上,輸入是否能正確的接受?可否輸出正確的結果?
3.是否有數據結構錯誤或者外部信息(例如數據文件)訪問錯誤?
4.性能上是否可以知足要求?
黑盒測試的主要設計方法
定義
白盒測試又稱結構測試、透明盒測試、邏輯驅動測試或基於代碼的測試。白盒測試是一種測試用例方法,盒子指的是被測試的軟件,白盒指的是盒子是可視的,你清楚盒子內部的東西以及裏面是如何運做的。"白盒"法全面瞭解程序內部邏輯結構、對全部邏輯路徑進行測試。"白盒"法是窮舉路徑測試。在使用這一方案時,測試者必須檢查程序的內部結構,從檢查程序的邏輯着手,得出測試數據。貫穿程序的獨立路徑數是天文數字。
圖示:
優勢:
1.迫使測試人員去仔細思考軟件的實現,理解原理
2.能夠檢測代碼中的每一條分支和路徑
3.揭示隱藏在代碼中的錯誤
4.對代碼的測試比較完全
缺點:
1.昂貴
2.沒法檢測代碼中遺落的路徑和數據敏感性錯誤
3.不能直接驗證需求的正確性
主要測試方法:
定義:
靜態測試是指無須執行被測程序,而是經過評審軟件文檔或代碼,度量程序靜態複雜度,檢查軟件是否符合編碼標準,藉以發現編寫的程序的不足之處,減小錯誤出現的機率;
方式:
定義:
動態測試時指經過運行被測程序,檢查運行結果與預期結果的差別,並分析運行效率,正確性和健壯性等;
定義:
由專門的測試人員從用戶視角來驗證軟件是否知足設計要求的行爲。更適用針對深度的測試和強調主管判斷的測試。
方法:衆包測試,探索式測試
定義:使用單獨的測試工具軟件控制測試的自動化執行以及對預期和結果進行自動檢查。
方法:單元測試,接口測試,性能測試等
手工測試VS自動化測試
瀑布模型、敏捷測試、基於腳本的測試、基於風險的測試、探索式測試等
瀑布模型的優缺點
V模型
W模型
X模型
H模型
Agile Testing --遵循敏捷宣言的一種測試實踐
敏捷宣言
關注點:
強調從客戶角度進行測試
重點關注迭代測試新功能,不在強調測試階段
儘早測試,不間斷測試,具有條件即測試
強調持續反饋
預防缺陷重於發現缺陷
徹底拋開測試腳本的測試
它是一種測試風格、思惟而不是一種技術
優勢:
更能激發測試人員的創造性和工做樂趣
增長了發現新的或較深刻Bug的可能性
在較短期內找到更多Bug以及對SUT做一個快速的評估
有利於更加有效地實施自動化
更加適用於敏捷項目
減小了在簡單、繁複上用例的無謂編寫時間
測試管理上有侷限性,較難協調和控制
對於Bug的重複利用和重現上做用有限
對測試人員的測試技能和業務知識深度依賴較大
只有在SUT已徹底可用的前提下才更有做用
ET的生產率很難定義
ET自己較難進行自動化
局部探索式測試
輸入、狀態、代碼路徑、用戶數據、執行環境
全局探索式測試
探索式測試的流程
Risk-based Testing
一種基於對軟件失效的風險評估並以此指導測試計劃、設計、執行、結果評估的軟件測試類型
那些是風險?
質量風險、管理風險
風險級別=風險可能性X風險嚴重度
未完待續。。
歡迎你們關注公衆號,不定時乾貨,只作有價值的輸出
做者:Dawnzhang
出處:http://www.javashuo.com/article/p-zfzumjdy-ev.html 版權:本文版權歸做者轉載:歡迎轉載,但未經做者贊成,必須保留此段聲明;必須在文章中給出原文鏈接;不然必究法律責任