單元測試是對軟件組成單元進(jìn)行測試。其目的是檢驗軟件組成單位的正確性。測試對象是:模塊。
對模塊進(jìn)行測試,單獨的一個模塊測試,屬于靜態(tài)測試的一類
測試階段:編碼后或者編碼前(TDD)
測試對象:最小模塊
測試人員:白盒測試工程師或開發(fā)工程師(測源碼)
測試依據(jù):代碼和注釋+詳細(xì)設(shè)計文檔
測試方法:白盒測試(因為要測源碼)
測試內(nèi)容:模塊接口測試(測試模塊里面的參數(shù)傳遞是否正確)、局部數(shù)據(jù)結(jié)構(gòu)測試(測試變量的作用域范圍)、路徑測試(if-else 判斷必須覆蓋所有分支)、錯誤處理測試、邊界測試( for 循環(huán))
二.集成測試
集成測試也稱聯(lián)合測試,將程序模塊采用適當(dāng)?shù)募刹呗越M裝起來,對系統(tǒng)的接口(白盒測試)以及集成后的功能(黑盒測試進(jìn)行正確性檢測的一種測試。集成主要目的是檢查軟件單位之間的接口是否正確。
測試階段:一般單元測試之后進(jìn)行
測試對象:模塊間的接口
測試人員:白盒測試工程師或開發(fā)工程師
測試依據(jù):單元測試的模塊+概要設(shè)計文檔
測試方法:黑盒測試與白盒測試相結(jié)合
測試內(nèi)容:模塊之間數(shù)據(jù)傳輸、模塊之間功能沖突、模塊組裝功能正確性、全局?jǐn)?shù)據(jù)結(jié)構(gòu)、單個模塊缺陷對系統(tǒng)的影響
三.系統(tǒng)測試
將軟件系統(tǒng)看成是一個系統(tǒng)的測試。包括對功能、性能以及軟件所運行的軟硬件環(huán)境進(jìn)行測試。時間大部分在系統(tǒng)測試執(zhí)行階段,包括回歸測試和冒煙測試。
測試階段:集成測試通過之后
測試對象:整個系統(tǒng)(軟、硬件)
測試人員:黑盒測試工程師(對功能測試)
測試依據(jù):需求規(guī)格說明文檔
測試方法:黑盒測試
測試內(nèi)容:功能、界面、可靠性、易用性、性能、兼容性、安全性等
回歸測試(Regression Testing)
四.回歸測試
回歸測試是指修改了舊代碼后,重新進(jìn)行測試以確認(rèn)修改沒有引入新的錯誤或?qū)е缕渌a產(chǎn)生錯誤。
有了代碼修改后就進(jìn)行回歸測試,根據(jù)測試階段確定回歸范圍。
在整個軟件測試過程中占有很大的工作量比重,軟件開發(fā)的各個階段都會進(jìn)行多次回歸測試。隨著系統(tǒng)的龐大,回歸測試的成本越來越大,通過選擇正確的回歸測試策略來改進(jìn)回歸測試的效率和有效性是很有意義的。
五.冒煙測試
這一術(shù)語源自硬件行業(yè)。
對一個硬件或硬件組件進(jìn)行更改或修復(fù)后,直接給設(shè)備加電。如果沒有冒煙,則該組件就通過了測試。也可以理解為該種測試耗時短,僅用一袋煙功夫足夠了。
冒煙測試的對象是每一個新編譯的需要正式測試的軟件版本,目的是確認(rèn)軟件基本功能正常,可以進(jìn)行后續(xù)的正式測試工作。冒煙測試的執(zhí)行者是版本編譯人員。
概念:對核心主干流程進(jìn)行測試,如果成功,就認(rèn)為成功
作用:判斷是否接受測試的標(biāo)準(zhǔn),若核心主干都走不通,那么直接打下去
六.驗收測試
買到新手機(jī),一般會有7天包退,一個月包換,我們會盡量在7天內(nèi)把手機(jī)的所有功能都試一遍。
驗收測試是部署軟件之前的最后一個測試操作。它是技術(shù)測試的最后一個階段,也稱為交付測試。驗收測試的目的是確保軟件準(zhǔn)備就緒,按照項目合同、任務(wù)書、雙方約定的驗收依據(jù)文檔,向軟件購買都展示該軟件系統(tǒng)滿足原始需求。
測試階段:系統(tǒng)測試通過之后
測試對象:整個系統(tǒng)(包括軟硬件)。
測試人員:主要是最終用戶或者需求方。
測試依據(jù):用戶需求、驗收標(biāo)準(zhǔn)
測試方法:黑盒測試(對功能進(jìn)行測試)
測試內(nèi)容:同系統(tǒng)測試(功能…各類文檔等)
七.靜態(tài)測試(不運行程序本身,測試文檔)
靜態(tài)測試是指不運行被測程序本身,僅通過分析或檢查源程序的語法、結(jié)構(gòu)、過程、接口等來檢查程序的正確性?!畬π枨笠?guī)格說明書、軟件設(shè)計說明書、源程序做結(jié)構(gòu)分析、流程圖分析、符號執(zhí)行來找錯。
八.動態(tài)測試
動態(tài)測試方法是指通過運行被測程序,檢查運行結(jié)果與預(yù)期結(jié)果的差異,并分析運行效率、正確性和健壯性等性能。大多數(shù)軟件測試工作都屬于動態(tài)測試。
九.手工測試
就是由人去一個一個的輸入測試用例,然后觀察結(jié)果,和機(jī)器測試相對應(yīng),屬于比較原始但是不可缺少的一個步驟。
總結(jié)優(yōu)缺點:
(1)優(yōu)點:自動化無法替代探索性測試、發(fā)散思維結(jié)果的測試。
(2)缺點:執(zhí)行效率慢,量大易錯。
十.自動化測試
就是在預(yù)設(shè)條件下運行系統(tǒng)或應(yīng)用程序,評估運行結(jié)果,預(yù)先條件應(yīng)包括正常條件和異常條件。
簡單說自動化測試是把以人為驅(qū)動的測試行為轉(zhuǎn)化為機(jī)器執(zhí)行的一種過程。
自動化實施步驟:
1.完成功能測試,版本基本穩(wěn)定
2.根據(jù)項目特性,選擇適合項目的自動化工具,并搭建環(huán)境
3.提取手工測試的測試用例轉(zhuǎn)化為自動化測試的用例
4.通過工具、代碼實現(xiàn)自動化的構(gòu)造輸入,自動檢測輸出結(jié)果是否符合預(yù)期
5.生成自動測試報告
6.持續(xù)改進(jìn),腳本優(yōu)化。
十一.業(yè)務(wù)測試
業(yè)務(wù)測試是測試人員把系統(tǒng)各個模塊串接起來運行、模擬真實用戶實際的工作流程,滿足用戶需求定義的功能來進(jìn)行測試的過程。
例如查看郵件:
登錄網(wǎng)站-輸入用戶名、密碼登錄-進(jìn)入收件箱-查到郵件-點擊打開-查閱-關(guān)閉郵件-退出郵箱-關(guān)閉網(wǎng)站
業(yè)務(wù)測試關(guān)注需求和用戶
所有業(yè)務(wù)流程進(jìn)行測試,包過主干流程,分支流程,甚至更小的流程
測不同的業(yè)務(wù),必須對項目的需求特別了解
十二.界面測試
界面測試(簡稱UI測試),測試用戶界面的功能模塊的布局是否合理、整體風(fēng)格是否一致、各個控件的放置位置是否符合客戶使用習(xí)慣,此外還要測試界面操作便捷性、導(dǎo)航簡單易懂性,頁面元素的可用性,界面中文字是否正確,命名是否統(tǒng)一,頁面是否美觀,文字、圖片組合是否完美等。
十三.文檔測試
十四.兼容性測試
大家經(jīng)常上網(wǎng),同一網(wǎng)站在不同的瀏覽器上表現(xiàn)不一樣
WEB測試 ;APP測試
兼容性主要是指軟件之間能否很好地運作,會不會有影響、軟件和硬件之間能否發(fā)揮很好的效率工作,會不會影響導(dǎo)致系統(tǒng)的崩潰。
平臺測試
瀏覽器測試
軟件本身能否向前或者向后兼容
測試軟件能否與其它相關(guān)的軟件兼容
數(shù)據(jù)兼容性測試
最常見的就是瀏覽器的兼容性測試,不同瀏覽器在css,js解析上的不同會導(dǎo)致頁面的顯示不同。
十五.易用性測試
易用性(Useability)是交互的適應(yīng)性、功能性和有效性的集中體現(xiàn)。
手機(jī)拔打電話功能不放在首頁,放在一個目錄下邊,點擊三四次才可以找到拔打電話功能,這個功能好用嗎?
十六.性能測試
檢查系統(tǒng)是否滿足需求規(guī)格說明書中規(guī)定的性能。
通常表現(xiàn)在以下幾個方面:
對資源利用(如內(nèi)存、處理機(jī)周期等)進(jìn)行的精確度量
對執(zhí)行間隔
日志事件(如中斷,報錯)
響應(yīng)時間
吞吐量(TPS)
輔助存儲區(qū)(例如緩沖區(qū)、工作區(qū)的大小等)
處理精度等進(jìn)行的監(jiān)測
十七.易用性測試
易用性(Useability)是交互的適應(yīng)性、功能性和有效性的集中體現(xiàn)。易用性屬于人體工程學(xué)的范疇,人體工程學(xué)(ergonomics)是一門將日常使用的東西設(shè)計為易于使用和實用性強(qiáng)的學(xué)科。
手機(jī)拔打電話功能不放在首頁,放在一個目錄下邊,點擊三四次才可以找到拔打電話功能,這個功能好用嗎?
在某些大廠會有專門的部門來進(jìn)行易用性測試,又叫用戶體驗測試。
十八. 安裝測試
測試程序的安裝、卸載
典型的是app的安裝、卸載
十九.安全測試
安全測試是一個相對獨立的領(lǐng)域,需要更多的專業(yè)知識。例如web的安全測試,需要熟悉各種網(wǎng)絡(luò)協(xié)議
TCPHTTP,防火墻,CDN,熟悉各種操作系統(tǒng)的漏洞,熟悉路由器等。從軟件來說,熟悉各種攻擊手段,例如
SQL注入、Xss等。
作為web入門測試,可以IBM的appscan。
二十.內(nèi)存泄漏測試
電腦打開的東西太多,機(jī)器反應(yīng)慢甚至死機(jī),重啟之后就好了,過會同樣的問題出現(xiàn)
很多軟件系統(tǒng)都存在內(nèi)存泄露的問題,尤其是缺乏自動垃圾回收機(jī)制的“非托管”語言 編寫的程序,例如C、CH、Delphi等。從用戶使用的角度來看,內(nèi)存泄露本身不會造成什 么危害,一般用戶可能根本不會感覺到內(nèi)存泄露的存在。但是內(nèi)存泄露是會累積的,只要執(zhí) 行的次數(shù)足夠多,最終會耗盡所有可用內(nèi)存,使軟件的執(zhí)行越來越慢,最后停止響應(yīng)??梢?把這種軟件的問題比喻成軟件的“慢性病”。
造成內(nèi)存泄露的原因有很多,最常見的有以下幾種。
1.分配完內(nèi)存之后忘了回收。
2.程序?qū)懛ㄓ袉栴},造成沒辦法回收。
3.某些API函數(shù)的使用不正確,造成內(nèi)存泄露。
4.沒有及時釋放。
內(nèi)存泄漏的檢測:
1.對于不同的程序可以使用不同的方法來進(jìn)行內(nèi)存泄露的檢查,還可以使用一些專門的工具來進(jìn)行內(nèi)存問題的檢查,例如MemProof. AQTime、Purify、BundsChecker等。 有些開發(fā)工具本身就帶有內(nèi)存問題檢查機(jī)制.要確保程序員在編寫程序和編譯程序的時候打開這些功能。
2.通過代碼掃描分析工具來檢查