首頁 培訓(xùn)網(wǎng) 最新資訊 熱門問答

軟件測試

免費(fèi)試聽 在線客服

您的位置: 深圳培訓(xùn)網(wǎng) > 軟件測試培訓(xùn)資訊 > 為什么要測試,測試是如何令人更快樂的?(二)

為什么要測試,測試是如何令人更快樂的?(二)

來源:教育聯(lián)展網(wǎng) | 發(fā)布時(shí)間: | 編輯:佚名

來源:51Testing軟件測試網(wǎng)

 

知道測試什么是關(guān)鍵
知道測試什么沒有聽上去得那么容易,并且有很大一部分是由經(jīng)驗(yàn)所決定的。許多測試測試得太多。知道要測試什么涉及到要了解什么重要,什么不重要,而要知道這些并不是一件隨隨便便就能做到的事情。這里有一個(gè)技巧,但:
“盡可能采用**高級(jí)別的測試,以便于在實(shí)現(xiàn)上覆蓋范圍和靈活性?!?/span>——Brian Lonsdorf,《JavaScript. Air 004》
所以,基本上:
不要測試內(nèi)部的東西,這只會(huì)成為你的阻礙。如果你真的覺得你應(yīng)該測試內(nèi)部的東西,那么你**分離成一個(gè)新的模塊,使之成為外部的東西。
不要測試過于指定,或處理它們不必和不應(yīng)該知道的東西。
不要只是為了獲得 100% 的覆蓋率而去寫測試。如果有人告訴你應(yīng)該保持 100% 的覆蓋率,那么不要廢話,揍他。
請記住,測試應(yīng)該從模塊外部的角度開始由外到內(nèi)。需要注意的是完全覆蓋的測試還是有可能的,即代碼的所有分支應(yīng)該都可以實(shí)現(xiàn)。如果沒有,那么它們基本上是死碼,不是嗎?除非你需要更好地理解它們是如何工作的,否則就不要測試內(nèi)部的東西。
想想當(dāng)一段時(shí)間以后,代碼重構(gòu)的時(shí)候,會(huì)發(fā)生什么。實(shí)現(xiàn)應(yīng)該允許在測試不失敗的情況下被更改。為什么?因?yàn)槿绻麑淼某绦騿T需要改測試的話,那么基本上是重寫,而不是重構(gòu)。并且重寫并不安全。對于重構(gòu)內(nèi)部應(yīng)該沒有新的測試。
在測試時(shí)要?jiǎng)?wù)實(shí)。測試是項(xiàng)目以及創(chuàng)造價(jià)值的一部分,什么都拿來測試沒有任何意義,就像實(shí)現(xiàn)所有按鈕沒有意義一樣。記住文檔方面。如果測試涉及許多實(shí)施細(xì)節(jié),那么我們就會(huì)失去模塊的重點(diǎn)。我們就會(huì)失去文檔的價(jià)值。
至于文檔,測試你的領(lǐng)域假設(shè)。這些都是你工作的問題域的代碼解釋,這些問題域往往是一些程序員不擅長的地方。用代碼的形式文檔化這些假設(shè)解決了兩個(gè)問題:自我文檔化假設(shè),并證明它們能夠如解釋那樣有效工作。
當(dāng)你發(fā)現(xiàn) bug 的時(shí)候,編寫測試。不要只是修復(fù)它。去寫測試,確保它既是紅的,又對齊 bug 所沒有意識(shí)到的期望。修復(fù) bug,使其呈現(xiàn)綠色。保存。
代碼覆蓋作為一個(gè)具體的數(shù)字被高估了,但作為一種工具它還是很有用的。不要為了覆蓋范圍而力求覆蓋。請記住,覆蓋范圍只能告訴你測試在代碼行運(yùn)行什么,而不會(huì)告訴你測試將運(yùn)行什么組合。不過,這可以成為事情是否朝著正確方向前進(jìn)的一個(gè)很好的風(fēng)向標(biāo)。如果重構(gòu)導(dǎo)致更糟的代碼覆蓋范圍,那么就應(yīng)該響起警鈴,尤其是如果它是重構(gòu)的話。不要只是為了增加覆蓋數(shù)值就讓自己去編寫測試。經(jīng)過充分測試和編寫良好的代碼的覆蓋數(shù)值更大。
編寫測試的觸發(fā)器是當(dāng)你的代碼片段有新的行為的時(shí)候。測試應(yīng)該盯牢這種行為,但不要矯枉過正。
測試庫可能比測試終端應(yīng)用程序更容易,更為重要。畢竟,庫會(huì)被多個(gè)應(yīng)用程序使用。
如何編寫特別棒的測試
知道如何寫出好的測試是關(guān)鍵,因?yàn)楹苋菀讓懙貌缓?。事?shí)是,和其他所有一切一樣,它需要實(shí)踐。不過,這里有一些小貼士。
好的測試往往是簡單的。它不會(huì)嘗試一氣呵成面面俱到。它的名字反映了它要的目的,并且名稱應(yīng)該精簡成一句話。例如,名稱不應(yīng)該是“it works”,而是“it returns 0 for negative values”。
確保測試不要過于指定。 過于指定的測試涉及到太多內(nèi)部東西,并且不允許重構(gòu)。
單元測試運(yùn)行代碼時(shí)會(huì)隔離其他測試,不一定是其他代碼的測試。它將代碼帶出它的上下文,并創(chuàng)建其中一個(gè)方面的人工上下文,以便于進(jìn)行調(diào)查。然而,這并不意味著單元測試必須得在隔離其他所有代碼的情況下運(yùn)行,盡管這通常被認(rèn)為是“純單元測試”。所有一切都沒有必要 mock 和 stub,因?yàn)橹粫?huì)導(dǎo)致更復(fù)雜的設(shè)置,更低的覆蓋率和更加脆弱的測試。
在有意義的地方使用 mock 和 stub。你不想對一個(gè)真正的 HTTP API 進(jìn)行測試,那就 stub。如果你正在測試的東西是你自己對該對象的調(diào)用,或你想要自己的代碼歷經(jīng)某個(gè)路徑,那么使用使用 mock 和 stub。
測試讀起來應(yīng)該像一個(gè)小故事,遵循 AAA 體系: Arrange、Act、Assert。設(shè)置東西,做出聲明,并且斷言聲明做了它應(yīng)該做的。 “小故事”方面要重視小的方面?!?A”中沒有一個(gè)應(yīng)該超過 3 行代碼以上。在階段之間留一些空間會(huì)更好。應(yīng)該沒有任何分支和循環(huán),你在斷言時(shí)應(yīng)該只涉及一個(gè)邏輯內(nèi)容。 (如果一個(gè)斷言語句就能表達(dá)自然是好,但有時(shí)你需要更多,那也沒關(guān)系。)永遠(yuǎn)不要在測試的兩個(gè)不同的地方斷言,因?yàn)檫@會(huì)導(dǎo)致你實(shí)際測試的混亂。
測試應(yīng)該只需要一些領(lǐng)域知識(shí)就可讀。如果不深入模塊的內(nèi)部運(yùn)作就很難解釋的話,那么要么你**多花一些時(shí)間在測試上,那么徹底棄之不顧。
一般情況下,不要測試依賴。對于某些項(xiàng)目,對一些代碼所做的假設(shè)做一些簡單的測試,可能是有意義的,但要謹(jǐn)慎和小心。測試庫是庫作者的工作。相反,要依靠更新日志進(jìn)行升級(jí),以及依賴于測試集成而不是庫(不用 mock 一切的一個(gè)原因)。
編寫不需要很長時(shí)間運(yùn)行的低成本測試,因?yàn)橐獣r(shí)常運(yùn)行這些測試。如果你可以傳遞 --watch 參數(shù)到你的測試運(yùn)行中,并且在每次有文件改變時(shí)運(yùn)行它,那么這是一件好事。
**后但并非**不重要的一點(diǎn)是,使用你喜歡的測試框架。如果 JavaScript. 是你的菜,那么我會(huì)推薦 AVA,因?yàn)樗逦唵?,而且沒有復(fù)雜的配置。不管你選擇什么,確保測試框架能和你一起工作,并幫助你編寫測試更高效,更快捷。正如編碼一樣,如果你覺得不好玩,那么可能有什么地方出錯(cuò)了。


教育聯(lián)展————專業(yè)的軟件測試咨詢服務(wù)平臺(tái)。
詳詢:王萍老師18988787201
詳詢:小文老師18988787201
深圳軟件測試培訓(xùn) 深圳軟件測試培訓(xùn)班
王萍老師 小文老師


課程精選:

中華考試網(wǎng)軟件測試培訓(xùn)》
教育軟件測試培訓(xùn)頻道》
《軟件測試培訓(xùn)課程——深圳川石
《深圳川石軟件性能測試培訓(xùn)》
《深圳川石企業(yè)性能測試(PL&LR)提升班
《持續(xù)集成自動(dòng)化測試UFT Selenium提升班》
《深圳源昊寶安軟件測試培訓(xùn)班》
《深圳凌岳軟件自動(dòng)化測試培訓(xùn)班》
《深圳博睿軟件安全測試培訓(xùn)》
深圳達(dá)內(nèi)軟件測試培訓(xùn)學(xué)校》

熱門機(jī)構(gòu)推薦
軟件測試

免費(fèi)體驗(yàn)課開班倒計(jì)時(shí)

11: 41: 09

稍后會(huì)有專業(yè)老師給您回電,請保持電話暢通

咨詢電話:

本周熱門資訊

全國分站 熱門機(jī)構(gòu)

北京軟件測試培訓(xùn) 上海軟件測試培訓(xùn) 廣州軟件測試培訓(xùn) 深圳軟件測試培訓(xùn) 杭州軟件測試培訓(xùn) 蘇州軟件測試培訓(xùn) 南京軟件測試培訓(xùn) 天津軟件測試培訓(xùn) 佛山軟件測試培訓(xùn) 南寧軟件測試培訓(xùn) 長沙軟件測試培訓(xùn) 重慶軟件測試培訓(xùn) 太原軟件測試培訓(xùn) 青島軟件測試培訓(xùn) 寧波軟件測試培訓(xùn) 鄭州軟件測試培訓(xùn) 西安軟件測試培訓(xùn) 廈門軟件測試培訓(xùn) 武漢軟件測試培訓(xùn) 成都軟件測試培訓(xùn) 無錫軟件測試培訓(xùn) 濟(jì)南軟件測試培訓(xùn) 昆明軟件測試培訓(xùn) 貴陽軟件測試培訓(xùn) 揚(yáng)州軟件測試培訓(xùn) 徐州軟件測試培訓(xùn) 珠海軟件測試培訓(xùn) 合肥軟件測試培訓(xùn) 長春軟件測試培訓(xùn)

深圳博為峰教育廣州博為峰教育深圳中公優(yōu)就業(yè)南京博為峰教育

申請?jiān)嚶犆~

QQ:
加盟合作:0755-83654572