测试理论基础
文章目錄
- 1 軟件測試
- 定義
- 目的
- 軟件測試V模型
- 軟件測試工程師的工作內容
- 2 軟件測試分類
- 從軟件開發階段的角度
- 根據軟件結構與算法角度
- 從軟件的測試面角度
- 軟件測試的自動化程度
- 軟件測試周期中使用的方法
- 3 分層自動化測試(了解)
1 軟件測試
定義
軟件測試的經典定義是:在規定的條件下對程序進行操作,以發現程序錯誤,衡量軟件質量,并對其能否滿足設計要求進行評估的過程。
目的
軟件測試的目的就是盡可能多的發現軟件缺陷。bug是測試過程中的產品而非目標。檢查系統是否滿足要求,站在用戶的角度思考產品或項目功能實現地正確性。
測試的目的不僅僅是為了找出錯誤,通過分析錯誤產生的原因和錯誤的分布特征,幫助項目管理者發現當前所采用的軟件過程的缺陷,以便改進。同時,通過分析也能幫助我們設計出針對的檢測方法,改善測試的有效性。
軟件測試V模型
V 模型是軟件測試過程中的常??種模型,它反映了開發過程和測試過程的關系,在測試軟件中起著重要作?。同樣,在面試題中也問的非常多。
V模型中的過程是從左向右描述了基本開發過程和測試?為。V模型的價值在于它?常明確的表明了測試過程中存在的不同級別,并且清楚的描述了這些測試階段和開發過程各個階段對應的關系,左半部分為開發人員的職責,右半部分為測試人員的職責。
下面介紹這些階段都會做些什么
- 需求分析:主要明確客戶需要的是什么?需要軟件做成什么樣?,還有那些功能。這點?較關鍵的是需求分析師 和客戶溝通時理解能?和交互性。要求分析師能準確的把客戶所需要達到的功能,實現?式,等表述出 來,給出分析結果,寫出需求規格說明書。
- 概要分析:主要是架構的實現,指搭建架構,表述各模塊功能、模塊接?連接和數據傳遞的實現等各項事務。
- 詳細設計:對概要設計中表述的各個模塊進?深?分析,對各個模塊組合進?分析等,這?階段要求達到偽代碼 級別,已經把程序的具體實現功能,現象等描述出來。其中需要包含數據庫設計說明。
- 軟件編碼:按照詳細設計好的模塊功能表,編程?員編寫出實際的代碼。
- 單元測試:單元測試是對程序中單個子程序或具有獨立功能的代碼段進?測試的過程
- 集成測試:集成測試在單元測試的基礎上,先通過單元模塊組裝成系統或子系統,再進行測試。檢查模塊之間的接口是否正確。
- 系統測試:系統測試針對整個產品進?測試,驗證系統是否滿足需求規格說明的定義,以及軟件系統的正確性和 性能等是否能滿?。
- 驗收測試:驗收測試是部署軟件前(運維?程師進行代碼部署操作)的最后?個測試,?的是確保軟件準備就 緒,向需求?展示軟件能夠滿足需求,驗收測試細分為α測試和β測試。
α測試: 指的是由?戶,測試?員,開發?員等共同參與的內部調試
β測試: 指的是內測后的公測,即完全交給最終?戶測試
軟件測試工程師的工作內容
理解開發?作和測試?作的側重點:開發?作的?標是盡量實現軟件?戶的需求;測試?作是檢驗軟 件系統是否滿?軟件?戶的需求。
工作內容:
尋找軟件中的bug,越早發現越好,確認bug的可重復性以及bug產?的步驟,確認bug是否被解決。
測試?法,測試計劃,測試平臺,測試代碼,測試?例,測試?檔,測試報告的確定,編寫和執?。
這里說到的bug指的是什么呢?
生產軟件的最終目的是為了滿足客戶的需求,我們以客戶的需求作為評判軟件質量的標準,將軟件的缺陷也就是bug總結如下:
- 1.軟件未達到客戶需求的功能和性能
- 2.軟件超出了客戶需求的范圍
- 3.軟件出現客戶需求不能容忍的錯誤
- 4.軟件的使用未能符合客戶的習慣和工作環境
2 軟件測試分類
從軟件開發階段的角度
單元測試、集成測試、系統測試、驗收測試
根據軟件結構與算法角度
白盒測試、黑盒測試、灰盒測試
**白盒測試:**?盒測試?被稱為結構測試,透明盒測試、邏輯驅動測試或基于代碼測試,是對軟件代碼實現的細節 做細致檢查。對于?盒測試,測試員必須要全?了解程序的內部邏輯結構,對所有邏輯路徑進?測試。
**黑盒測試:**?盒測試也稱為功能測試,是通過測試來檢測每個功能是否都能正常使?,在?盒測試中,把程序當 作?個不可開的?盒?,在完全不考慮程序內部特性的情況下,對程序接?進?測試,它只檢查程序功能 是否按照需求規格說明書的規定正常使?,程序是否能適當的接受輸?程序?產?正確的輸出信息。
灰盒測試:是介于?盒測試和?盒測試之間的,灰盒測試關注輸出對于輸?的正確性,但同時也關注內部實現, 不過這 種關注不像?盒測試那么詳細,完整,知識通過?些表征性的現象,事件,標志來判斷內部的運?狀態, 有時候輸出是正確的,但內部存在錯誤點。這種情況?常多,如果每次都通過?盒測試來操作,效率低, 因此采?灰盒測試的?法。
從軟件的測試面角度
功能測試: 主要檢查實際功能是否符合?戶的需求,因此測試的?部分?作也是圍繞軟件的功能進?。功能測試也稱為?為測試(behavioral testing) ,根據產品的性能,操作描述和?戶?案,測試?個 產品的特性以確定他們滿?的設計需求。
功能測試主要包含:
1)邏輯功能測試 2) 界?測試 3) 易?性測試 4) 安裝測試 5) 兼容性測試(軟件本身的兼容性和不 同平臺下的兼容性)
性能測試: 性能測試通過?動化的測試?具模擬多種正常,峰值以及異常負載條件 來對系統進?各項性能指標進 ?測試。 中國軟件測評中?將性能測試概括為三個??:應?在客戶端性能的測試,應?在?絡上的性能 測試和應?在服務器端性能的測試。
通常情況下性能測試包括:時間性能和空間性能兩種。
時間性能: 主要指軟件的?個具體響應時間。例如?個注冊需要的時間,?個商品購買需要的時間 等。拋開具體的測試環境,來分析?次事務的響應時間是沒有任何意義的。需要單建好?個具體且獨?的 測試環境。
空間性能: 主要指軟件運?時所消耗的系統資源,如硬件資源,cpu,內存,?絡消耗等。
軟件測試的自動化程度
手工測試: 由測試?員?個?個的執?測試?例,通過輸??些參數,產看返回結果是否符合預期效 果。
自動化測試: 是以把?為驅動的測試?為轉化為機器執?的?種過程。 通常由測試?員根據測試?例 中描述的規則流程?步步執?測試,把得到的結果與預期結果進??較。?動化測試是?個很?義的概 念,?般來說所有能替代??測試的?式都屬于?動化測試, 我們?般說的單元測試就是?動化測試的? 種,單元測試很多?稱之為“毫秒級的?動化測試”,可分為功能?動化測試,性能?動化測試
功能?動化測試:是通過測試?具(或框架)錄制/編寫測試腳本,對軟件的功能進?測試,并驗證測 試的結果是否正確,從?代替部分??測試?作,達到節約??成本和時間成本的?的。
性能?動化測試:通過性能?具模擬成千上萬的虛擬?戶向系統發送請求,從?驗證系統的處理能 ?。
軟件測試周期中使用的方法
- 1、冒煙測試:指在對一個新版本進行大規模的系統測試之前,先驗證軟件的基本功能是否實現,是否具備可測性。
- 2、回歸測試:指修改了舊代碼后,重新進行測試以確認修改后沒有引進新的錯誤或導致其他代碼產生錯誤
- 3、隨機測試:是指測試中的所有輸入數據都是隨機生成的,其目的是模擬用戶的真實操作,并發現一些邊緣性錯誤
- 4、安全測試:在軟件產品的生命周期中,特別是產品開發過程基本完成到發布階段,對產品進行檢驗,以驗證產品符合安全需求定義和產品質量標準的過程。
3 分層自動化測試(了解)
測試?字塔的概念是由敏銳?師Mike Cohn在它的書中?次提出,如下圖所示,他的基本觀點:我 們應該有更多的低級別的單元測試,?不僅僅是通過?戶界?運?的?層次的端到端的測試。
Martin Fowler?師在測試?字塔模型基礎上提出分層?動化測試的概念。在?動化測試之前加“分 層”的修飾,以區別傳統的?動化測試。什么是傳統的?動化測試?為何提倡分層?動化測試的思想?
在?多數研發組織中,都存在開發測試團隊割裂(部?墻),質量職責錯配(測試主要對質量負責) 的問題,在這種狀態下,測試團隊(或者測試??)的?個“正常”反應就是: 在測試團隊中能夠掌握的?盒測試環節盡可能全?覆蓋,甚?盡可能?盒(界?)?動化測試。 這可能導致兩個后果:
1) 測試團隊規模的急劇膨脹。2)所謂全??盒(界?)?動化測試
?般來 說注定失敗,因為界?是?常易變得,?盒(界?)?動化測試?論怎么寫都還會是維護成本相對?昂。 因此,分層?動化測試倡導得是從?盒單層測試到??盒多測試體系,從全??盒(界?)?動化到關鍵 業務流程??測試+單元(模塊)算法測試。
1)單元?動化測試
單元?動化測試是指對軟件中得最?可測單元進?檢查和驗證。對于單元測試中得單元得含義,?般 來說密鑰根據實際情況去判定其具體含義。?如C語?中單元是指?個函數,java中得單元只?個類,圖形 化的軟件單元是指?個窗?或者?個菜單等。總的來說,單元就是?為規定的最?被測功能模塊。規范的 進?單元測試需要借助單元測試框架,如Java中的Junit,TestNG,Python中的unittest,pytest等,?前? 乎所有語?都有相應的單元測試框架。
2)接??動化測試 Web應?的接??動化測試可以分為兩類:模塊接?測試和web接?測試 2.1) 模塊接?測試: 主要測試模塊之間的調?與返回。我們可將其看作是單元測試的基礎,主要強調 對?個類?法或函數的調?,并對返回結果的驗證,所?到的測試?具與單元?動化測試相同。 2.2)Web接?測試:?分為服務器接?測試和外部接?測試 服務器接?測試:指測試瀏覽器與服務器的接? 外部接?測試:指調?的接?由第三?提供。?如使?QQ,?付寶,微信賬號登陸系統等。
3)UI?動化測試 UI?動化測試:UI層是?戶使?該產品的??,所有功能都通過這?層提供并展示給?戶,所以測試 ?作?量都集中在這?層。為減輕這?層的測試??和時間成本,早期的?動化測試?具主要針對該層設 計。?前主流的測試?具由UFT,Watir,Robot Framework、Selenium等。
Selenium 是?個?于web應?程序測試?具,包含了測試的錄制,編寫以及運?,測試的并?處理 (Selenium Grid).Selenium 的核?Selenium Core 基于JsUnit,完全由JavaScript編寫,因此可以?于 任何?持JavaScript的瀏覽器使?。Selenium可以模擬真實瀏覽器,?持多種瀏覽器,它在爬?中主要解 決JavaScript渲染問題。 除了上述主流的測試?具外,對于有些有實?的公司?如華為,會根據??的產品特點開發??定制的?動化測試?具.
總結
- 上一篇: 用python开发文本翻译小软件
- 下一篇: sql统计表中各类型金额_各类型模具设计