為什么開發(fā)與測試?yán)掀苣?/a>
讓我們思考幾個常見的問題:
軟件測試的目的是什么?
開發(fā)人員能否構(gòu)建出沒有Bug的完美軟件?
測人人員和開發(fā)人員是什么關(guān)系?
軟件測試能否保證軟件質(zhì)量?
先閉目冥想五分鐘吧,然后可以嘗試著回答上面的問題。
計算機(jī)先驅(qū) Maurice Wikes 回憶起 1949 年他在英國劍橋工作的情形,在拖著打孔紙帶上樓給雛形計算機(jī) EDASC 裝載程序時,他看到了自己的未來:
我強(qiáng)烈的意識到,生命中剩下的好日子,都將耗費(fèi)在給自己的程序找錯誤上頭。
Maurice Wikes告訴我們,沒有完美的軟件。
我曾經(jīng)寫過一篇薦書文,推薦了溫伯格技術(shù)思想三部曲中的《顛覆完美軟件:軟件測試必須知道的幾件事》。在這本書里,溫伯格也告訴我們,沒有完美的軟件。所有的開發(fā)和測試人員都應(yīng)該讀讀那本書。
溫伯格在《顛覆完美軟件》中幾乎討論所有常見的與軟件測試相關(guān)的概念、問題和指導(dǎo)思想,所以,在這篇文章里,我只能來吐槽啦,我將從以下幾方面列一些常見的現(xiàn)象,希望能引起大家的思考。
測試和開發(fā)的關(guān)系
流程與標(biāo)準(zhǔn)
資源
態(tài)度
測試和開發(fā)的關(guān)系
測試和開發(fā)是對立的嗎?
從處理Bug的角度看,似乎可以這么說。開發(fā)人員既生產(chǎn)代碼,也生產(chǎn)Bug。因為開發(fā)人員不可避免地會生產(chǎn)Bug,所以測試人員必須存在,以便在軟件交付之前盡可能多地檢出Bug,保證交付給客戶的軟件質(zhì)量更好一些。一個產(chǎn)Bug,一個挑Bug,看起來似乎是對立的。
在現(xiàn)實中,很多測試團(tuán)隊和開發(fā)團(tuán)隊也正是因為這一點而搞得關(guān)系不和,甚至真的對立起來。請回想一下你周圍發(fā)生的與開發(fā)和測試相關(guān)的事兒,看看有沒有遇到過下面的情景:
開發(fā)說,測試凈找麻煩,客戶跟本不可能像他們那樣使用軟件
測試說,問題總是會在看似極端的條件下產(chǎn)生,用戶總是會不經(jīng)意觸碰到看似極端的不可能出現(xiàn)的條件
開發(fā)說,測試花在異常情況下的精力比測試主流程還多,不知道輕重緩急
測試說,開發(fā)從來不考慮測試的感受,連測都不測就扔給我們
開發(fā)說,我都測了,還要測試人員干什么
測試說,這么明顯的問題你們都不測一下,把我們測試當(dāng)垃圾桶啊
……
許許多多類似的問題,讓開發(fā)和測試的關(guān)系從撲朔迷離、相愛相殺走向?qū)αⅰN乙娺^開發(fā)和測試搞冷戰(zhàn)某人遇見某人側(cè)臉而過,也見過測試經(jīng)理和開發(fā)經(jīng)理打架,還見過高層領(lǐng)導(dǎo)故意讓測試團(tuán)隊和開發(fā)團(tuán)隊關(guān)系緊張以為這樣可以提高測試效率也能給開發(fā)壓力最終會產(chǎn)出更高質(zhì)量的軟件……
實際上,測試和開發(fā)擁有同一個目的:讓軟件更完美。測試和開發(fā)的關(guān)系,是一個問題的兩面,應(yīng)該是相輔相成和平共處的。測試不是為了挑刺兒,他提出的問題也不針對生產(chǎn)軟件的開發(fā)人員,而僅僅是在努力想讓開發(fā)人員的產(chǎn)出物看起來更好用。只要開發(fā)不將測試提Bug這個行為看成針對個人的行為,一切就有了美好的前提。
否定軟件,并不是否定開發(fā)軟件的人。這是開發(fā)和測試都需要明確的一個原則和前提。
還有的人認(rèn)為開發(fā)和測試之關(guān)系類似皮與毛,皮之不存毛將焉附?所以有的開發(fā)也會因此而有優(yōu)越感:沒我們寫軟件,你們測試早下崗了!可是,開發(fā)不寫軟件,開發(fā)也下崗了耶!
感謝開發(fā)的不完美,讓測試可以有事可做并練就慧眼。
感謝測試的認(rèn)真細(xì)致和耐心體貼,讓開發(fā)可以發(fā)現(xiàn)自己的不完美并有機(jī)會提升自己——那些說我軟件不好的,都是為了我好。
資源
別動我們測試的服務(wù)器,你們自己搭一個!
我們沒環(huán)境,不用你們的用誰的?
誰把我們的測試手機(jī)拿走了?你們申請一個嘛,老來占我們設(shè)備。
誰在用我們的賬號?招呼都不打!我要用,趕緊退出來!
有時開發(fā)和測試之間也會有資源上的沖突,要有努力的有創(chuàng)造性的解決(我可以負(fù)責(zé)任地說,裝黑蘋果不是好辦法),不要讓大家伙的工作卡在環(huán)境上,這是管理者要解決的基本問題。我見過很多非常棒的一線經(jīng)理,在現(xiàn)實制約下,主動把自己的手機(jī)、iPad都貢獻(xiàn)出來當(dāng)做測試設(shè)備。這也是解決資源問題的一種辦法哦。
流程與標(biāo)準(zhǔn)
你身邊的人員會這么抱怨嗎:
開發(fā)根本不看我們的測試用例,評審郵件從來就不回復(fù)
我們一報Bug,開發(fā)就說用戶根本不可能這么用,還說不知道我們怎么會這么測
送測單里根本不寫測試范圍或者寥寥幾句跟沒寫一樣
開發(fā)調(diào)整設(shè)計從來也不告訴我們
為什么產(chǎn)品經(jīng)理和UI只和開發(fā)討論需求變更?
為什么發(fā)布計劃里不給測試預(yù)留測試時間?
為什么開發(fā)寫完代碼測都不測就扔給我們?
為什么客戶那里發(fā)現(xiàn)了問題老問是誰測的、為什么沒測出來?
測試?yán)鲜且宦暡豢跃桶袯ug優(yōu)先級設(shè)置為Major
測試總是把大量時間花在用戶根本不可能用到的功能上
測試分不清哪些什么是重點,你給他說他還老是一堆道理這了那了
測試提的Bug,現(xiàn)象描述也不準(zhǔn)確,重現(xiàn)步驟也沒有,有的根本就知道是不是誤操作
測試?yán)蟻泶驍辔遥粫航幸幌乱粫航幸幌拢緵]辦法專注開發(fā)
jira上的Bug重復(fù)率太高,一個問題提N遍,難道就不能合并一下?
測試發(fā)現(xiàn)Bug,一聲招呼都不打就直接告訴老板了,搞得我很被動
測試就是專門挑刺兒的,有勁不往正地兒使,你倒是測測用戶常用的功能啊
那么簡單的Bug都能流出到用戶那里,真不知道測試怎么測的
開發(fā)老嫌測試報告數(shù)據(jù)不漂亮,逼著我們調(diào)整
Ok,如果你身邊的開發(fā)和測試從來沒有過類似的問題,那很好,恭喜你,看來你們的團(tuán)隊人nice協(xié)作也很順暢,棒棒噠。
假如你身邊充斥著這樣嘈雜的抱怨,那說明什么呢?開發(fā)、測試、發(fā)布這一套流程有問題?還是團(tuán)隊缺乏明確的指向來引導(dǎo)大家向積極、有效的行為靠近?
流程和標(biāo)準(zhǔn)總是有待解釋的,再好的規(guī)則,歪嘴和尚也能把它念斜……
我們隨便挑一個問題吧:為什么開發(fā)寫完代碼測都不測就扔給我們?這個問題普遍存在,它反映出的是程序員和測試人員的工作邊界難以界定的矛盾。
程序員會說,我都測一遍,還要你們測試做什么?
測試會說,你測都不測,冒煙都過不了,有沒有責(zé)任心?
程序員說,要我寫測試用例,搭各種環(huán)境,遍歷各種正常、異常邏輯,我還有沒有時間寫代碼了?
測試會說,我們測試是垃圾桶嗎,什么爛玩意兒都直接扔給我們,我們的時間就那么不值錢?
開發(fā)會說,測試本來就是干這個的,你不測誰測?
……
像這樣的問題,能制定一個標(biāo)準(zhǔn),說明什么樣的邏輯開發(fā)要自測覆蓋什么樣的邏輯可以交給測試來測?能畫一條三八線嗎?
不能。所以,這個時候,靠譜的一線管理者就顯得很重要。如何創(chuàng)造性的發(fā)現(xiàn)適合團(tuán)隊的方法來讓大家順暢地協(xié)同工作,比標(biāo)準(zhǔn)、制度更重要,這往往依賴于技術(shù)管理者的能力和團(tuán)隊成員的意識。沒有普適的方法,只有適合這個組織的、此時此地的策略,加油吧,在戰(zhàn)斗中摸索出最適合當(dāng)下的道路。
那什么是靠譜的一線管理者呢?
溫伯格《成為技術(shù)領(lǐng)導(dǎo)者》一書中對領(lǐng)導(dǎo)職責(zé)的定義如下:
領(lǐng)導(dǎo)的職責(zé)就是創(chuàng)造這樣一個環(huán)境,每個人都能在其中發(fā)揮出更多的能力。
如果一個技術(shù)領(lǐng)導(dǎo)帶領(lǐng)的團(tuán)隊,大部分人都能專心做與其能力適配的事情而不用整天泡在與本節(jié)前面所列類似的問題里,那他基本上就算是比較靠譜了。
至于像給測試預(yù)留多長的測試周期、調(diào)整設(shè)計要不要通知測試、需求調(diào)整要不要測試參與等問題,合理的流程和標(biāo)準(zhǔn)可以起到很大的輔助作用,技術(shù)領(lǐng)導(dǎo)者只要依據(jù)合理的制度,引導(dǎo)大家有效參與,就可以化解。
態(tài)度
場景一:
測試MM對阿猿說發(fā)現(xiàn)了一個Bug。 阿猿矢口否認(rèn):不可能,絕對不可能! MM:真的有Bug,你過來看一下! 阿猿:我都不用看,在我這兒好好兒的。 MM:你來看一下嘛…… 阿猿:看什么看,肯定你環(huán)境問題,動什么東西了嗎?重啟了嗎?
場景二:
測試MM想在jira上提個Bug,先在QQ上對阿猿說:有個Bug,你過來看下? 阿猿:忙著呢,焦頭爛額的。 MM:一分鐘都用不了,你來看下吧。 阿猿:思路一打斷就不好恢復(fù)了,等會兒! MM:你不看我提到j(luò)ira上了啊。 阿猿:隨便,你不就是愛提Bug嘛。
場景三:
測試MM呼叫阿猿:阿猿阿猿,程序又崩潰了,快來看看! 阿猿慢騰騰地起身過來,鼠標(biāo)點幾下:看不出來什么問題,你怎么操作的? MM:這樣點一下,那樣,這樣,……回車……。 阿猿:重現(xiàn)不了啊,你想辦法重現(xiàn),重現(xiàn)了再叫我,我忙著呢。 MM:……
我曾經(jīng)畫過一張暴漫,以“她發(fā)現(xiàn)了一個Bug”為題發(fā)布在微信訂閱號“程序視界”里,再現(xiàn)類似的場景,感興趣的可以在訂閱號內(nèi)回復(fù)10019查看(點擊訂閱號底部的幫助菜單里的“所有文章”子菜單也能找到)。
開發(fā)和測試的日常工作中,上面的情景不斷上演,這其中有一部分原因來自態(tài)度。我們有時還能聽到類似下面的話:
你Bug里的現(xiàn)象描述根本沒用
你根本就沒理解這個邏輯,給你說不清楚
測試什么都不懂……
你聽我的,我讓你怎么測你就怎么測
你這種測法兒,再好的軟件都經(jīng)不起你折騰
用戶根本不可能這樣用,你們整來整去凈瞎耽誤工夫
一輪都沒測完,你們就給老板說可以按期交付沒問題?
你們安排計劃時根本不考慮測試,三天,三天怎么可能測得完!
……
有時,有一些開發(fā)人員會用技術(shù)優(yōu)勢藐視測試,認(rèn)為測試工作技術(shù)含量低,內(nèi)心認(rèn)為測試是附屬沒地位,說話就不太客氣……測試會感覺到,反過來也會對開發(fā)有意見……就這么,從相敬如賓開始走向嫌怨叢生……
有個朋友的QQ簽名檔是:沒有自我,只有大道。我琢磨,放在軟件項目里,也挺適用的。
其實,開發(fā)和測試擁有共同的目的:生產(chǎn)高質(zhì)量軟件。具體說,每一個產(chǎn)品、項目、版本都有明確的目標(biāo),這些目標(biāo)是屬于開發(fā)和測試的,是大家的。我們把共同的目標(biāo)牢記在心,擺在首位,我們還要想著別人所做的一切,都是針對軟件本身,都是在為目標(biāo)而努力,這樣就心平氣和多了,就容易從當(dāng)下的泥沼中超脫出來,求同存異共同前進(jìn)。
作者:foruok 微信訂閱號“程序視界”(programmer_sight)
原文:CSDN
posted on 2016-04-12 11:01 paulwong 閱讀(517) 評論(0) 編輯 收藏 所屬分類: Project Management 、性能測試