Android單元測(cè)試(二):什么是單元測(cè)試

2.1 什么是單元測(cè)試

首先需要弄清楚這個(gè)概念处嫌,到底什么是單元測(cè)試。即便我是計(jì)算機(jī)專業(yè)畢業(yè)的,說(shuō)實(shí)話如果不是專門研究了一段時(shí)間斩个,我也說(shuō)不出一個(gè)所以然來(lái)。以下是百度百科的定義:

單元測(cè)試(unit testing)驯杜,是指對(duì)軟件中的最小可測(cè)試單元進(jìn)行檢查和驗(yàn)證受啥。對(duì)于單元測(cè)試中單元的含義,一般來(lái)說(shuō)鸽心,要根據(jù)實(shí)際情況去判定其具體含義滚局,如C語(yǔ)言中單元指一個(gè)函數(shù),Java里單元指一個(gè)類再悼,圖形化的軟件中可以指一個(gè)窗口或一個(gè)菜單等核畴。總的來(lái)說(shuō)冲九,單元就是人為規(guī)定的最小的被測(cè)功能模塊谤草。單元測(cè)試是在軟件開(kāi)發(fā)過(guò)程中要進(jìn)行的最低級(jí)別的測(cè)試活動(dòng),軟件的獨(dú)立單元將在與程序的其他部分相隔離的情況下進(jìn)行測(cè)試莺奸。

定義很復(fù)雜丑孩,就我個(gè)人理解簡(jiǎn)單點(diǎn)來(lái)說(shuō),主要有以下幾點(diǎn):

  • 顧名思義灭贷,單元測(cè)試就是為了測(cè)試某一個(gè)代碼單元而寫的測(cè)試代碼温学。
  • 在java等面向?qū)ο笳Z(yǔ)言中,代碼單元就是一個(gè)類的一個(gè)方法甚疟。

所以我對(duì)單元測(cè)試的簡(jiǎn)單理解是:

單元測(cè)試仗岖,就是為了測(cè)試某一個(gè)類里的某一個(gè)方法是否正常執(zhí)行,而寫的測(cè)試代碼览妖。

2.2 單元測(cè)試不是集成測(cè)試

按照開(kāi)發(fā)階段劃分轧拄,軟件測(cè)試可分為單元測(cè)試、集成測(cè)試讽膏、系統(tǒng)測(cè)試和驗(yàn)收測(cè)試檩电。

  • 單元測(cè)試:用于驗(yàn)證編碼單元的正確性,以確保每個(gè)模塊能正常工作府树。
  • 集成測(cè)試:對(duì)已測(cè)試過(guò)的模塊進(jìn)行組裝俐末,進(jìn)行集成測(cè)試,目的在于檢驗(yàn)與軟件設(shè)計(jì)相關(guān)的程序結(jié)構(gòu)問(wèn)題奄侠。
  • 系統(tǒng)測(cè)試:檢驗(yàn)軟件產(chǎn)品能否與系統(tǒng)的其他部分(比如硬件卓箫、數(shù)據(jù)庫(kù)及操作人員)協(xié)調(diào)工作。
  • 驗(yàn)收測(cè)試:檢驗(yàn)軟件產(chǎn)品質(zhì)量的最后一道工序垄潮。主要突出用戶的作用丽柿,同時(shí)軟件開(kāi)發(fā)人員也應(yīng)有一定程度的參與恢准。驗(yàn)收測(cè)試可分為Alpha測(cè)試與Beta測(cè)試,Alpha測(cè)試由用戶在開(kāi)發(fā)環(huán)境下完成甫题,Beta測(cè)試由用戶在用戶環(huán)境下完成馁筐。

網(wǎng)上有張圖片能很好的說(shuō)明各測(cè)試階段的側(cè)重點(diǎn)及關(guān)聯(lián)關(guān)系:


V模型

由這個(gè)V模型圖片來(lái)看,單元測(cè)試其實(shí)對(duì)應(yīng)的就是我們的編碼階段坠非,所以單元測(cè)試就應(yīng)該是由程序員來(lái)編寫的敏沉。
單元測(cè)試只是測(cè)試一個(gè)方法單元,它的粒度應(yīng)該要足夠小炎码,它不是測(cè)試一整個(gè)操作流程盟迟,整個(gè)流程的測(cè)試應(yīng)該屬于集成測(cè)試或者以上的范疇之內(nèi)了。所以怎么樣定義一個(gè)方法單元潦闲,怎么樣去劃分單元粒度是一個(gè)比較重要的工作攒菠。
舉個(gè)例子:有個(gè)注冊(cè)界面,有用戶名歉闰、密碼辖众、重復(fù)密碼等輸入框,一個(gè)注冊(cè)的Button和敬,點(diǎn)擊Button以后凹炸,有個(gè)UserApi會(huì)去執(zhí)行performRegister操作,根據(jù)返回的結(jié)果判斷是注冊(cè)成功還是失敗昼弟,成功了會(huì)保存注冊(cè)信息等啤它,然后UI上會(huì)跳轉(zhuǎn)到首頁(yè),失敗了給出提示舱痘。我們把這個(gè)流程可以分解出以下這些步驟:
1.輸入用戶名变骡、密碼、確認(rèn)密碼芭逝;
2.點(diǎn)擊注冊(cè)Button進(jìn)行數(shù)據(jù)提交塌碌;
3.對(duì)輸入進(jìn)行校驗(yàn),用戶名铝耻、密碼等是否合規(guī);
4.調(diào)用UserApi的performRegister來(lái)提交數(shù)據(jù)到服務(wù)蹬刷;
5.處理前面一步的返回結(jié)果瓢捉,如果注冊(cè)成功,則保存相關(guān)注冊(cè)信息到本地(例如保存到數(shù)據(jù)庫(kù)办成、SharedPreference等)泡态;
6.UI處理,成功則跳轉(zhuǎn)到成功頁(yè)面迂卢,失敗則給出響應(yīng)提示某弦;
大家看桐汤,僅僅是一個(gè)注冊(cè)的操作,就可以劃分出這么多步驟來(lái)靶壮,對(duì)這整個(gè)注冊(cè)流程的測(cè)試怔毛,應(yīng)該叫集成測(cè)試,而不是單元測(cè)試腾降,單元測(cè)試應(yīng)該是針對(duì)這里面的每一步來(lái)分別測(cè)試的拣度。

2.3小結(jié)

本文介紹了單元測(cè)試的一些相關(guān)定義,以及單元測(cè)試與集成測(cè)試螃壤、系統(tǒng)測(cè)試抗果、驗(yàn)收測(cè)試等的區(qū)別〖榍纾總的來(lái)說(shuō)冤馏,我們要寫單元測(cè)試的時(shí)候,要把握單元的粒度大小寄啼。測(cè)試的單元粒度太大逮光,可能會(huì)導(dǎo)致這個(gè)單元依賴很多外部環(huán)境,如網(wǎng)絡(luò)辕录、存儲(chǔ)睦霎、數(shù)據(jù)庫(kù)等,無(wú)法進(jìn)行有效測(cè)試走诞;測(cè)試的單元粒度太小副女,測(cè)試代碼的工作量會(huì)加大很多,造成沒(méi)必要的浪費(fèi)蚣旱。

系列文章:
Android單元測(cè)試(一):前言
Android單元測(cè)試(二):什么是單元測(cè)試
Android單元測(cè)試(三):測(cè)試難點(diǎn)及方案選擇
Android單元測(cè)試(四):JUnit介紹
Android單元測(cè)試(五):JUnit進(jìn)階
Android單元測(cè)試(六):Mockito學(xué)習(xí)
Android單元測(cè)試(七):Robolectric介紹
Android單元測(cè)試(八):怎樣測(cè)試異步代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末碑幅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子塞绿,更是在濱河造成了極大的恐慌沟涨,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件异吻,死亡現(xiàn)場(chǎng)離奇詭異裹赴,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)诀浪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門棋返,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人雷猪,你說(shuō)我怎么就攤上這事睛竣。” “怎么了求摇?”我有些...
    開(kāi)封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵射沟,是天一觀的道長(zhǎng)殊者。 經(jīng)常有香客問(wèn)我,道長(zhǎng)验夯,這世上最難降的妖魔是什么猖吴? 我笑而不...
    開(kāi)封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮簿姨,結(jié)果婚禮上距误,老公的妹妹穿的比我還像新娘。我一直安慰自己扁位,他們只是感情好准潭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著域仇,像睡著了一般刑然。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上暇务,一...
    開(kāi)封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天泼掠,我揣著相機(jī)與錄音,去河邊找鬼垦细。 笑死择镇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的括改。 我是一名探鬼主播腻豌,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼嘱能!你這毒婦竟也來(lái)了吝梅?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤惹骂,失蹤者是張志新(化名)和其女友劉穎苏携,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體对粪,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡右冻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了著拭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纱扭。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖茫死,靈堂內(nèi)的尸體忽然破棺而出跪但,到底是詐尸還是另有隱情履羞,我是刑警寧澤峦萎,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布屡久,位于F島的核電站,受9級(jí)特大地震影響爱榔,放射性物質(zhì)發(fā)生泄漏被环。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一详幽、第九天 我趴在偏房一處隱蔽的房頂上張望筛欢。 院中可真熱鬧,春花似錦唇聘、人聲如沸版姑。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)剥险。三九已至,卻和暖如春宪肖,著一層夾襖步出監(jiān)牢的瞬間表制,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工控乾, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留么介,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓蜕衡,卻偏偏與公主長(zhǎng)得像壤短,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子衷咽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355