gtest 测试部分_全部关于测试–第1部分
gtest 測試部分
這是三個系列文章中的第一篇。
心態(tài)
測試代碼是需要學(xué)習(xí)的東西。 吸收如何做好需要花費(fèi)時間。 這是一種應(yīng)該始終練習(xí)和改進(jìn)的技巧。
過去,開發(fā)人員沒有進(jìn)行測試,而是檢查了他們的代碼。 這是一個很好的技巧:
檢查:代碼執(zhí)行編碼人員打算執(zhí)行的操作。 測試:代碼可以執(zhí)行客戶所需的工作。 # 敏捷 #tdd #bdd
—尼爾·基里克(@neil_killick) 2014年11月7日
今天,我們有許多工具和技術(shù)可以使用。 XUnit框架,模擬框架,UI自動化,TDD,XP…
但我相信測試始于頭腦。 心態(tài)。
為什么要測試
我真的應(yīng)該回答嗎?
測試是您的代碼工具和質(zhì)量保證。 測試說明了代碼的故事。 他們證明某事有效。 如果出現(xiàn)問題,他們會立即提供反饋。 正確使用測試可以使您更加高效。 您調(diào)試的次數(shù)更少,并且可能的bug更少,因此您有更多的時間進(jìn)行實(shí)際工作。 您的設(shè)計將更好(以后會更多)并易于維護(hù)。 您有信心更改代碼(重構(gòu))。 稍后會更多。 隨著您對代碼更加自信, 它可以減輕壓力 。
測試什么
我什么都說。 也許您會跳過系統(tǒng)的最底層。 讀取/寫入文件系統(tǒng)或DB或傳達(dá)某些外部服務(wù)的部分。 但是,即使這些零件也可以測試。 他們應(yīng)該。 在下面的博客中,我將介紹一些技巧。
測試最小的東西。 例如,如果您有一個DTO,并且您決定將某個字段初始化為某個值,那么進(jìn)行一個僅實(shí)例化該類然后驗證(確認(rèn))期望值的測試(是的,我知道,某些部分確實(shí)無法測試,但應(yīng)保持最小)。
建議零售價
單一責(zé)任原則。 這就是我喜歡提到測試需要檢查一件事的觀點(diǎn)。 如果是單元測試,則應(yīng)該測試方法/類的一種行為。 應(yīng)該在不同的測試中測試不同的行為。 如果是更高級別的測試(集成,功能,UI),則適用相同的原則。 測試系統(tǒng)的一個流程。 測試點(diǎn)擊。 測試將元素正確添加到數(shù)據(jù)庫,但不能在同一測試中刪除。
隔離
隔離測試可以幫助我們準(zhǔn)確了解出了什么問題。 開發(fā)獨(dú)立的測試有助于我們一次專注于一個問題。
隔離的一方面與SRP有關(guān)。 測試某些東西時,請將測試的代碼與其他部分(依賴項)隔離開。 這樣,你測試代碼的那一部分。 如果測試失敗,那么您知道是。 如果您在測試中有很多依賴關(guān)系,那么很難弄清實(shí)際的失敗原因是什么。
但是隔離也意味著其他事情。 這意味著沒有測試會干擾其他測試。 這意味著測試的運(yùn)行順序無關(guān)緊要。 對于單元測試,這意味著您不需要運(yùn)行數(shù)據(jù)庫(或與此相關(guān)的Internet連接)。 這意味著您可以同時運(yùn)行測試,而不會互相干擾(maven完全可以做到這一點(diǎn))。 如果您做不到(例如:數(shù)據(jù)庫問題),那么您的測試就不會孤立。
測試氣味
如果測試難以理解/難以維護(hù),請不要生氣! 說:
親愛的測試人員,非常感謝您幫助我改善代碼
如果為測試設(shè)置環(huán)境太復(fù)雜,則可能是所測試的單元具有過多的依賴性。
如果在運(yùn)行被測方法之后,您需要驗證許多方面(驗證,斷言等),則該方法可能做得太多。 該測試可以成為您改善代碼的最好朋友 。
通常,真正復(fù)雜的測試代碼意味著結(jié)構(gòu)化的生產(chǎn)代碼更少。 我通常會看到復(fù)雜的測試與不遵循SRP或任何其他DOLID原理的代碼之間的相關(guān)性。
可測試的代碼
這是我的最愛之一。 每當(dāng)我進(jìn)行代碼審查時,我都會問對方:“您將如何對其進(jìn)行測試?”,“您如何知道它的工作原理?” 每當(dāng)我編寫代碼時,我都會問自己同樣的問題。 “我如何測試這段代碼?”
以我的經(jīng)驗,始終思考如何創(chuàng)建可測試的代碼會產(chǎn)生更好的設(shè)計。 該代碼“神奇地”具有更多的模式,更少的重復(fù),更好的OOD且行為穩(wěn)定 。
強(qiáng)迫自己不斷測試代碼,會讓您思考。 它有助于將大而復(fù)雜的問題分解為許多(或很少)較小,更瑣碎的問題。
如果您的代碼是可測試的且經(jīng)過測試,則您對此更有信心。 對行為充滿信心,并有信心改變它。 重構(gòu)它。
重構(gòu)
這個項目可以是為什么的一部分。 它也可以是技術(shù)的一部分。 但是我決定特別注意它。 重構(gòu)是TDD周期的一部分(但不僅如此)。 當(dāng)您進(jìn)行測試時,您可以確信進(jìn)行重構(gòu)。 我認(rèn)為您在開發(fā)時需要“考慮重構(gòu)”。 類似于“思考如何生成可測試的代碼”。 在考慮重構(gòu)時 ,會進(jìn)行測試。
重構(gòu)也是一種心態(tài)。 問問自己:“我產(chǎn)生的代碼是否足夠干凈? 我可以改善嗎?” (順便說一句,知道什么時候停止…)
這是有關(guān)測試的一系列文章中的第一篇。 以下文章將介紹一些測試技術(shù)和方法。
翻譯自: https://www.javacodegeeks.com/2014/11/its-all-about-tests-part-1.html
gtest 測試部分
總結(jié)
以上是生活随笔為你收集整理的gtest 测试部分_全部关于测试–第1部分的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑最高配置多少?
- 下一篇: drools。drools_使用Droo