軟體測試開發工程師的發展

shbwf發表於2012-04-23

  隨著軟體測試在軟體開發週期中越來越受到重視,國內軟體測試的缺口一直比較大,各種軟體和網際網路公司都大肆招收測試工程師,有些走在前面的公司甚至從今年開始取消了測試工程師職位,全部變成了軟體測試開發職位,比如百度。一方面測試開發表明了對工程師有更高的要求,需要在具有測試能力的基礎上兼備開發能力;另一方面自動化軟體測試成為趨勢,利用開發的技巧解決測試中的問題以提高測試效率,降低QA與RD的人力比。

  1、技術含量

  面試過許多的應屆畢業生,問及為什麼選擇測試開發這個職位時,經常聽到以下的回答:

  “我覺得自己開發能力比較弱,但我比較細心,覺得測試職位比較適合。”

  “我在實驗室和實習公司呆過,做過功能測試和效能測試,我比較喜歡測試.”

  “開發只能瞭解到專案的區域性,但測試需要了解更多,我期望有更好的大局觀”

  無論人們內心真實的想法是什麼,但潛意識裡面測試的技術含量沒有開發高。在校園招聘的時候,我們會將部分倒在開發職位終面的人重新拿到測試開發面試。客觀地說,在軟體編碼方面測試開發的技術含量確實不如純正的開發職位,更不用說測試職位了。但是,我想說的是這個職位本身所要求的技術水平應該是需要超過單純的開發職位的,真正高水平的QA至少需要多年的開發經驗的,否則他無法從軟體產品設計、架構和實現方面提出實質性的意見和風險評估,充其量只是點出交付到手軟體中的幾個bug。所以基於現階段國內行情,個人建議如果希望在測試的職業生涯上有所發展的人,先參與幾年的研發工作,畢竟那才是軟體工程中的主體,然後在開發過程中培養測試意識,這也是程式設計師的職業素養。Google許多工程師都有強烈的質量意識,許多程式碼自己不經過自己的單元測試和功能測試是沒有人review的。對於投測試或者測試開發職位的目的是為了逃避開發,那麼職業道路要發展順利是很難的。

  2、基本素質

  測試開發工程在公司一般有兩種,一種是單純為測試團隊開發測試工具或者系統(由於這部分和單純開發職位本質上區別不大,討論基於另一種);另一種就是在測試過程中發揮主觀能動,利用自動化把重複勞動降至最低,比如開發適用於特定場景的測試工具(當然這種工具具有普遍性也能推廣到整個組或者公司)、測試指令碼和測試用例。

  測試開發工程師應該具備兩方面的知識:測試知識和開發知識。之所以把測試排在前面,因為這裡的開發建立在測試實踐基礎之上。其中測試知識又分為兩部分:一是理論知識,軟體行業發展至今也就幾十年,測試方面的積澱就更少了,所以要掌握這部分對於一般人來說不是難事;另外一方面是經驗知識,主要在專案測試過程中積累,很多系統的測試點、風險點都需要有豐富的經驗來評估,這也是資深的測試工程師價值所在。開發知識當然和開發工程師差不多了,不再多說。在軟素質方面,測試開發工程師應該具有更好的組織溝通協作能力。現在許多公司都在推行全流程保證,QA為了發揮更大的影響力以及保證專案的質量,需要從需求到設計,測試到上線全方面跟蹤參與,這就涉及到了許多跨部門跨小組的溝通,即便在小組內溝通也極其頻繁,工程師需要很好的表達能力。同時,由於測試在軟體生命週期中處於靠後的位置,所以在將許多工作推行到上游的環節中存在較多阻力,這也要求工程師有較好的統籌和協作能力,最終達到目的。

  3、走得更遠

  不可否認,現在許多測試理論,無論白盒測試還是黑盒測試,無論單元測試、整合測試還是系統測試,看似屬於測試人員研究的專利,實際上大部分的方法論都是開發人員提出來的。再一次證明,不參與軟體主體的研發工作是不可能深入理解測試的,所以開發人員需要具備的開發能力和技巧測試人員也是需要具備的。當然由於專案的安排和時間等各方面的原因,測試人員能難有較多的開發機會,但這不妨礙你不斷地學習。我們大組內就有一個多年深入研究的python的QA,一直以此為興趣,許多開發小組用到python開發系統的時候都會叫他過去培訓,他不僅是質量部的資深測試工程師,還親自開發了多款實用的測試自動化工具。另外,測試可以涵蓋的方面很多,但人的精力畢竟有限,測試開發工程師也必須擁有自己的核心競爭力,選定一個方向是個不錯的做法,致力成為某方面的專家,比如單元測試(不要認為是開發人員做的,很多開發人員沒有單測意識和技巧)、效能測試、安全測試。組裡面也有一個對效能測試研究了6年的人,從職業開始發展一直比較順利,並且發展勢頭不錯。最後是測試開發工程師需要培養自己的大局觀,這個是在職業過程中有意培養的,公司現階段的任務是什麼?側重點是什麼?在大公司需要順勢而為,QA的本職工作是保證質量,需要藉助與流程、工具和其他外部資源,所以在工作的時候儘量與大方向契合。比如公司去年是QA內部水平提高的一年,需要QA具備單元測試、Code Review方面的能力,今年是保證質量的前提下,提高軟體釋出週期,主推持續整合。

  4、測試的本質

  2V(Validation和Verification)是QA的基本職責,即保證兩點:Validation,軟體按照既定的需求開發,沒有偏離產品方向;Verification,軟體在滿足需求的基礎上保證其正確性,從功能、效能、安全等各個方面驗證。傳統意義上,第二點是大部分QA的意識,即找bug,認為一個軟體找到的bug越多自己的價值越大,實際上QA的最高境界是軟體在測試的時候找不到bug,因為在軟體的啟動階段你就開始了質量保證工作,從需求、設計、編碼這些前期階段就杜絕了bug產生的可能。當然,以上說的有些理想,但本質是什麼?軟體背後是人,是PM制定的需求,是RD進行開發的, 那測試背後實際上測的是人而不是軟體。人總是可能存在思維漏洞的,人總是可能犯錯誤的,所以永遠會有bug,但有些人心細,有些人負責,自己開發完後會自己進行單測、功能測試,以致後續能發現他的bug已經很少了。明白了這一層就不要單純從技術角度來思考測試。

  最後想說的是,無論在大公司還是小公司,大家都有壓力,都要發展,心態就很重要了,以創業者而不是打工者的心態來工作看待很多問題就截然不同了。

本文轉載自51Testing軟體測試網,檢視更多:http://www.51testing.com/html/news.html

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11323760/viewspace-1057975/,如需轉載,請註明出處,否則將追究法律責任。

相關文章