軟體測試工程師應該怎樣提高自己?
大學前三年學的電氣工程,也接觸過一些C、C++,但不甚精通。大四來到惠普軟體中心實訓,學的是軟體測試,預計到培訓結束的時候,理論方面沒有問題,實踐上也有各種自動化測試工具(UFT、LoadRunner)和ALM的應用。我想問一下,想要提高自己的競爭力,除此之外應該學些什麼?比如資料庫Oracle、Python語言什麼的
謝邀請。這裡就不從幾個方面進行分析了,網上一大堆。分享一個比較長的文章來回答這個問題吧! 這裡沒有用例設計,沒有測試分析,沒有性能測試,沒有自動化,更沒有單元測試和介面測試,僅僅從測試—&>發現bug的過程中看看我們能夠走多遠!
為了更加形象的描述每個階段,我用小B的整個測試經歷來給大家分享吧(本來打算用小A的,發現上次分享如何組建一個理想測試團隊的時候就用的是小A,所以這次就用小B同學了,大家有興趣可以回復「團隊」來閱讀相關文章 )!
當然,小B剛開始也是一個測試菜鳥(我們叫測試的第一個階段吧);剛進入項目後,基本上每天的工作就是:測試用例—&>提交bug—&>回歸bug。剛開始還挺新鮮,一段時間後有天晚上突然驚醒,抓住一隻蟑螂大吼:卧槽,尼瑪這也太無聊,太沒有技術含量了吧!難道我以後的工作就是每天干這個嗎!當然,吼完後也跟其他人一樣把蟑螂弄死後繼續睡覺。
那一年,小B是23歲,不幸的是真的被他言中了,他以後很長很長的一段時間都是在干這個(直到現在);不過,幸運的是,他再也不覺得干這個是浪費青春了。不過這些都是後話,第二天上班後,小B就決心有所改變了。
當然,第二天的工作依然是重複昨天的故事,不過小B在這個過程中發現了一個問題:每次提交bug後開發還要跟自己確認環境,甚至再給開發演示一遍。這樣經常被打斷,效率也太低了,特別是自己也不太確認bug是怎麼出來的時候。難怪以前經常任務完不成要加班的。
如果每次提交bug後,開發都能不用來找自己該多好啊?為了這個目標:小B開始進入了第二個階段。過程就是每次發現一個bug都去想如何提交上去後就讓開發不再找自己了。為了達到這個目標:小B做了如下事情(具體細節就不講了);
1、熟悉對應功能的需求,因為經常有些問題自己也不確認是不是問題。熟悉了需求,了解了為什麼需要這個功能,給客戶帶來的價值是什麼。
2、看研發的設計文檔,學習裡面的業務邏輯,這樣發現一個bug後就能過大概判斷是怎樣產生的,然後也能夠更快的復現以及必現這個bug。
這個階段經歷了1年多的時間,而且也經歷了很多痛苦的過程,比如:因為需要學習和自己嘗試去排查問題,導致很多非必現的bug最後重現不出來了,還因此被老大說了幾次;另外就是因為文檔看不懂去厚著臉皮找開發被鄙視和拒絕了很多次(作為一個有自尊的人心裡還是很難受的);還有就是加班比以前更多了。
不過,付出終有回報。一年後,基本上80%的bug開發都不再找自己 了,更重要的是得到了開發的認可,這個開發的認可應該是一年來得到的最大收穫吧。因為得到開發的認可後,感覺後面整個測試工作都非常輕鬆了,開發也願意配合。
人總是貪婪的,在嘗到甜頭後,總是想得到更多,小B也不例外(請小B原諒我這樣說你);於是,小B想是不是可以做的更多一點呢?要是能自己去排查和定位問題原因的話,應該更爽吧!而且前面學習了一些業務知識後,對於產品也有了一定的理解。為了達成這個目標,小B又做了如下事情(細節同上不講):
1、自己發現的每個問題都嘗試去定位,並且對自己的定位過程全部記錄下來。定位不下去了再去找對應的開發(已經有了上面的一些排查和重現問題的基礎),開發也很樂意(因為節省了開發定位問題的時間)。一邊看著開發定位,一邊跟開發去請教(虛心的請教大部分開發也是很樂意賜教的 )。然後將開發的定位過程同時記錄下來,等開發確認原因後。再跑過去跟開發一起回顧下整個定位過程,看看自己因為缺失什麼技能而沒有定位出來。
2、缺失的技能就主動去學習,其實無非就是對業務更加熟悉,然後掌握對應開發的一些調試方法。同時也跟著開發一起去看代碼(慶幸的是測試能夠去看開發的代碼,以及跟開發的關係搞好了)。
3、下次碰到類似的問題就將以前總結的一些方法用上;
4、定期的梳理和總結自己的定位問題方法,形成自己的一套完善的定位問題過程,並且增加熟練度。
這個階段又經歷了一年多,過程同樣的痛苦的,很多次想要放棄,特別是需要自己去硬著頭皮看代碼還看不懂的時候。而且時間花費的比以前更多了。堅持下來後,結果自然還是不錯了。30%的bug自己能直接告訴開發大概是那塊出問題了,比如:某個地方的返回沒有判斷,內存沒有釋放等等一些基本的問題。當然,萬事開頭難,經過一年多後自己至少養成了自己去定位問題的習慣,而且在不斷的進步中(這個算是經歷的第三個階段吧)。
能自己定位一些問題,這些已經開始讓團隊的其他人員開始羨慕了,內心自然也開始膨脹,人性的貪婪也再次在這裡體現出來,小B居然開始想去自己修復bug。這是不是越界了?不過既然是他自己的選擇,我們暫且不去關注有沒有必要,一起看看小B接下來又幹了什麼事情吧!
1、深入學習開發的語言,並且用該語言寫一些小的測試工具來提高測試效率,通過具體的任務來學習編碼知識。
2、學習整個設計架構,並且嘗試用自己的理解對整個架構進行分析。
3、去分析和審核開發對應修改的代碼,並且試圖找出開發修改不合理的地方。
4、對於自己定位出來的bug,自己去主動給一些修復的建議,並且最後看看開發修改bug的思路跟自己的差別是什麼?
5、自己在另外的地方去寫fix的代碼,然後跟開發進行對比,不斷的找差距。
這個過程經歷了差不多兩年的時間,過程的艱辛估計只有小B自己知道(他沒有說,小編也沒有問),感興趣的同學可以自己去體驗下。不過總算是小有所成,小B自己也親自fix了5個bug(直接將自己修改後的代碼發給開發),其中只有1個bug是修改的有問題的(我們將這個階段稱為第四個階段)。
好吧,到現在為止,差不多整整過了五年的時間。小B也從一個熱血青年變成了一個快奔三的人了。也從當時的測試新手變成了目前測試團隊的大牛之一。因為對於團隊的重要性,工資待遇方面也有了很大的提高。
按照道理來說,小B應該很滿足了,畢竟自己也被其他人當成大牛來膜拜了,雖然自己的大部分工作依然是測試用例(不同是用例都是自己分析和設計的)—&> 發現bug—&>定位bug—&>回歸bug(有時候自己也去fix一個bug,不過這部分不是自己的主要工作)。人性的貪婪再次在這裡表現的淋漓盡致,小B下一步打算去幫助開發一起去做缺陷預防,比如:提取一些共性的問題,然後思考如何去避免和及時的發現這樣的問題。
後面結果如何,大家點贊吧!
可以再從以下幾個方面做突破(這裡說的是web測試):1、資料庫方面2、網路知識:協議,安全方面3、瀏覽器內核4、系統知識,linux,unix5、代碼編寫能力,主要是為測試工具的使用,腳本的維護,代碼的分析,BUG的定位都有很好的幫助。
你的基礎已經比大多數同期畢業的學生強了,你又有學習的熱情,值得肯定.
至於如何提高,你要知道,測試的價值是跟你要測試的產品強關聯的,所以我建議你短期儘快熟悉業務,你有實習就接觸業務的先發優勢,如果你能深入的學習一下業務知識,半年內你絕對能讓你的領導另眼相看。
你在公司佔住腳了,得考慮長期發展了,HP強大的資源,良好的工作習慣可以幫你高效的進步,這時要考慮你要走業務為主還是技術為主,注意,業務為主指你學跟項目有關的技術,但這個技術本身在業界有可能已經處於衰退期,但公司產品現在,將來可能都不會拋棄.技術為主是未來5到10年有可能會井噴式爆發的,現在大多數人又看好的,但公司可能永遠不會先用的技術.
剩下的就交給時間吧,5年後,你要麼被牛逼公司高薪請走,要麼還在HP養老,這個時候你就可以鑒別你的選擇到底對不對了.
最後提醒下,不要被安逸的環境,特別是看起來像work life banlance,實際上是only life matters 磨滅你對成功的渴望,你知道我在說什麼 lol好文章
剛買了兩本書《移動APP測試實踐》
《wireshark網路分析的藝術》
點個贊
1、要懂軟體測試的基礎知識,編寫測試用例、常用的測試方法...2、懂得現公司開發所用的一些基礎知識,起碼要能搭建測試環境3、自動化,比如現在比較流行的selenium,可以配合python或JAVA,最主要的還要知道自動化的理論,為何要自動化、自動化用例的設計4、性能,這個涉及的東西就太多了,我就不說了,也說不好5、我個人覺得測試人員要具備的,質量管理的知識,CMMI,敏捷開發,敏捷測試...
python可以學一下這兩年好火的
做開發
轉行做開發。
推薦閱讀:
※面試軟體測試工程師時,問你對這個桌子怎麼測試?
※對於零基礎想學習web前端和軟體測試那個更容易上手?
※金融測試行業快速入門,具體應該怎麼做?
※作為軟體測試人,所在公司部門只有功能手動測試,如何進一步提升自己?
※面試軟體測試工作,如何回答:為什麼要從事軟體測試行業?你覺得你會什麼?