專業(yè)CMA\CNAS第三方軟件測試報(bào)告服務(wù)商

全國服務(wù)熱線:18684048962(微信同號)

軟件測試的方法有哪些?

57
發(fā)表時間:2023-07-01 09:56

軟件測試

根據(jù)利用的被測對象信息的不同,可以將軟件測試方法分為:黑盒測試、灰盒測試、白盒測試


1、白盒測試


1)概念:是依據(jù)被測軟件分析程序內(nèi)部構(gòu)造,并根據(jù)內(nèi)部構(gòu)造分析用例,來對內(nèi)部控制流程進(jìn)行測試,可完全不顧程序的整體功能實(shí)現(xiàn)情況,即已知軟件產(chǎn)品的內(nèi)部實(shí)現(xiàn)過程,可以通過測試證明每種內(nèi)部操作是否符合設(shè)計(jì)規(guī)格的要求,所有內(nèi)部成分是否已經(jīng)過檢查。


2)思想:白盒測試又被稱為玻璃盒測試、透明盒測試、開放盒測試、結(jié)構(gòu)化測試、邏輯驅(qū)動測試、是基于程序結(jié)構(gòu)的邏輯驅(qū)動測試。


3)測試對象: 函數(shù)、算法與數(shù)據(jù)結(jié)構(gòu)


4)目的


(1)一般在測試前期進(jìn)行,通過達(dá)到一定的邏輯覆蓋率指標(biāo),使得軟件內(nèi)部邏輯控制結(jié)構(gòu)上的問題能基本得到消除;


(2)保證內(nèi)部結(jié)構(gòu)達(dá)到一定的覆蓋程度,能夠給予軟件代碼質(zhì)量更大的保證;


(3)白盒測試發(fā)現(xiàn)問題后,解決問題的成本較低。


5)白盒測試的常用技術(shù):


(1)靜態(tài)分析:包括控制流分析、數(shù)據(jù)流分析、信息流分析


(2)動態(tài)分析:邏輯覆蓋測試(分支測試、路徑測試等)、程序插裝等 ,邏輯覆蓋測試根據(jù)覆蓋的對象不同,可以分為:語句覆蓋、判定(分支)覆蓋、條件覆蓋、判定條件覆蓋、條件組合覆蓋、路徑覆蓋。 程序插裝指調(diào)試程序時,在程序中插入一些打印語句,程序執(zhí)行時打印出我們關(guān)心的信息,通過這些信息了解執(zhí)行過程中程序的一些動態(tài)行為。


6)白盒測試的特點(diǎn):


(1)測試人員需要了解軟件的實(shí)現(xiàn);


(2)可以檢測代碼中的每條分支和路徑;


(3)揭示隱藏在代碼中的錯誤;


(4)對代碼的測試比較徹底;


(5)實(shí)現(xiàn)代碼結(jié)構(gòu)上的優(yōu)化;


(6)投入較大,成本高;


(7)無法檢測代碼中遺漏的路徑和數(shù)據(jù)敏感性錯誤;


(8)不驗(yàn)證規(guī)格的正確性。


2、黑盒測試


1)定義:把測試對象看成是一個黑盒,只考慮其整體特性,不考慮其內(nèi)部具體實(shí)現(xiàn)過程。即已知產(chǎn)品的需求規(guī)格,但不知其內(nèi)部實(shí)現(xiàn),可以進(jìn)行測試證明每個需求是否實(shí)現(xiàn)。


2)思想:基于規(guī)格的測試,測試類型都來源于質(zhì)量模型。


3)測試對象:系統(tǒng)、子系統(tǒng)、模塊、子模塊、函數(shù)等。


4)常用的黑盒測試方法:等價(jià)類劃分法、邊界值分析法、因果圖分析法、判定表法、狀態(tài)遷移法等。


5)目的:減少測試時的測試用例數(shù),用盡量少的測試用例完成測試,發(fā)現(xiàn)更多的問題。


6)黑盒測試的特點(diǎn)


(1)對于更大的代碼單元來說(子系統(tǒng)甚至系統(tǒng)級)比白盒測試效率要高;


(2)測試人員不需要了解軟件的實(shí)現(xiàn)細(xì)節(jié),包括特定的編程語言;


(3)從用戶的視角進(jìn)行測試,很容易被理解和接受;


(4)有助于暴露任何規(guī)格不一致或有歧義的問題;


(5)沒有清洗和簡明的規(guī)格,測試用例很難設(shè)計(jì);


(6)不能控制內(nèi)部執(zhí)行路徑,會有很多內(nèi)部程序路徑?jīng)]有被測試到;


(7)不能直接針對特定的程序段,這些程序可能非常復(fù)雜(因此可能隱藏更多的問題)

3、灰盒測試


利用被測對象的整體特性信息,采用黑盒測試方法;利用被測對象的內(nèi)部具體實(shí)現(xiàn)信息,采用白盒測試方法;介于白盒和黑盒測試之間的測試方法測試方法稱之為灰盒測試。


1)定義:如果即利用被測對象的整體特性信息,又利用被測對象的內(nèi)部具體實(shí)現(xiàn)信息,采用得就是灰盒測試方法。兩種信息占得比例不同,相應(yīng)的灰度就不同。


2)適用對象:一般集成測試采用灰盒測試方法。


按照被測試的軟件系統(tǒng)是否運(yùn)行,將測試分為靜態(tài)測試和動態(tài)測試。


1、靜態(tài)測試


1)定義:不運(yùn)行被測試的軟件系統(tǒng),而是采用其他手段和技術(shù)對被測試軟件進(jìn)行檢測的一種測試技術(shù),例如:代碼走讀、文檔評審、程序分析等。


2)常用技術(shù):靜態(tài)分析技術(shù)。


(1)定義:靜態(tài)分析是一種不通過執(zhí)行程序而分析程序的技術(shù)。


(2)功能:檢查軟件的表示和描述是否一致,沒有沖突或者沒有歧義


(3)目的:糾正軟件系統(tǒng)在描述、表示和規(guī)格上的錯誤,因此是任何進(jìn)一步測試的前提。


(4)靜態(tài)分析技術(shù)主要有3種不同的程序測試可能性


考慮程序是否滿足編碼規(guī)則,語法上是否具有一致性和完整性;

考慮文檔描述是否規(guī)范、準(zhǔn)確、便于查閱;

考慮程序和文檔之間的一致性。


(5)靜態(tài)分析技術(shù)有:控制流分析、數(shù)據(jù)流分析和信息流分析,下面一一介紹:


1、控制流分析


(控制流相關(guān)概念)


程序元素:一個程序元素通常是一個條件,一個簡單的語句或者一塊語句(多個連續(xù)語句)。

控制流關(guān)系:一個程序的控制流關(guān)系(Control Flow Relation)敘述了程序元素和他們執(zhí)行的次序之間的關(guān)系。

控制流圖:對應(yīng)于控制流關(guān)系的圖被稱為控制流圖。

控制流矩陣:有控制流圖得到,反映相鄰程序元素之間的先后順序關(guān)系。

(控制流分析能發(fā)現(xiàn)的問題 )


通過對控制流信息進(jìn)行分析,確保寫出的程序不應(yīng)包含:轉(zhuǎn)向并不存在的標(biāo)號;沒用的語句標(biāo)號;從程序入口進(jìn)入后無法達(dá)到的語句;不能達(dá)到停機(jī)語句的語句。


2、數(shù)據(jù)流分析


(數(shù)據(jù)流相關(guān)概念 )


數(shù)據(jù)流分析最初是隨著編譯系統(tǒng)要生成有效的目標(biāo)碼而出現(xiàn)的,這類方法主要用于代碼優(yōu)化(代碼優(yōu)化主要包含:結(jié)構(gòu)優(yōu)化即可讀性、時間效率和空間效率優(yōu)化、可移植性優(yōu)化)。數(shù)據(jù)流分析法關(guān)鍵是數(shù)據(jù)的引用和定義。 數(shù)據(jù)的定義:如果程序中某一語句執(zhí)行時能改變某程序變量V的值,則稱V是被該語句定義的。


數(shù)據(jù)的引用:如果程序中一語句的執(zhí)行引用了內(nèi)存中變量V的值,則稱V是被該語句引用的。


(數(shù)據(jù)流分析步驟 )


根據(jù)代碼得到數(shù)據(jù)流表

分析數(shù)據(jù)流表找到以下兩種錯誤:變量未定義但被引用

變量定義但未被引用

2、動態(tài)測試

1)定義:按照預(yù)先設(shè)計(jì)的數(shù)據(jù)和步驟去運(yùn)行被測軟件系統(tǒng),從而對被測試軟件進(jìn)行檢測的一種測試技術(shù)。


2)特點(diǎn):主要分析軟件系統(tǒng)在模擬或是真實(shí)的環(huán)境中執(zhí)行之前、之中、之后的動態(tài)行為。


3)常用技術(shù):動態(tài)分析技術(shù)


(1)定義:對軟件系統(tǒng)運(yùn)行行為進(jìn)行分析,包含程序在受控的環(huán)境下使用特定的輸入進(jìn)行正式的運(yùn)行,和期望的結(jié)果比較以檢查系統(tǒng)運(yùn)行是正確還是不正確。


(2)常用動態(tài)分析技術(shù):


路徑測試

分支測試

性能測試

(3)常用動態(tài)分析工具及功能


測試覆蓋率分析:用于測試對代碼的檢測范圍;

跟蹤:跟蹤程序執(zhí)行期間的所有路徑

調(diào)整:度量程序執(zhí)行過程中所有的資源

模擬:模擬系統(tǒng)的部分


3、所有測試方法都可以歸類為手工測試和自動化測試。

1、手工測試


1)定義:手工測試是傳統(tǒng)的測試方法,由測試人員手工編寫測試用例,執(zhí)行,觀察結(jié)果。


2)缺點(diǎn):測試工作量大,重復(fù)多,回歸測試難以實(shí)現(xiàn)


2、自動化測試


1)定義:自動化測試指利用軟件測試工具自動實(shí)現(xiàn)全部或者部分測試工作:管理、設(shè)計(jì)、執(zhí)行和報(bào)告,自動化測試節(jié)省大量的測試開銷,并能夠完成一些手工測試無法實(shí)現(xiàn)的測試。


2)自動化測試的意義


(1)對程序新版本運(yùn)行前一版本執(zhí)行的測試,提高回歸測試效率


(2)可以運(yùn)行更多更頻繁的測試


(3)可以執(zhí)行手工測試?yán)щy或不可能做到的測試,比如大量的重復(fù)操作或者集成測試


(4)更好的利用資源,比如測試儀器或者被測對象


(5)測試具有一致性和可重復(fù)性,及自動化測試的步驟和結(jié)果完全一樣的測試的復(fù)用性,及自動化測試甲苯可以拆分開給其他測試腳本使用


(6)可以更快地將軟件推向市場,軟件發(fā)布前進(jìn)行高效的回歸測試,減少軟件發(fā)布的時間


(7)增加軟件的信任度,通過自動化測試提高了測試效率,可以吧節(jié)約的時間拿出來做更多的測試


3)自動化測試的限制


(1)不能取代手工測試,自動化測試只能提高測試效率,不能提高測試有效性,即不可能發(fā)現(xiàn)更多缺陷更多


(2)對測試設(shè)計(jì)依賴性極大,測試設(shè)計(jì)的不好會遺漏問題


(3)自動化測試對軟件開發(fā)具有很大的依賴性,開發(fā)出現(xiàn)變更可能導(dǎo)致前面的自動化測試完全失效


(4)工具本身并不具備想象力,工具不具有智能


4)自動化測試的誤區(qū)


(1)不現(xiàn)實(shí)的期望,希望自動化能取代手工測試


(2)缺乏測試實(shí)踐經(jīng)驗(yàn),手工測試都做不好,或者經(jīng)驗(yàn)積累不夠,就嘗試自動化,很難成功


(3)期望自動化測試發(fā)現(xiàn)大量新缺陷,自動化只能保證測試執(zhí)行效率,確保已有的問題不會再發(fā)生,發(fā)現(xiàn)新缺陷不是其目的


(4)安全性錯覺,認(rèn)為進(jìn)行了自動化測試的軟件就是安全的、質(zhì)量有保證的只有手工測試做好了,明確了測試的觀察點(diǎn),才能把自動化測試做好,所以手工測試是自動化測試的一個基礎(chǔ)



標(biāo)簽:黑盒測試、白盒測試、灰盒測試


公司地址:成都市天府新區(qū)萬安街道寧安東路198號
聯(lián)系人:王經(jīng)理
聯(lián)系電話:18684048962
聯(lián)系我們
成都柯信優(yōu)創(chuàng)信息技術(shù)服務(wù)有限公司
客服微信
微信公眾號
我們的客戶
五峰| 封开县| 富源县| 加查县| 崇礼县| 安康市| 营山县| 文安县| 锡林浩特市| 板桥市| 成都市| 岳普湖县| 常宁市| 丹寨县| 承德县| 松原市| 安丘市| 盘锦市|