從程序員到軟件測試工程師的路該怎么走
從程序員到軟件測試工程師的路該怎么走
從程序員到軟件測試工程師的路該怎么走?我想大家都知道這是一個晉升向上的方向,這條路該怎么走呢?今天小編將與您探討一下這個問題。
程序員(英文Programmer)是從事程序開發(fā)、維護(hù)的專業(yè)人員。一般將程序員分為程序設(shè)計人員和程序編碼人員,但兩者的界限并不非常清楚,特別是在中國。軟件從業(yè)人員分為初級程序員、高級程序員、系統(tǒng)分析員,系統(tǒng)架構(gòu)師,測試工程師五大類。
軟件測試工程師(Software Testing Engineer)指理解產(chǎn)品的功能要求,并對其進(jìn)行測試,檢查軟件有沒有錯誤(Bug),測試軟件是否具有穩(wěn)定性(Robustness),寫出相應(yīng)的測試規(guī)范和測試用例的專門工作人員。簡而言之,軟件測試工程師在一家軟件企業(yè)中擔(dān)當(dāng)?shù)氖?ldquo;質(zhì)量管理”角色,及時發(fā)現(xiàn)軟件問題并及時督促更正,確保產(chǎn)品的正常運作。按其級別和職位的不同,分為三類。
水往低處流,人往高處走,大家一般都會有想要向上晉升的愿望。那么從程序員到軟件測試工程師是怎么樣一個過程呢?從程序員到軟件測試工程師的路該怎么走?讓我們來了解一下:
國內(nèi)軟件公司對軟件測試的態(tài)度令人擔(dān)憂。軟件測試工程師不足,開發(fā)測試人員比例不合理。據(jù)調(diào)查,最好的企業(yè)中測試人員和開發(fā)人員的比例是1:8,有的是1:20,甚至沒有專職的軟件測試工程師。
曾經(jīng)參與微軟Windows95、Exchange Server4.0和4.5、Internet Explorer4.0和5.0、SQL Server2000開發(fā)與測試工作陳宏剛博士盡管已經(jīng)升任微軟亞洲研究院商務(wù)及高校關(guān)系高級經(jīng)理,但仍然對國內(nèi)軟件測試水平的落后深有感觸。
國內(nèi)很多企業(yè)還處在探索階段,小企業(yè)的運作方式造成其主要精力是要盡快完成初始資本積累。有些企業(yè)也了解軟件測試的重要性,很努力、很認(rèn)真的在學(xué),但因為很多原因而學(xué)不到精髓,不知道如何去做。于是只能局限于書本上學(xué)來的簡單的黑盒、白盒測試而已。很多人知道有壓力測試和性能測試,但針對產(chǎn)品具體如何去做就不清楚了。
陳宏剛表示,重視測試首先需要有開放性的軟件文化,而在很多公司中,測試工程師只是絕對服從的聽命角色,沒有開發(fā)他們的積極性和創(chuàng)造性。一些管理人員對軟件開發(fā)的流程管理經(jīng)驗不足,仍然用傳統(tǒng)企業(yè)的方法進(jìn)行管理,再加上對軟件質(zhì)量的控制理解不對,認(rèn)為編完程序經(jīng)過簡單的程序員自己測試就可以使用了,而沒有認(rèn)識到軟件測試是控制質(zhì)量最好的方法。
不過,國內(nèi)還是有一些大型公司和專業(yè)公司已經(jīng)在軟件測試方面走上正規(guī)。1994年開始接包IBM軟件測試項目,1999年軟件測試成為公司主體軟件外包業(yè)務(wù)之一的和騰軟件就是其中之一。因為客戶就是IBM這樣的大型軟件公司,和騰軟件高級副總裁劉忠表示,它們在軟件測試管理上,經(jīng)同國外的公司相差不大,同時也研究和應(yīng)用了多種軟件測試技術(shù)。
軟件測試工程師
一提到軟件測試工程師,很多人就會想到那些反復(fù)使用軟件,試圖在頻繁操作中尋找到錯誤發(fā)生的低層次人員或者軟件用戶。其實這是一種錯誤的概念,軟件測試早已超越了用戶使用來發(fā)現(xiàn)Bug的基本測試階段。
陳宏剛介紹說,微軟的軟件測試工程師分為三種:測試執(zhí)行者(Basic SoftwareTester)、測試工具軟件開發(fā)工程師(Software Development Engineer inTest)和高級軟件測試工程師(Ad_hoc Tester)
測試執(zhí)行者負(fù)責(zé)理解產(chǎn)品的功能要求,然后根據(jù)測試規(guī)范和測試案例對其進(jìn)行測試,檢查軟件有沒有錯誤,決定軟件是否具有穩(wěn)定性,屬于最低級的執(zhí)行角色。
測試工具軟件開發(fā)工程師負(fù)責(zé)寫測試工具代碼,并利用測試工具對軟件進(jìn)行測試;或者開發(fā)測試工具為軟件測試工程師服務(wù)。產(chǎn)品開發(fā)后的性能測試、提交測試等過程,都有可能要用到開發(fā)的測試工具。對技術(shù)要求最強(qiáng)的是這些人,因為它們要具備寫程序的技術(shù)。“因為不同產(chǎn)品的特性不一樣,對測試工具要求也是不同的,就像Windows的測試工具不能用于Office,office的也不能用于SQLserver,微軟很多測試工程師就是負(fù)責(zé)專門為某個產(chǎn)品寫測試程序的。”
而Ad_hocTestet屬于比較有經(jīng)驗,自己會找方向并做的很好的測試工程師,這要求具有很強(qiáng)的創(chuàng)造性。剛進(jìn)入微軟時,老板也是只給陳宏剛一個操作流程,每天就按照這個規(guī)程去做,幾天下來,一個Bug都沒有發(fā)現(xiàn)。陳宏剛也很沮喪,覺得這樣挺對不起公司,后來自己問自己:為什么非要這樣做!于是換了其他的方法試試,令他吃驚的是,一下就找到很多嚴(yán)重的Bug,當(dāng)時也不敢聲張。有一天,他找到10多個非常嚴(yán)重的Bug,開發(fā)經(jīng)理一下就驚呆了,怒沖沖的跑到陳宏剛面前問:“你是不是改變了測試方式和測試步驟?”陳宏剛有些嚇住,說道:“可能改變了一點。”對方說:“我非常生氣,但我不是生你的氣,而是因為以前測試人員水平太差,或者以前的測試方面有問題,軟件中有些Bug存在了半年甚至一年,但直到現(xiàn)在才發(fā)現(xiàn),現(xiàn)在修補(bǔ)這些錯誤要困難很多!”后來陳宏剛得到了老板的贊許,可以按照自己的想法去做測試。對此,陳宏剛感受頗深:“一方面我體會到了微軟非常鼓勵創(chuàng)造的文化,同時也感到只遵守教條不是好的測試人員,就和用戶一樣了。做軟件測試工程師同樣需要開拓和創(chuàng)造性。”
在開發(fā)管理上,測試不應(yīng)該歸屬于項目管理,也不應(yīng)該歸屬開發(fā)人員。這三個部門應(yīng)該是并駕齊驅(qū),相互協(xié)作,測試工程師最終決定產(chǎn)品是否能夠發(fā)布。
軟件測試工程師的素質(zhì)
因為軟件測試仍然處在發(fā)展階段,還沒有上升到理論層次。對人員的評測,包括微軟在內(nèi),都還沒有一個統(tǒng)一標(biāo)準(zhǔn),因此評定軟件測試工程師只能根據(jù)工作實踐進(jìn)行自然淘汰。
軟件測試對邏輯思維、學(xué)習(xí)能力、反應(yīng)要求很高,是否有嚴(yán)密的思維和逆向思維也非常重要。陳宏剛介紹說,在五六個人的測試小組時,一半以上的Bug都是他找到的。他認(rèn)為這同自己數(shù)學(xué)專業(yè)的背景關(guān)系密切,數(shù)學(xué)中有邏輯思維的培訓(xùn),要善于找出來各方面的因素。比如要證明一個定理,各個方面都考慮到,一個條件不滿足就無法證明;但如果證明其不成立,最常用的就是找到一個反例,只要有一點證明不成立就可以了,軟件測試也是找這一點。
做測試還要考慮到所有出錯的可能性,還要做一些不是按常規(guī)做的、非常奇怪的事。除了漏洞檢測,測試還應(yīng)該考慮性能問題,也就是要保證軟件運行得很好,沒有內(nèi)存泄漏,不會出現(xiàn)運行越來越慢的情況;在不同的使用環(huán)境下,考慮軟件的兼容性同樣重要。軟件測試同產(chǎn)品的規(guī)模也有很大的關(guān)系,因為軟件的bug往往出在大型軟件的連接處。
做軟件測試工程師需要對軟件抱有懷疑態(tài)度。這是因為開發(fā)人員喜歡想當(dāng)然,總是找一些有利于自己程序執(zhí)行的數(shù)據(jù),有些開發(fā)人員甚至認(rèn)為不利于程序執(zhí)行的數(shù)據(jù)是對代碼的玷污和褻瀆。而軟件測試卻要策略性的準(zhǔn)備各種數(shù)據(jù),從每個細(xì)節(jié)上設(shè)計不同的應(yīng)用場景,不去想當(dāng)然的假定任何一個數(shù)據(jù)是可行的。
在職業(yè)素質(zhì)和交際方面方面,并不是測試工程師愛挑別人毛病才好,反而這個工作要求很強(qiáng)的溝通能力。經(jīng)常的和開發(fā)人員進(jìn)行溝通,說話辦事要很得當(dāng),不能指責(zé)別人,否則會事倍功半。性格隨和才能和開發(fā)人員順暢的溝通,對人和對事是完全不同的兩個問題。
如何培養(yǎng)優(yōu)秀的軟件測試工程師
朗川軟件測試工程師張建陽從北大力學(xué)系畢業(yè)之后,曾開發(fā)流體力學(xué)分析軟件,軟件缺少測試而產(chǎn)生的問題給她留下了很深的印象。后來去大唐電信做UIM(統(tǒng)一消息管理系統(tǒng)),她發(fā)現(xiàn)盡管公司為了鼓勵員工找bug采取了很多獎勵方法,但還是很少人愿意去做系統(tǒng)測試。而張建陽卻從那時查閱翻譯了很多國內(nèi)外的資料,對軟件測試產(chǎn)生了濃厚的興趣。
像張建陽這樣在工作中自己定位在軟件測試領(lǐng)域的開發(fā)人員并不多見,因為程序員更愿意去做開發(fā)而不是測試,從大環(huán)境上,測試人員收入水平低也是原因之一。而在微軟,測試人員和開發(fā)人員的工資水平是相同的。
如何改變這種現(xiàn)狀呢?有人說可以可以派人去先進(jìn)的國外軟件企業(yè)學(xué)習(xí),但這種方式因為牽涉到商業(yè)秘密,可操作性不大。陳宏剛博士認(rèn)為更好的方法是引進(jìn)人才,把在國外大型軟件公司工作過、有經(jīng)驗的人才引進(jìn)來,甚至要高薪聘請。他表示,這不僅僅是一個人的問題,關(guān)鍵是能夠把整個軟件測試的水準(zhǔn)提高一個層次。
引進(jìn)人才只是開始,更重要的是培養(yǎng)一批軟件測試人才。軟件開發(fā)的教育培訓(xùn)都是比較正規(guī)的,各個學(xué)校也都設(shè)有專業(yè),但軟件測試還沒有正規(guī)的專業(yè)畢業(yè)生,而且沒有評判的標(biāo)準(zhǔn)。陳宏剛博士給很多軟件學(xué)院建議,開設(shè)四方面的軟件測試專業(yè)基礎(chǔ)課:軟件測試基礎(chǔ)、軟件測試開發(fā)、高級軟件測試案例和行業(yè)軟件特色測試方法。國內(nèi)現(xiàn)在已經(jīng)有了一些軟件測試基礎(chǔ)的教材,但其他的教材還沒有。高級軟件測試案例主要是大型軟件測試案例,大型軟件出現(xiàn)的問題具有很強(qiáng)的代表性。而行業(yè)特色軟件測試的課程可以開闊學(xué)生的視野。陳博士介紹說,在國外,也是極少的高等院校開設(shè)測試專業(yè),但可以借鑒民間的培訓(xùn)機(jī)構(gòu)課程。在有一批專業(yè)的測試人才出現(xiàn)之后,人們會認(rèn)識到他們的重要性。
如果你已經(jīng)開始從事軟件測試工作,千萬不要認(rèn)為軟件測試沒有什么發(fā)展的潛力和前途。劉忠從1995年接下IBM的OS2漢化版本的測試開始到現(xiàn)在,他一直工作在軟件測試領(lǐng)域,并升到了公司高級副總裁的位置。和騰軟件也培養(yǎng)了一批測試工程師,它們從對測試職業(yè)將信將疑到明確自己的測試方面的職業(yè)目標(biāo)。劉忠介紹說:“很多人開始做測試執(zhí)行工作時會說很麻煩、很枯燥,只是一味的埋怨,而不是主動的去學(xué)習(xí),他沒有看到軟件測試背后所隱藏的知識。因為學(xué)習(xí)可以做這些工作,不學(xué)習(xí)也可以做這些工作,但質(zhì)量是不同的。有些人自學(xué)和請教了很多測試技術(shù)和管理方面的知識,公司自然就會在下個項目中去培養(yǎng)他。”
因此對于一個新手,要在各方面培養(yǎng)自己的能力。首先是要理解各種測試流程,并在理解的基礎(chǔ)上轉(zhuǎn)化為自己的知識,以后遇到相似的問題能自己去解決。在測試技能上,要知道測試有那些手段,比如壓力測試有哪些方法,哪些工具可以輔助做測試。從專業(yè)技能上,面向不同的技術(shù)方向,像操作系統(tǒng)、網(wǎng)絡(luò)、通信等都要從專業(yè)上深入了解。這三方面要同步去成長。
軟件測試工程師未來的發(fā)展
從事軟件測試有沒有前途,未來的職業(yè)發(fā)展方向怎樣呢?
陳宏剛博士表示,軟件測試工程師在微軟的發(fā)展有幾種途徑:一種走技術(shù)路線,成長為高級軟件測試工程師,這時他能夠獨立測試很多軟件,再向上可以成為軟件測試架構(gòu)設(shè)計師。第二種就是向管理方向發(fā)展,從測試工程師到組長(Lead),再到項目經(jīng)理(Manager),到更高的職位。第三種可以換職業(yè),做項目管理,做開發(fā)人員都可以,很多測試工具軟件開發(fā)工程師在寫測試軟件的過程中,因為開發(fā)方面積累了經(jīng)驗,同時對軟件產(chǎn)品本身產(chǎn)生了自己的看法,很容易轉(zhuǎn)去做產(chǎn)品編程。
陳宏剛博士現(xiàn)在還帶著一個測試小組,兩個清華軟件學(xué)院的學(xué)生,一個南開的專門做軟件測試的博士生,一個北郵的學(xué)生,他們負(fù)責(zé)總部一個產(chǎn)品的測試。陳博士表示,在自己簡單的講講思路,共同探討之后,他們一星期就找出了70多個Bug,也感覺學(xué)了很多知識,并表示以后專注于軟件測試專業(yè),因為他們感覺軟件測試真的是一門很深的學(xué)科,有很多可以研究的課題。其實微軟的測試人員很多也都是碩士、博士,他們同樣在做創(chuàng)造性的工作,保證著程序質(zhì)量,推動著軟件的進(jìn)步。
軟件測試是正在快速發(fā)展,充滿挑戰(zhàn)的領(lǐng)域。盡管現(xiàn)在單機(jī)版桌面軟件的測試已經(jīng)成熟了很多,但對于網(wǎng)絡(luò)時代的到臨,包括微軟在內(nèi)的公司對基于網(wǎng)絡(luò)的測試也沒有一套完整的體系,也是處于探索中,網(wǎng)絡(luò)中被攻擊的可能性太大,這就是為什么黑客在網(wǎng)絡(luò)上能興風(fēng)作浪的原因。網(wǎng)絡(luò)測試是一個新環(huán)境,而且是很大的挑戰(zhàn)。
軟件測試未來的發(fā)展空間很大,軟件測試工程師的職業(yè)之路同樣充滿希望。