今天看到一篇有點意思的文章,講的是僅僅從測試—>發(fā)現(xiàn)bug的過程中看看我們測試能夠走多遠!原文鏈接找不到了,特轉(zhuǎn)述給大家。
文中為了更加形象的描述每個階段,用小B的整個測試經(jīng)歷來講述。
當然,小B剛開始也是一個測試菜鳥。剛進入項目后,基本上每天的工作就是:測試用例—>提交bug—>回歸bug。開始還挺新鮮,一段時間后有天晚上突然驚醒,抓住一只蟑螂大吼:臥槽,尼瑪這也太無聊,太沒有技術含量了吧!難道我以后的工作就是每天干這個嗎!當然,吼完后也跟其他人一樣把蟑螂弄死后繼續(xù)睡覺。
那一年,小B是23歲,不幸的是真的被他言中了,他以后很長很長的一段時間都是在干這個(直到現(xiàn)在)。不過,幸運的是,他再也不覺得干這個是浪費青春了。不過這些都是后話,第二天上班后,小B就決心有所改變了。
當然,第二天的工作依然是重復昨天的故事,不過小B在這個過程中發(fā)現(xiàn)了一個問題:每次提交bug后開發(fā)還要跟自己確認環(huán)境,甚至再給開發(fā)演示一遍。這樣經(jīng)常被打斷,效率也太低了,特別是自己也不太確認bug是怎么出來的時候。難怪以前經(jīng)常任務完不成要加班的。
如果每次提交bug后,開發(fā)都能不用來找自己該多好啊?為了這個目標:小B開始進入了第二個階段。過程就是每次發(fā)現(xiàn)一個bug都去想如何提交上去后就讓開發(fā)不再找自己了。
為了達到這個目標:小B做了如下事情(具體細節(jié)就不講了);
1、熟悉對應功能的需求,因為經(jīng)常有些問題自己也不確認是不是問題。熟悉了需求,了解了為什么需要這個功能,給客戶帶來的價值是什么。
2、看研發(fā)的設計文檔,學習里面的業(yè)務邏輯,這樣發(fā)現(xiàn)一個bug后就能過大概判斷是怎樣產(chǎn)生的,然后也能夠更快的復現(xiàn)以及必現(xiàn)這個bug。
這個階段經(jīng)歷了1年多的時間,而且也經(jīng)歷了很多痛苦的過程,比如:因為需要學習和自己嘗試去排查問題,導致很多非必現(xiàn)的bug最后重現(xiàn)不出來了,還因此被老大說了幾次;另外就是因為文檔看不懂去厚著臉皮找開發(fā)被鄙視和拒絕了很多次(作為一個有自尊的人心里還是很難受的);還有就是加班比以前更多了。
不過,付出終有回報。一年后,基本上80%的bug開發(fā)都不再找自己 了,更重要的是得到了開發(fā)的認可,這個開發(fā)的認可應該是一年來得到的最大收獲吧。因為得到開發(fā)的認可后,感覺后面整個測試工作都非常輕松了,開發(fā)也愿意配合。
人總是貪婪的,在嘗到甜頭后,總是想得到更多,小B也不例外(請小B原諒我這樣說你);于是,小B想是不是可以做的更多一點呢?要是能自己去排查和定位問題原因的話,應該更爽吧!而且前面學習了一些業(yè)務知識后,對于產(chǎn)品也有了一定的理解。為了達成這個目標,小B又做了如下事情(細節(jié)同上不講):
1、自己發(fā)現(xiàn)的每個問題都嘗試去定位,并且對自己的定位過程全部記錄下來。定位不下去了再去找對應的開發(fā)(已經(jīng)有了上面的一些排查和重現(xiàn)問題的基礎),開發(fā)也很樂意(因為節(jié)省了開發(fā)定位問題的時間)。一邊看著開發(fā)定位,一邊跟開發(fā)去請教(虛心的請教大部分開發(fā)也是很樂意賜教的 )。然后將開發(fā)的定位過程同時記錄下來,等開發(fā)確認原因后。再跑過去跟開發(fā)一起回顧下整個定位過程,看看自己因為缺失什么技能而沒有定位出來。
2、缺失的技能就主動去學習,其實無非就是對業(yè)務更加熟悉,然后掌握對應開發(fā)的一些調(diào)試方法。同時也跟著開發(fā)一起去看代碼(慶幸的是測試能夠去看開發(fā)的代碼,以及跟開發(fā)的關系搞好了)。
3、下次碰到類似的問題就將以前總結的一些方法用上;
4、定期的梳理和總結自己的定位問題方法,形成自己的一套完善的定位問題過程,并且增加熟練度。
這個階段又經(jīng)歷了一年多,過程同樣的痛苦的,很多次想要放棄,特別是需要自己去硬著頭皮看代碼還看不懂的時候。而且時間花費的比以前更多了。堅持下來后,結果自然還是不錯了。30%的bug自己能直接告訴開發(fā)大概是那塊出問題了,比如:某個地方的返回沒有判斷,內(nèi)存沒有釋放等等一些基本的問題。當然,萬事開頭難,經(jīng)過一年多后自己至少養(yǎng)成了自己去定位問題的習慣,而且在不斷的進步中(這個算是經(jīng)歷的第三個階段吧)。
能自己定位一些問題,這些已經(jīng)開始讓團隊的其他人員開始羨慕了,內(nèi)心自然也開始膨脹,人性的貪婪也再次在這里體現(xiàn)出來,小B居然開始想去自己修復bug。這是不是越界了?不過既然是他自己的選擇,我們暫且不去關注有沒有必要,一起看看小B接下來又干了什么事情吧!
1、深入學習開發(fā)的語言,并且用該語言寫一些小的測試工具來提高測試效率,通過具體的任務來學習編碼知識。
2、學習整個設計架構,并且嘗試用自己的理解對整個架構進行分析。
3、去分析和審核開發(fā)對應修改的代碼,并且試圖找出開發(fā)修改不合理的地方。
4、對于自己定位出來的bug,自己去主動給一些修復的建議,并且最后看看開發(fā)修改bug的思路跟自己的差別是什么?
5、自己在另外的地方去寫fix的代碼,然后跟開發(fā)進行對比,不斷的找差距。
這個過程經(jīng)歷了差不多兩年的時間,過程的艱辛估計只有小B自己知道,感興趣的同學可以自己去體驗下。不過總算是小有所成,小B自己也親自fix了5個bug(直接將自己修改后的代碼發(fā)給開發(fā)),其中只有1個bug是修改的有問題的(我們將這個階段稱為第四個階段)。
好吧,到現(xiàn)在為止,差不多整整過了五年的時間。小B也從一個熱血青年變成了一個快奔三的人了。也從當時的測試新手變成了目前測試團隊的大牛之一。因為對于團隊的重要性,工資待遇方面也有了很大的提高。
按照道理來說,小B應該很滿足了,畢竟自己也被其他人當成大牛來膜拜了,雖然自己的大部分工作依然是測試用例(不同是用例都是自己分析和設計的)—> 發(fā)現(xiàn)bug—>定位bug—>回歸bug(有時候自己也去fix一個bug,不過這部分不是自己的主要工作)。人性的貪婪再次在這里表現(xiàn)的淋漓盡致,小B下一步打算去幫助開發(fā)一起去做缺陷預防,比如:提取一些共性的問題,然后思考如何去避免和及時的發(fā)現(xiàn)這樣的問題。
原文就講到這里,我總結一下小b的經(jīng)歷,前后大概4個階段。
第一階段:菜鳥階段
測試用例—提交bug—回歸bug,甚至提的bug還要和開發(fā)進一步進行確認。
第二階段:定位問題階段
這里不單單的能夠找到bug,還能定位bug到代碼層面。
第三階段:fix bug
這個就厲害了,能夠修復代碼中的邏輯缺陷。
第四階段:缺陷預防
這個更厲害了,能夠用豐富的測試經(jīng)驗以及對bug的敏感性來定制方案,從而避免某一類或者某些通用性的bug產(chǎn)生??芍^將缺陷消滅在萌芽之中。
看到這兒,如果按照這個“標準”來劃分,小伙伴們到了那個階段了?