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

無(wú)單測(cè)、不編碼——寫(xiě)單元測(cè)試的重要性

開(kāi)發(fā) 開(kāi)發(fā)工具
作為一個(gè)開(kāi)發(fā)人員,很多人很少寫(xiě)單元測(cè)試,甚至不寫(xiě)單元測(cè)試,今天我們就分析一下,到底單元測(cè)試有沒(méi)有那么重要。

作為一個(gè)開(kāi)發(fā)人員,很多人很少寫(xiě)單元測(cè)試,甚至不寫(xiě)單元測(cè)試。

總結(jié)一下開(kāi)發(fā)人員不寫(xiě)單測(cè)的原因無(wú)非有以下幾種:

  • 認(rèn)為寫(xiě)單測(cè)浪費(fèi)時(shí)間。
  • 認(rèn)為測(cè)試不應(yīng)該是開(kāi)發(fā)人員來(lái)做的。
  • 自信我寫(xiě)的代碼沒(méi)有問(wèn)題,不需要單測(cè)。
  • 不知道單測(cè)的重要性。
  • 不知道單測(cè)的好處。

那么針對(duì)以上這幾種觀點(diǎn),今天就逐個(gè)分析一下。到底單元測(cè)試有沒(méi)有那么重要。

無(wú)單測(cè),不編碼

一、單元測(cè)試真的浪費(fèi)時(shí)間嗎?

在業(yè)務(wù)高速發(fā)展的今天,很多時(shí)候項(xiàng)目來(lái)的時(shí)候要的都很急。好像要是我不把這個(gè)功能在幾天之內(nèi)搞完整個(gè)公司都要倒閉了一樣。所以,很多開(kāi)發(fā)人員都把主要的時(shí)間用在寫(xiě)業(yè)務(wù)邏輯代碼上。很多人都是有時(shí)間的時(shí)候才會(huì)寫(xiě)一些簡(jiǎn)單的單元測(cè)試代碼,如果項(xiàng)目比較忙的話就不寫(xiě)單元測(cè)試。

很多程序員的項(xiàng)目都是這樣完成的:

寫(xiě)代碼---->集成測(cè)試---->改bug---->集成測(cè)試---->預(yù)發(fā)布測(cè)試---->改bug---->正式發(fā)布---->發(fā)生故障---->改bug---->發(fā)布---->改bug---->....

可以看到,改bug過(guò)程貫穿著整個(gè)軟件的生命周期。改bug很多人都知道怎么改,就是要先定位問(wèn)題,然后再解決問(wèn)題。往往定位問(wèn)題都是比較復(fù)雜的,一般都需要很長(zhǎng)的時(shí)間。

如果有了單元測(cè)試可能就會(huì)節(jié)省很多時(shí)間,通過(guò)單測(cè)可以減少很多bug的發(fā)生,也能幫助我們快速的定位問(wèn)題。只要在集成測(cè)試之前做好單元測(cè)試。在通過(guò)單元測(cè)試之后,我們就可以認(rèn)為這部分代碼是可靠的,那么就可以放心的進(jìn)行項(xiàng)目集成。

當(dāng)然,有了單元測(cè)試,并不能保證代碼不出現(xiàn)bug。但是,單元測(cè)試可以在軟件開(kāi)發(fā)過(guò)程的早期就能發(fā)現(xiàn)問(wèn)題。只要單測(cè)的測(cè)試用例足夠好,那么就可以避免很多低級(jí)錯(cuò)誤。

那么,為什么還是很多人認(rèn)為單元測(cè)試?yán)速M(fèi)時(shí)間呢,個(gè)人分析原因可能是這樣的。開(kāi)發(fā)人員認(rèn)為我的時(shí)間就應(yīng)該用來(lái)寫(xiě)業(yè)務(wù)邏輯代碼。項(xiàng)目出現(xiàn)了bug,我也應(yīng)該用我的時(shí)間來(lái)解決這個(gè)bug。他們認(rèn)為我的時(shí)間花費(fèi)在這件事上我是認(rèn)可的,所以我的時(shí)間就不叫浪費(fèi)。歸根結(jié)底,他們就是沒(méi)有意識(shí)到單元測(cè)試所帶來(lái)的好處。一旦他們發(fā)現(xiàn),通過(guò)單元測(cè)試可以讓我更早的發(fā)現(xiàn)問(wèn)題等等好處,那么他們也會(huì)認(rèn)可把時(shí)間花費(fèi)在寫(xiě)單測(cè)上。

在這里,可以先下一個(gè)結(jié)論:好的單測(cè)不僅不會(huì)浪費(fèi)時(shí)間,還會(huì)大大節(jié)省我們的時(shí)間。至于為什么會(huì)節(jié)省時(shí)間以及什么叫好的單測(cè)會(huì)在后面介紹。

二、單元測(cè)試應(yīng)不應(yīng)該開(kāi)發(fā)人員來(lái)寫(xiě)

這里暫不分析到底應(yīng)不應(yīng)該有單獨(dú)的測(cè)試人員,這是一個(gè)頗有爭(zhēng)議的話題(一部分人認(rèn)為,開(kāi)發(fā)就應(yīng)該是全棧的。還有一部分人認(rèn)為開(kāi)發(fā)就應(yīng)該只關(guān)注業(yè)務(wù)寫(xiě)業(yè)務(wù)代碼)。這里只分析單元測(cè)試到底應(yīng)該由誰(shuí)來(lái)做。有人認(rèn)為,單元測(cè)試也是測(cè)試的一種手段,應(yīng)該交給專(zhuān)門(mén)的QA去做。也有人認(rèn)為單元測(cè)試應(yīng)該是開(kāi)發(fā)人員來(lái)寫(xiě),那么,單元測(cè)試到底應(yīng)不應(yīng)該開(kāi)發(fā)人員寫(xiě)呢?

單元測(cè)試必須由最熟悉代碼的人來(lái)寫(xiě)。這是好的單元測(cè)試的標(biāo)準(zhǔn)之一。那么還能有誰(shuí)比寫(xiě)代碼的人更了解代碼呢?代碼的作者最了解代碼的目的、特點(diǎn)和實(shí)現(xiàn)的局限性。所以,寫(xiě)單元測(cè)試沒(méi)有比作者更適合的人選了。單獨(dú)的測(cè)試人員進(jìn)行單元測(cè)試,往往工作量大,周期長(zhǎng),耗費(fèi)巨大,其結(jié)果事倍功半。軟件的開(kāi)發(fā)者總是應(yīng)當(dāng)負(fù)責(zé)程序的單個(gè)單元的測(cè)試,保證每個(gè)單元能夠完成設(shè)計(jì)的功能,其實(shí)在很多情況下,開(kāi)發(fā)者也應(yīng)進(jìn)行集成測(cè)試。

我的觀點(diǎn)以為,開(kāi)發(fā)人員寫(xiě)了一個(gè)函數(shù),就要對(duì)這個(gè)函數(shù)負(fù)責(zé),就有義務(wù)保證這個(gè)函數(shù)可以準(zhǔn)確的執(zhí)行。單測(cè)便是一個(gè)很好的手段。所以,如果要寫(xiě)單測(cè),就應(yīng)該開(kāi)發(fā)人員自己來(lái)寫(xiě)。

三、我很自信,我還需要單測(cè)嗎?

有人能寫(xiě)出***無(wú)缺的代碼么?答案是否定的!

我認(rèn)為程序員都是天生驕傲的。雖然程序員往往都會(huì)說(shuō):在我機(jī)器上明明是好的呀,是不是你用的方式不對(duì)呀。但是,好的程序員應(yīng)該在說(shuō)完這句話之后會(huì)偷偷的去排查問(wèn)題。

寫(xiě)代碼不是可以一蹴而就的,必須經(jīng)過(guò)各種各樣的測(cè)試,單元測(cè)試只是其中一種。

所以,無(wú)論你是一個(gè)多么天生驕傲的程序員,你都不是神!所以,你也需要單測(cè)。

四、單測(cè)真的有那么重要么?

很多程序員寧愿把時(shí)間花費(fèi)在寫(xiě)業(yè)務(wù)邏輯代碼上,他們多數(shù)是有時(shí)間的時(shí)候才會(huì)寫(xiě)一些簡(jiǎn)單的單元測(cè)試代碼,如果項(xiàng)目比較忙的話就不寫(xiě)單元測(cè)試。據(jù)我所知,只有少數(shù)的公司會(huì)要求項(xiàng)目上線必須達(dá)到一定百分比的代碼覆蓋率(軟件測(cè)試中的一種度量,描述程式中源代碼被測(cè)試的比例和程度),大多數(shù)公司都不是很重視這一項(xiàng),所有,很多人就不太重視單元測(cè)試。但是,很多發(fā)生故障的經(jīng)驗(yàn)告訴我們,很多問(wèn)題是可以通過(guò)單元測(cè)試避免的。

其實(shí)單元測(cè)試的重要性很簡(jiǎn)單,就是一句話:不寫(xiě)單元測(cè)試,你怎么知道你的代碼寫(xiě)的對(duì)不對(duì)?沒(méi)有足夠豐富的測(cè)試用例,你怎么知道用戶會(huì)怎么使用到你的代碼,你又怎么會(huì)知道你的代碼應(yīng)該怎么被執(zhí)行呢?

所以,單元測(cè)試很重要。和寫(xiě)代碼一樣重要。無(wú)單測(cè),不編碼!

五、單元測(cè)試有哪些好處?

前面說(shuō)了這么多,其實(shí)以上這些問(wèn)題都有一個(gè)最最根源的問(wèn)題,那就是很多程序員不寫(xiě)單測(cè)的最最根本原因是他們根本不知道寫(xiě)單測(cè)和不寫(xiě)單測(cè)的區(qū)別。不知道寫(xiě)了單測(cè)能帶來(lái)好處。所以他們會(huì)認(rèn)為寫(xiě)單測(cè)是浪費(fèi)時(shí)間,所以他們才會(huì)認(rèn)為單測(cè)不應(yīng)該是由我來(lái)寫(xiě),所以他們才會(huì)認(rèn)為我不需要寫(xiě)單測(cè)。

那么,單元測(cè)試到底能帶來(lái)哪些好處呢?

J.Timothy King寫(xiě)過(guò)一篇關(guān)于先寫(xiě)單元測(cè)試有哪些好處的文章:Twelve Benefits of Writing Unit Tests First(先寫(xiě)單元測(cè)試的十二個(gè)好處),這里挑其中幾個(gè)顯而易見(jiàn)和比較突出的好處介紹一下。

1. 減少bug

單元測(cè)試的目的就是通過(guò)足夠準(zhǔn)確的測(cè)試用例保證代碼邏輯是正確。所以,在單測(cè)過(guò)程中,必然可以解決一些bug。因?yàn)椋坏┠硹l測(cè)試用例沒(méi)有通過(guò),那么我們就會(huì)修改被測(cè)試的代碼來(lái)保證能夠通過(guò)測(cè)試。

2. 減少修復(fù)bug的成本

一般解決bug的思路都是先通過(guò)各種手段定位問(wèn)題,然后在解決問(wèn)題。定位問(wèn)題的時(shí)候如果沒(méi)有單元測(cè)試,就只能通過(guò)debug的方式一點(diǎn)一點(diǎn)的追蹤代碼。解決問(wèn)題的時(shí)候更是需要想盡各種方法來(lái)重現(xiàn)問(wèn)題,然后改代碼,改了代碼之后在集成測(cè)試。

因?yàn)閱卧?guī)模較小,復(fù)雜性較低,因而發(fā)現(xiàn)錯(cuò)誤后容易隔離和定位,有利于調(diào)試工作。

3. 幫助重構(gòu),提高重構(gòu)的成功率

我相信,對(duì)一個(gè)程序員來(lái)說(shuō)最痛苦的事就是修改別人的代碼。有時(shí)候,一個(gè)很大的系統(tǒng)會(huì)導(dǎo)致很多人不敢改,因?yàn)樗恢栏牧艘粋€(gè)地方會(huì)不會(huì)導(dǎo)致其他地方出錯(cuò)??梢?,一旦有了單元測(cè)試,開(kāi)發(fā)人員可以很方便的重構(gòu)代碼,只要在重構(gòu)之后跑一遍單元測(cè)試就可以知道是不是把代碼“改壞了”

4. 提高開(kāi)發(fā)速度

不寫(xiě)單測(cè)也許能讓開(kāi)發(fā)速度更快,但是無(wú)法保證自己寫(xiě)出來(lái)的代碼真的可以正確的執(zhí)行。寫(xiě)單測(cè)可以較少很多后期解決bug的時(shí)間。也能讓我們放心的使用自己寫(xiě)出來(lái)的代碼。整體提高開(kāi)發(fā)速度。

五、后記

據(jù)我說(shuō)知,在facebook是沒(méi)有QA的,他們的所有代碼都是通過(guò)單元測(cè)試來(lái)保證能夠正確執(zhí)行的。在google也很重視單測(cè),國(guó)外這樣的大公司都會(huì)要求單測(cè)的代碼覆蓋率達(dá)到一個(gè)高的水平,否則是絕對(duì)不會(huì)允許代碼發(fā)不到線上的。

所以,通過(guò)這樣一篇文章,希望讀者可以重視單元測(cè)試,并在實(shí)際項(xiàng)目中運(yùn)用起來(lái)。但是,也請(qǐng)記得,單測(cè)只能在一定程度上減少bug的發(fā)生,并不是寫(xiě)了單測(cè)就不會(huì)在發(fā)生問(wèn)題。

無(wú)單測(cè),不編碼!

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

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

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

2023-09-19 23:30:25

單元測(cè)試代碼

2023-06-11 17:32:07

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

2024-07-29 12:12:59

2017-01-14 23:42:49

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

2020-09-11 16:00:40

Bash單元測(cè)試

2021-10-12 19:16:26

Jest單元測(cè)試

2016-10-20 12:34:08

android單元測(cè)試java

2010-07-30 16:28:06

2023-10-24 11:07:57

2023-07-26 08:58:45

Golang單元測(cè)試

2011-05-16 16:52:09

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

2024-08-21 08:22:33

2016-10-26 20:57:49

AndroidJava單元測(cè)試

2020-08-18 08:10:02

單元測(cè)試Java

2022-09-05 07:28:08

Web滲透測(cè)試

2017-01-14 23:26:17

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

2017-01-16 12:12:29

單元測(cè)試JUnit

2022-05-12 09:37:03

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

2011-06-14 15:56:42

單元測(cè)試

2011-07-05 18:30:44

站內(nèi)優(yōu)化
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 一级片免费在线观看 | 精品一区二区三区四区 | 欧美中文字幕一区二区三区亚洲 | 亚洲一区二区精品视频 | 一区二区三区中文字幕 | 亚洲品质自拍视频 | 精品久久久久久亚洲精品 | 在线观看午夜视频 | 亚洲综合视频 | 精品一区在线看 | 亚洲免费人成在线视频观看 | 国产精品美女久久久久久久久久久 | 欧美激情精品久久久久久变态 | 国产精品一区二区三区免费观看 | 91视频在线观看 | 久久久人成影片免费观看 | 狠狠干影院 | 岛国午夜| 日韩国产一区二区三区 | 日本一区二区高清不卡 | 国产免费视频 | 日韩欧美成人一区二区三区 | 免费视频中文字幕 | 日韩午夜影院 | 成人做爰9片免费看网站 | www中文字幕| 久久久久久久一区 | 亚洲激情综合 | 精品一区二区三区91 | 91毛片在线观看 | 成人免费观看视频 | 日韩精品一区二区三区中文字幕 | 国产一区日韩在线 | 欧美国产一区二区三区 | 精品久久一 | 天天久久 | 中文字幕一区二区三区四区 | 亚洲精品成人 | 精品国产乱码久久久久久1区2区 | 香蕉av免费 | 欧美精品在线观看 |