qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          如何激勵同事編寫單元測試?

            從管理人員到開發(fā)者,每個人都在說單元測試,但是卻很少有人執(zhí)行。有關(guān)單元測試的好處相信大家也能例舉出一二,但很多時候,開發(fā)者面對自己的項目代碼卻無從下手。

            Lurkerbelow在公司里是唯一執(zhí)行單元測試的一名開發(fā)者,他深知單元測試帶來的好處,也積極提倡單元測試。他甚至與公司的管理層人員、開發(fā)者都討論過單元測試,但卻無人對此感興趣。 為了與開發(fā)人員形成一條戰(zhàn)線,Lurkerbelow甚至“被迫“提交了代碼審查(Gerrit)和持續(xù)集成開發(fā)(Jenkins)。

            無奈之下,Lurkerbelow在 Stack Exchange發(fā)出上“求救”,拋出《“如何激勵同事進行單元測試?》的話題,引發(fā)了眾多開發(fā)者的關(guān)注,紛紛獻策。

            對此,我們從中摘譯了幾個較為重要的觀點與大家分享,希望能引起大家的共鳴。

            實質(zhì)的文檔或許有幫助

            jimmy_keen:我注意到幾乎很少有公司在談?wù)揟DD。人們更樂意看到最終結(jié)果。人人都說“編寫單元測試將縮短開發(fā)時間”,這是似乎是真的,但這并不足以讓人們相信。

            我與你處在相同的位置(但不像你這么糟糕),開發(fā)者在代碼問題上都能夠自行解決(這里的代碼是指單元測試)。某個項目停止更新時,本地的調(diào)查自然就會更進,進而找出問題所在。

            然后,當我們進行單元測試時,如果測試被通過了,大多數(shù)問題會出現(xiàn)在最新的、未測試的代碼中。如果不是,測試通常能夠發(fā)現(xiàn)問題(至少找出了正確的方向)。我們修復(fù)Bug,再進行測試。

            一句話,如果發(fā)生類似這樣的情況,將會有超過2名開發(fā)者變成可TDD 測試愛好者(我們希望更多人參與)。

            建議,你可以選擇TDDkata將使用測試作為首選方法。

            根據(jù)任務(wù)的復(fù)雜程度,非測試方法進程通常較為緩慢,尤其是當增量編碼器需求發(fā)生更改時。

            ● Roy's string calculator

            ● Bank OCR

            找出問題所在,“對癥下藥”

            HLGEM:首先,要弄清楚為什么他們不喜歡寫單元測試。 通常嚴格的時間進程表是導(dǎo)致其最大的原因。

            其次,現(xiàn)有的大型未測試的代碼基,編寫單元測試工作量巨大。因此,開發(fā)者本能認為:“這太麻煩了,我得跳過去。”

            另一個原因可能是,他們骨子里認為測試是個好方法,但他們在如何寫測試上沒有信心,尤其是他們從未接觸過。究其根本原因,是開發(fā)者根本不會寫單元測試!

          還有一大原因是,他們沒有看到這項額外的工作所帶來的好處(利潤)故放棄,即便是他們想提供這樣的服務(wù)。

            那么,對于以上這些情況該如何處理呢?

            Reason 1:向開發(fā)者展示案例,如何節(jié)省開發(fā)時間。

            Reason 2:告訴開發(fā)者在一年內(nèi)能編寫多少測試,代碼基覆蓋了多少比例。

            算算這一年里他們寫了多少測試,明年他們依然愿意這么做。一旦他們發(fā)覺每天都會進步一點點,思想上就會潛移默化了,從而產(chǎn)生質(zhì)的變化。

            如果可以的話,把系統(tǒng)數(shù)據(jù)拉出來,讓他們知道在未經(jīng)測試的代碼中有多少重復(fù)Bug?進行單元測試的代碼中又有多少重復(fù)bug?

            Reason 3:培訓(xùn),讓開發(fā)者在培訓(xùn)班中編寫測試。

            Reason 4:這是問題的關(guān)鍵所在,首先,選擇一個痛點,比如在某個項目中這些Bug被多次返回。在上述過程中,向管理部門提出建議,如果他們在這個項目中進行單元測試,那就不會出現(xiàn)不想見而又偏又見到的代碼。

            當然,作為開發(fā)人員,我們首先要學會自我管理。

            寫好單元測試,學會重構(gòu)很重要

            ElYusubov:我想先說說TDD的好處。

            從正常人類的角度思考,開發(fā)者都是以利益為主,因為他們不想進行工作意外的事情。單元測試意味著更少的工作;意味著與朋友相處的時間更多;意味著有更多的樂趣,因為你無須每個夜晚編碼工作到11點;也就意味著可以舒心的度過假期。

            想要寫好單元測試,學會重構(gòu)是很重要的。這里補充幾點:

            1、編寫測試代碼建立基本的防護網(wǎng);

            2、在單元測試和功能測試之間要有取舍,如果單元測試實施成本很高,可以先加功能測試;

            3、通過增加中間層來打破依賴,不是為了去掉依賴,而是為了后續(xù)的修改以及測試的便利;

            4、將第一步中編寫的功能測試換成單元測試。

            TDD最大的好處之一是,你可以重構(gòu)程序獲得更好的設(shè)計或者只需改變某個項目的名稱……只要這種設(shè)計沒有破壞測試,前提是你有100%的信心保證你的改變沒有破壞任何東西。

            TDD為遺留代碼創(chuàng)建單元測試,這將出現(xiàn)重構(gòu)。從長遠的來說,這將有有助于改善你的代碼基礎(chǔ)知識,了解其優(yōu)缺點以及代碼中現(xiàn)有的的硬編碼業(yè)務(wù)模塊,為你提供一個良好的開端,為提高產(chǎn)品質(zhì)量向前邁進。

          posted on 2013-03-20 10:32 順其自然EVO 閱讀(258) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2013年3月>
          242526272812
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 云南省| 军事| 丰台区| 十堰市| 永定县| 思南县| 曲靖市| 西盟| 南昌县| 水富县| 枣强县| 南投市| 伊吾县| 凌源市| 泰来县| 三河市| 盐源县| 南丰县| 兴隆县| 纳雍县| 扶余县| 尼玛县| 桑日县| 榆树市| 叙永县| 云和县| 名山县| 固安县| 大悟县| 湟源县| 长春市| 宁化县| 增城市| 志丹县| 应用必备| 潜江市| 鄂尔多斯市| 曲水县| 环江| 石林| 昭苏县|