標籤:io os 使用 java sp strong 檔案 資料 on
我想整理一下這些年來,對於軟體測試行業的理解:)於是就有了這個文章。
有按看不看代碼分的:黑箱測試工程師、白盒測試工程師
有按主要業務分的:金融測試工程師、通訊測試工程師、本地化測試工程師、遊戲測試工程師
有按主要任務分的:自動化測試工程師、效能測試工程師、安全性測試工程師
有按被測軟體分的:手機app測試工程師、手遊測試工程師、網頁測試工程師、用戶端測試工程師
有時也有按被測軟體的語言、技術分的:java測試工程師、.Net測試工程師、資料庫測試工程師
還有和開發混在一起的:測試開發工程師、測試載入器開發工程師、測試架構師
最多的還是籠統的:軟體測試工程師、資深測試工程師、進階測試工程師、測試主管、測試經理
此外最常見的就是複合的,如:外包java測試資深工程師、ios手遊進階測試工程師,把上面的各類定語隨機組合
- 工作崗位類型多導致的測試人員迷茫 - 再看行業的特點
看上面這麼多崗位,可以感覺到軟體測試行業就是一個大雜燴,什麼崗位都有,職業發展道路複雜得難以想象啊。
所以論壇上經常看到測試工程師發帖說“工作X年,迷茫啊”,X的值從1到10不等,至於10年以上的,屬於人到中年,也沒時間來發帖表示迷茫了,或已轉行了,當然這行業在中國一共也沒多少年。。。
這個行業有以下特點
- 收入差距極大,有月薪四五千的黑箱測試工程師,也有年薪幾十萬的資深測試工程師
- 技術差距極大,有只會滑鼠點點點的手工測試人員,也有精通程式碼的資深測試人員
- 工作內容差距極大,有人每天點點滑鼠,測測XXX資訊管理系統,有人測複雜的金融業務,有人寫測試載入器,有人測伺服器、中介軟體、測socket、測高並發,有人搭建測試平台
- 不同崗位間技術壁壘嚴重,比如你讓一個黑盒手工測試人員去看兩個安全性測試人員做滲透測試,他很可能完全看不懂這些人在幹啥。如果你給一個網站手工/自動化測試人員做一份資料庫測試人員的筆試題(考具體資料庫的SQL、函數、預存程序),很可能他要交白卷。當然反過來說,要從技術型測試崗位轉行去做黑盒手工測試人員是毫無壁壘的,但一般不會有人這麼轉。。。。
- 入行門檻低,一個其他專業的無關人員通過三個月簡單培訓,即可掌握普通的黑箱測試方法,成為一名軟體測試工程師,拿3-5k薪水
- 黑盒手工測試是主流職業,國內大部分中小型公司都需要大量的黑盒手工測試人員,同時巨頭級的金融機構、互連網公司仍然需要資深的黑箱測試人員
所以造成了大量外行人員湧入軟體測試行業裡的黑盒手工測試崗位,並給人以測試人員技術不行的總體印象。
首先黑箱測試有以下特點:
- 門檻低,培訓三個月可掌握;我做外包的時候,曾有公司將3個月培訓的應屆生偽裝成2年經驗黑箱測試工程師派去客戶方工作。客戶方毫不懷疑,並最終給以好評。
- 技術路線長度為零,一入黑盒不複返,想做技術難難難
- 測試技術知識無更新,仍然是上世紀六十年代左右的黑箱測試方法
- 依賴業務知識作為核心競爭力,如金融測試工程師
- 職業發展路線一般是測試管理方向或乾脆轉行。可以說絕大部分從業人員如果不想轉行的,都想做測試管理,然後可想而知競爭激烈,而且真的只會黑箱測試的人以後越來越難拿到管理崗位。為什嗎?因為現在有很多人懂一點技術
所謂懂一點技術,就是會做一點自動化測試。
自動化測試有以下特點:
- 人人都在提,職位描述裡都有,但大多數人都只懂個皮毛(因為他們做黑盒做久了,技術路線毫無積累)
- 自動化測試工作難找,首先自動化測試對企業來說成本極高,長期投入才能見效,這對國內小公司來說是不可能的,其次,項目適合自動化的不多,比如要做8年的40國語言的本地化測試專案就很適合,但畢竟少,一個極其不穩定的網站就很不適合,但國內大部分是這種。再次,招不到會做的人,你能招到的人基本上有兩種,一是做黑箱測試為主,懂一點自動化測試的人,技術上屬於基本指望不上的,學習能力基本沒有,要靠高手教出來的;另一種是原來做開發,因壓力大/無聊等原因轉行做自動化測試的人。這種技術上有的還是可以的。但問題是測試思維欠缺。能做,但不一定做得好,經常陷入自動化測試的陷阱和泥潭中。但你如果想要招懂技術、測試思維好的人基本上招不到,當然錢多的巨頭是可以把這些人用錢砸出來的。
- 懂自動化測試技術不一定能讓你找到自動化測試工作,但對找手工測試工作的協助極大。所以黑箱測試人員如果怕失業、怕被應屆生擠走的,務必學一點點自動化測試來提高表面上的技術競爭力。就算不會做,也要會吹,而且基本上放心好了,一般公司是承受不了自動化測試的成本的,不會真的讓你做自動化測試。
- 全靠自學,沒人教。我不懂自動化測試的時候看國內的各種自動化測試教程、書籍、視頻,都覺得高大上。我懂了之後看這些覺得都是shi。為啥? 他們不教原理,只教工具。 不教思維,只教方法。後果是,你學了皮毛,學了“術”,而不懂原理,不懂“道”。自學者推薦使用英文資料自學,比中文資料強100倍。中文資料當然也有好的,但極少,更多的是某些人為賺錢寫的,也有自己就一知半解的人瞎寫-害人不淺。英文資料也有瞎寫的,但好資料多。
- 高端崗位和開發人員的技能重疊性高。這有個什麼問題呢,就是你做黑箱測試懂一點自動化測試的人,在競爭高端自動化測試崗位時,比不過資深開發。去看看互連網巨頭裡對自動化測試高端崗位的職位描述就發現了,跟你平時用的東西完全沒關係。也就是說,自動化測試的從業人員想走高端崗位,需要面對來自轉行的開發人員的巨大挑戰。
- 可被手工測試替代。對大部分中小公司而言,一旦因為對自動化測試的成本估計不足,在自動化測試上就會陷入陷阱和泥潭。然後基於國慶,很多公司會用大量的手工測試實習生來代替自動化測試。效果也還行。所以除非是很適合自動化測試的項目和對成本有充分估計的公司,一般不會去做自動化。招大量實習生有另一個好處,就是容易產生管理崗位,黑箱測試出身的大多數就等著這種機會來做主管。
- 職業發展路線一般就是一直繼續做自動化或嘗試挑戰巨頭公司的高端崗位,更多的人會自動化之後去和黑箱測試人員競爭測試管理崗位,這時他們有技術上的先天優勢。
自動化測試的陷阱和泥潭:
- HP公司的QTP廣告深入人心,錄製回放的自動化現在仍有許多支援者。但這類崗位停留於工具的使用上,對個人來說,技術路線極短。因為這種工具就是為了讓不怎麼會技術的人使用而設計的。對公司來說,商業工具確實是成本最低的自動化測試解決方案。所以有不少公司仍然用他。但他很難招到願意為公司犧牲自己的技術路線的人,一般他只能招到懂一點點技術的黑箱測試人員來做這種自動化測試。這裡有一個很老的典故:某測試人員來到一家軟體公司,技術負責人指著角落裡一台積滿灰塵的電腦說,這是我們的自動化測試專用機,不過錄製的指令碼老是跑不起來,現在我們已經不太搞自動化測試了。
- 開源工具單獨無法使用,而懂一點技術的黑箱測試人員搭不好測試架構。以網站測試威力,最流行的開源工具selenium,必須和測試執行器(xunit系列)一起用。團隊需要至少有一個人有搭建測試架構的能力。實際上很多團隊沒有這號人。搭出來的測試架構用四個字形容就是一塌糊塗。總之這對後面的人影響很大,如果搭架構的人已離職,你最好想清楚要不要去這種項目做自動化測試。一個蹩腳的架構會讓你痛不欲生,產生還不如做手工測試的念頭。
- 為什麼懂一點技術的黑箱測試人員搭不好測試架構。為什麼懂一點測試的開發人員也搭不好測試架構。因為,他們有一個共同特徵:不懂自動化測試原理。 比如說,自動化測試要關注可維護性,要設計合理的代碼重用機制,以網頁測試最流行的開源工具selenium來說,官網就有介紹頁面物件模型的使用方法。但一般人看不懂。再比如搭一個好的selenium架構需要很好的程式設計語言基礎。假設你招了大部分轉行做測試的初級開發人員或懂一點技術的黑箱測試人員用java和selenium來做網頁自動化測試,你跟他說“多用組合少用繼承”,他完全不懂你說什麼,他反正寫java就不管三七二十一繼承繼承再繼承,他娘的他就會個繼承,要麼他乾脆把所有東西塞一個類裡面,然後你會看到他們在測試代碼裡寫出幾千行的上帝類、寫出十幾個類的繼承鏈。你跟他說testNG的測試執行機制,他也一頭霧水。我看到過某實際項目中使用了5年的自動化測試指令碼,裡面竟然是用自己的代碼重新實現testNG內建功能的,並且除了增加測試代碼複雜度以外毫無任何好處(難道是他們初代作者為了提高測試人員不可替代性的大智慧?),還有開發人員異想天開得用spring來封裝測試類別的(那他肯定沒用過xunit系列測試執行器)。還有時候你會看到幾千行測試資料和幾千行測試預期結果放在同一個文字檔裡,然後後來人找不到要找的資料,就胡亂地往這個巨大的文字檔裡寫一行自己要的資料,他也不管是不是跟前面的重複了。對這種,我只想說一句,那個已經離職掉了的原作者,你回來讓我打一頓消消氣好不好。
綜上所述,基於這些原因,中小公司你想搞使用者介面層的自動化測試,多半搞不好。但自動化測試不等於使用者介面自動化測試。還可以搞介面,搞單元測試。介面測試是一個很適合做自動化的切入點,如果技術負責人問我怎麼開始做自動化,我就會推薦他從介面測試的自動化開始。這一點對公司、對測試人員都有巨大好處,是少見的雙贏。
我做介面測試工作時的體會:
- 這他娘的比黑箱測試簡單無數倍,薪資竟然比黑箱測試高。
- 太容易了,好爽。
- 不要給我招懂一點技術的黑箱測試人員,也不要給我招轉行做測試的初級開發。好吧,只能招到這樣的。最後他們做的東西我都要返工一遍,還不如我自己做來著……算了慢慢教。如果不懂自動化測試原理,你煩我也煩。你煩做不好,我煩教不會。
- 做介面測試依賴於開發人員的配合,我們沒時間通讀代碼(對更多的人來說,其實讀也讀不懂),開發願意協助你的話,在這個崗位上你的工作很容易取得成就。
介面功能測試是測試行業的一個黃金點。其後自然而然的你可以接觸介面的壓力測試,並接觸正宗的效能測試。(待續)
我對軟體測試行業的個人理解 1