想了解軟體開發和測試哪個方向比較好?
首先,你這種問法的前提就是錯誤的,或者說這個問題問得很外行。軟體測試和開發是產品開發中同樣重要的兩個板塊,無論在哪個領域發展都可以給你實現價值的空間。所謂的好與不好,與行業無關,與你個人有關。做不好軟體測試,難道就難做好軟體開發?反之亦然。因為兩者的很多知識結構都是雷同的。在詳細回答之前,我們先來了解了解軟體測試和軟體開發分別是做什麼的?
軟體測試主要工作就是測試軟體,但是測試前的測試需求、編寫測試計劃、編寫測試用例,測試後的編寫測試總結報告等,也是必須要做的。測試軟體又分為手動測試和自動測試,自動測試指綜合運用各類測試開發技術和自動化測試工具對軟體進行測試。最後,軟體測試的定義是為了找出軟體中的bug而運行軟體的過程。
軟體測試工程師一般會承擔以下一些具體工作:文檔評審,用例評審,需求評審;測試用例設計,自動化測試腳本開發,測試架構設計、寫作測試文檔(測試計劃、測試方案、測試用例等);執行測試,發現軟體缺陷,提交缺陷報告,並確認缺陷最終得到了修正;通過測試度量軟體的質量;回歸測試等等,工作內容是非常多的。
軟體開發主要是做軟體編程(即用代碼實現需求功能),軟體研發主要流程是:市場或銷售團隊根據客戶需要梳理需求,研發人員拿到需求,根據需求功能用代碼實現出來,交給測試人員測試,測試OK就可以發布。
軟體開發的內容是:需求、設計、編程。當然,這裡就牽扯到用什麼語言的問題了,在此就不展開話題多說了。
其實,開發和測試是矛與盾的關係,兩者相輔相成,沒有優劣,誰都取代不了誰。網路上很多人都在說,軟體測試入職門檻低,軟體開發入職門檻高。其實這個觀點有失偏頗,同樣說的很外行,下面具體來比較。
一個優秀的測試工程師需要的知識結構,從全面性角度來看,包括如下幾個方面,第一是計算機知識,包括編程語言,掌握至少一門開發語言,比如C、Java、C#等,一門腳本語言,比如Python、Perl、Ruby、Shell中對於測試工程師未來更廣的職業發展非常有幫助。資料庫知識,對於絕大部分項目或互聯網項目,都會有資料庫,所以掌握至少一門資料庫,比如Oracle、SQl Server,DB2、Mysql等。另外操作系統,比如Linux、Unix,Windows核心命令也非常重要。對於有些涉及到網路的,網路和通信知識,比如TCP/IP協議也非常重要。
第二部分是軟體測試核心技術,掌握軟體測試核心的方法論,具體包括軟體測試需求分析與軟體測試用例設計核心工程方法。掌握主流的軟體測試工具,比如性能測試工具JMeter/LoadRunner,自動化工具典型代表Selenium/UFT/Appium,測試管理工具等,事實上光有這些工具還不夠,還需要真正理解其背後的實現原理。掌握核心的研發流程,比如RUP,測試流程,比如雙V模型,或者是現在流行的敏捷測試等,也是同樣重要。方法是秘笈、工具是兵器、流程是套路。雖然測試好比武術,棍術好比黑盒測試,劍術好比白盒測試。不同的武術對知識結構要求是不一樣。這個也是前面講到的進入軟體測試領域的方式相比開發要多的原因之一。第三個部分是行業知識與背景,這個對於有些行業而言,非計算機專業的人會有些相對的優勢。第四部分是英語,英語好對於做好軟體測試也有非常大的幫助,尤其是國際化軟體測試。
一個優秀的軟體開發工程師需要的知識結構,從全面性角度來看,包括如下幾個方面,第一也是最重要的是精通至少一門編程語言語法,比如Java、C、C++、C#等,至少熟悉一個開發平台或工具,跟具體開發語言對應的平台,比如Eclipse、Netbeans、VC等。熟悉一門資料庫,比如Oracle、DB2、Mysql等,熟悉操作系統,比如Linux、Unix包括相關的編譯環境,比如gcc等。熟悉軟體工程、熟悉演算法、數據結構。這個方面可以多看看,設計模式方面的書籍。第二部分是英語,英語對於做好軟體開發也有非常大的幫助,因為開發平台和環境都是英文為主。英語也有助於幫助理解一個編程語言的語法。
嚴格意義上來講,軟體開發和軟體測試都有非常不錯的職業前景。因為IT服務人類,IT改變人們的生活方式,IT對於現代社會而言非常重要。但從歷史的角度來看,軟體測試與軟體開發的職業前景還是有一些區別的。下面再來談談兩者的就業前景。
軟體測試工作無論從行業現狀,軟體測試的重要性,以及軟體測試發展史來看,至少在可以預見的未來10年時間內,整個軟體測試行業應該會處於蓬勃發展這樣一個生命周期中。因為一項職業從孕育、發展、成熟、穩定需要一定的時間來承載。這點,大家也可以從一些官方的數據來看到。
軟體開發工作從長遠來看,還是不錯的,但是相對於生命周期來看,軟體開發早已經不是以前很多企業只是關注把軟體做出來,就像現在要做出一個類似於淘寶的電子商城,其實從功能上,從代碼實現上來看,已經很成熟了,花幾千塊可以買現成的模板,定製下,就可以。所以開發模式在改變,工廠化,模塊化思想已經很成熟。所以將來的軟體開發一定會關注,個性化、差異化。從這個意義上來看,軟體開發的職業前景會受到需求的影響。另外,從行業資訊來看,比較新的開發技術會得到關注。老的慢慢會淡化。
總體而言,如果非得要在軟體開發和軟體測試做一個結論性的比較,還是比較困難的,所以給每一位看到此文章的人一個建議,如果你很難選擇把哪個作為自己的職業來思考。就強烈建議你可以問下這兩個領域資深的人,他們的建議對於你來說應該比較關鍵。另外,清楚地問下如下幾個問題:
第一,你的優缺點是什麼?
第二,你想做什麼樣的工作?
第三,有哪些事情是一定要靠自己的,有哪些事情是一定要藉助外力?
所以,有時我們不僅僅是要埋頭幹活,也需要抬頭看路,另外,人生沒有捷徑可走,但要懂得借勢而上。如果你對你的職業不滿意,轉行是一種選擇,樹挪死,人挪活。只是在挪的時候,分析下自己,因為你可以改變你自己。分析下外部的環境,因為你需要去適應環境。
這問題,有點意思 。
不知道為何會提出此問題,是不知道自己從事什麼職業 ? 還是看什麼職業發展好,就從事什麼職業 ?
個人經驗:任何職業都可以,前提是你有興趣,能深入下去。否則,職業前景再好,也是一個小螺絲釘,打雜的,沒意思 。
如果想做軟體行業,做什麼都千萬不要做測試。5年測試告訴你。做測試沒有前途,沒有錢途,要求高,待遇低,而且還沒有明確考核指標。你有力氣都不知道往哪個方向用。千萬不要做測試。做測試悔一生!
開發前景好,工資高,升職空間大。測試,也好,不過,若只是做簡單的黑盒測試,那就學不到太多東西,同時,工資待遇也不會太高,升職也少。如果你想更好的發展事業,個人建議往開發,後期若是不想再做開發了,到時還可以再轉測試。不過,測試,一般轉不了開發。
推薦閱讀:
※軟體測試到底要不要報培訓班?
※如何寫出高效的軟體測試用例?
※做測試,寫了一周的測試 用例,感覺自己已經是個文員了,怎麼辦?
※如何用一個例子徹底解釋白盒測試中語句覆蓋、判定覆蓋、條件覆蓋、條件判定覆蓋、條件組合覆蓋?
※沒有基礎的中專生學習軟體測試自學還是報培訓班好?