成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

單元測(cè)試第二彈——單元測(cè)試與單元測(cè)試框架

開(kāi)發(fā) 開(kāi)發(fā)工具
今天主要介紹軟件測(cè)試的四個(gè)階段使用的測(cè)試方法以及單元測(cè)試框架。

一、黑盒測(cè)試與白盒測(cè)試

在***彈中(《單元測(cè)試***彈——從軟件開(kāi)發(fā)生命周期談單元測(cè)試》)我們介紹過(guò),軟件的測(cè)試包含單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試和回歸測(cè)試四個(gè)階段。那么,這里我們先來(lái)看下各個(gè)階段都使用怎樣的測(cè)試方法。

軟件測(cè)試,從測(cè)試方法上來(lái)區(qū)分可以分為黑盒測(cè)試、白盒測(cè)試和灰盒測(cè)試。

軟件測(cè)試

1. 黑盒測(cè)試

黑盒測(cè)試,也稱為功能測(cè)試。測(cè)試者不了解程序的內(nèi)部情況,不需具備應(yīng)用程序的代碼、內(nèi)部結(jié)構(gòu)和編程語(yǔ)言的專門知識(shí)。只知道程序的輸入、輸出和系統(tǒng)的功能,這是從用戶的角度針對(duì)軟件界面、功能及外部結(jié)構(gòu)進(jìn)行測(cè)試,而不考慮程序內(nèi)部邏輯結(jié)構(gòu)。測(cè)試案例是依應(yīng)用系統(tǒng)應(yīng)該做的功能,照規(guī)范、規(guī)格或要求等設(shè)計(jì)。測(cè)試者選擇有效輸入和無(wú)效輸入來(lái)驗(yàn)證是否正確的輸出。 此測(cè)試方法可適合大部分的軟件測(cè)試,如集成測(cè)試以及系統(tǒng)測(cè)試。

黑盒測(cè)試主要是為了發(fā)現(xiàn)以下幾類錯(cuò)誤:

  • 是否有不正確或遺漏的功能?
  • 在接口上,輸入是否能正確的接受?能否輸出正確的結(jié)果?
  • 是否有數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部信息(例如數(shù)據(jù)文件)訪問(wèn)錯(cuò)誤?
  • 性能上是否能夠滿足要求?
  • 是否有初始化或終止性錯(cuò)誤?

2. 白盒測(cè)試

白盒測(cè)試又稱透明盒測(cè)試、結(jié)構(gòu)測(cè)試等。測(cè)試應(yīng)用程序的內(nèi)部結(jié)構(gòu)或運(yùn)作,而不是測(cè)試應(yīng)用程序的功能(即黑盒測(cè)試)。在白盒測(cè)試時(shí),以編程語(yǔ)言的角度來(lái)設(shè)計(jì)測(cè)試案例。測(cè)試者輸入數(shù)據(jù)驗(yàn)證數(shù)據(jù)流在程序中的流動(dòng)路徑,并確定適當(dāng)?shù)妮敵觯愃茰y(cè)試電路中的節(jié)點(diǎn)。測(cè)試者了解待測(cè)試程序的內(nèi)部結(jié)構(gòu)、算法等信息,這是從程序設(shè)計(jì)者的角度對(duì)程序進(jìn)行的測(cè)試。 白盒測(cè)試可以應(yīng)用于單元測(cè)試、集成測(cè)試和系統(tǒng)的軟件測(cè)試流程。

白盒測(cè)試主要是想對(duì)程序模塊進(jìn)行如下檢查:

  • 對(duì)程序模塊的所有獨(dú)立的執(zhí)行路徑至少測(cè)試一遍。
  • 對(duì)所有的邏輯判定,取“真”與取“假”的兩種情況都能至少測(cè)一遍。
  • 在循環(huán)的邊界和運(yùn)行的界限內(nèi)執(zhí)行循環(huán)體。
  • 測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性,等等。

3. 灰盒測(cè)試

灰盒測(cè)試,是介于白盒測(cè)試與黑盒測(cè)試之間的一種測(cè)試,灰盒測(cè)試多用于集成測(cè)試階段,不僅關(guān)注輸出、輸入的正確性,同時(shí)也關(guān)注程序內(nèi)部的情況。灰盒測(cè)試不像白盒那樣詳細(xì)、完整,但又比黑盒測(cè)試更關(guān)注程序的內(nèi)部邏輯,常常是通過(guò)一些表征性的現(xiàn)象、事件、標(biāo)志來(lái)判斷內(nèi)部的運(yùn)行狀態(tài)。

4. 對(duì)代碼做白盒測(cè)試

上面介紹了軟件測(cè)試中的黑盒、白盒和灰盒測(cè)試。白盒測(cè)試被廣泛的使用在單元測(cè)試階段。

這里我們先來(lái)分析下,我們要進(jìn)行單元測(cè)試,需要做哪些事情?因?yàn)閱卧獪y(cè)試的主要手段是白盒測(cè)試,白盒測(cè)試的測(cè)試方法是:測(cè)試者輸入數(shù)據(jù)驗(yàn)證數(shù)據(jù)流在程序中的流動(dòng)路徑,并確定適當(dāng)?shù)妮敵?。那么整個(gè)測(cè)試流程大概需要包含以下幾個(gè)步驟:

  • 初始化測(cè)試環(huán)境、準(zhǔn)備測(cè)試數(shù)據(jù)。
  • 調(diào)用需要被測(cè)試的單元。
  • 收集結(jié)果,并與期望值比較。
  • 測(cè)試數(shù)據(jù)清理。

以上四個(gè)步驟在每個(gè)單元在被測(cè)試的時(shí)候都需要被執(zhí)行。舉個(gè)例子,我們有一個(gè)除法運(yùn)算的方法,我們要對(duì)他做單元測(cè)試。

  1. public class Calculator{ 
  2.     public float divide(float divisor,float dividend){ 
  3.         return divisor/dividend; 
  4.     } 

我們要在程序中驗(yàn)證上面這個(gè)方法的正確性,一般會(huì)寫以下代碼來(lái)測(cè)試他:

  1. public class CalculatorTest{ 
  2.     public static void main(String [] args){ 
  3.         Calculator calculator = new Calculator(); 
  4.         float result = calculator. divide(10.0,2.0); 
  5.         if(result == 5.0){ 
  6.             System.out.println("divide test ok"); 
  7.         }else{ 
  8.             System.out.println("divide test failed"); 
  9.         } 
  10.     } 

這只是對(duì)該方法測(cè)試的***個(gè)測(cè)試,如果我想測(cè)試這個(gè)方法在被除數(shù)是0的情況下會(huì)怎么樣,那么我就要再寫一個(gè)CalculatorTest2,然后重寫寫一個(gè)main方法,再重新定義一個(gè)Calculator對(duì)象,然后在調(diào)用divide方法的時(shí)候把第二個(gè)參數(shù)的值傳為0。

其實(shí)上面的測(cè)試是存在很大問(wèn)題的,因?yàn)樵趦?nèi)存中并無(wú)法精確的存儲(chǔ)浮點(diǎn)數(shù),當(dāng)我們把兩個(gè)浮點(diǎn)數(shù)相除的時(shí)候結(jié)果并不一定可以精確的存儲(chǔ)下來(lái),而我們的逾期結(jié)果卻是一個(gè)精確值,這樣的比較可能會(huì)不相等的。但是這樣的情況需要多個(gè)case才有可能被發(fā)現(xiàn)。

所以,我們?cè)跍y(cè)試一個(gè)類中的一個(gè)方法的時(shí)候,可能要定義大量的類,然后需要分別執(zhí)行,并且通過(guò)看控制臺(tái)的輸出才能確認(rèn)結(jié)果。

這里,請(qǐng)先記住這些問(wèn)題,因?yàn)?,接下?lái)我們要介紹的測(cè)試框架會(huì)幫我們解決這些問(wèn)題的。

二、單元測(cè)試框架

通常,在沒(méi)有特定框架支持下,我們?cè)趯?duì)一個(gè)方法進(jìn)行單元測(cè)試的時(shí)候,無(wú)外乎是使用分支判斷、異常處理、流程控制等來(lái)控制代碼的執(zhí)行,通過(guò)程序輸出來(lái)表示方法的執(zhí)行成功和失敗。這樣存在的***問(wèn)題就是我們每執(zhí)行完一個(gè)單測(cè)之后,都要去控制臺(tái)看輸出才知道單元測(cè)試有沒(méi)有成功,這明顯是不合理的,因?yàn)閱卧獪y(cè)試是需要自動(dòng)化執(zhí)行的,程序沒(méi)辦法幫我們檢查輸出是否正確的。

單元測(cè)試框架就解決了這個(gè)問(wèn)題,一旦使用了框架,加入單元測(cè)試相對(duì)來(lái)說(shuō)會(huì)簡(jiǎn)單許多。通常,Java中常用的單元測(cè)試框架一般包含三個(gè)功能:測(cè)試工具、測(cè)試套件、測(cè)試運(yùn)行器。

1. 測(cè)試工具

測(cè)試工具是一整套固定的工具用于基線測(cè)試。測(cè)試工具的目的是為了確保測(cè)試能夠在共享且固定的環(huán)境中運(yùn)行,因此保證測(cè)試結(jié)果的可重復(fù)性。一般負(fù)責(zé)初始化測(cè)試環(huán)境、準(zhǔn)備測(cè)試數(shù)據(jù)和測(cè)試數(shù)據(jù)清理。

2. 測(cè)試套件

測(cè)試套件意味捆綁幾個(gè)測(cè)試案例并且同時(shí)運(yùn)行。

3. 測(cè)試運(yùn)行器

用于執(zhí)行測(cè)試案例。一般負(fù)責(zé)調(diào)用需要被測(cè)試的單元、收集結(jié)果、并與期望值比較。

除了以上這些功能之外,針對(duì)不同的功能,一般還會(huì)提供很多API和語(yǔ)法支持。

下一彈會(huì)重點(diǎn)介紹如何使用JUnit進(jìn)行單元測(cè)試—《單元測(cè)試第三彈——使用JUnit進(jìn)行單元測(cè)試》

【本文是51CTO專欄作者Hollis的原創(chuàng)文章,轉(zhuǎn)載聯(lián)系作者本人獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專欄
相關(guān)推薦

2017-01-14 23:26:17

單元測(cè)試JUnit測(cè)試

2017-01-16 12:12:29

單元測(cè)試JUnit

2017-03-23 16:02:10

Mock技術(shù)單元測(cè)試

2022-05-12 09:37:03

測(cè)試JUnit開(kāi)發(fā)

2020-08-18 08:10:02

單元測(cè)試Java

2009-09-01 10:20:06

protected方法單元測(cè)試

2024-10-16 16:09:32

2021-05-05 11:38:40

TestNGPowerMock單元測(cè)試

2011-07-04 18:16:42

單元測(cè)試

2020-05-07 17:30:49

開(kāi)發(fā)iOS技術(shù)

2023-07-26 08:58:45

Golang單元測(cè)試

2011-05-16 16:52:09

單元測(cè)試徹底測(cè)試

2009-08-19 09:00:48

單元測(cè)試框架自動(dòng)化測(cè)試

2017-02-21 10:30:17

Android單元測(cè)試研究與實(shí)踐

2017-02-23 15:59:53

測(cè)試MockSetup

2011-04-18 13:20:40

單元測(cè)試軟件測(cè)試

2012-05-17 09:09:05

Titanium單元測(cè)試

2020-09-30 08:08:15

單元測(cè)試應(yīng)用

2009-09-25 10:33:25

Hibernate單元

2011-06-14 15:56:42

單元測(cè)試
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩网站在线 | 国产成人久久精品一区二区三区 | h片在线免费观看 | 色综合视频| 人人九九精 | 午夜亚洲| 中文字字幕一区二区三区四区五区 | 国产精品日韩欧美一区二区 | 99精品视频一区二区三区 | www.免费看片.com | 日本激情视频中文字幕 | 久久综合狠狠综合久久综合88 | 国产一级一片免费播放 | 亚洲国产精品久久久 | 亚洲精品久久久一区二区三区 | 亚洲 一区 | 日韩成人在线观看 | 亚洲视频一区在线播放 | 亚洲欧洲激情 | 国产在线观看一区二区三区 | 亚洲视频欧美视频 | 久久久成人免费一区二区 | 综合久久综合久久 | 亚洲精品中文字幕 | 亚洲精品黄色 | 激情av免费看 | 国产午夜精品视频 | 成年无码av片在线 | 人人插人人 | 日本超碰 | 日韩高清www | 日韩中文字幕在线视频 | 日产精品久久久一区二区福利 | 欧美一级大片 | 在线一区二区三区 | 国产精品69久久久久水密桃 | 久久伊人影院 | 日韩av免费在线电影 | 国产乱码精品一区二区三区忘忧草 | 亚洲中午字幕 | 在线播放国产一区二区三区 |