軟件測試和軟件開發哪個好呢?
軟件測試和開發是產品開發中同樣重要的兩個板塊,有開發的地方就有測試,兩者相輔相成,沒有優劣,無論在哪個領域發展都可以給你實現價值的空間。從收入角度來看,也相差無幾。我們先來了解了解軟件測試和軟件開發分別是做什么的?
軟件測試主要工作就是測試軟件,但是測試前的測試需求、編寫測試計劃、編寫測試用例,測試后的編寫測試總結報告等,也是必須要做的。測試軟件又分為手動測試和自動測試,自動測試指綜合運用各類測試開發技術和自動化測試工具對軟件進行測試。最后,軟件測試的定義是為了找出軟件中的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年時間內,整個軟件測試行業應該會處于蓬勃發展這樣一個生命周期中。因為一項職業從孕育、發展、成熟、穩定需要一定的時間來承載。這點,大家也可以從一些官方的數據來看到。
軟件開發工作從長遠來看,還是不錯的,但是相對于生命周期來看,軟件開發早已經不是以前很多企業只是關注把軟件做出來,就像現在要做出一個類似于淘寶的電子商城,其實從功能上,從代碼實現上來看,已經很成熟了,花幾千塊可以買現成的模板,定制下,就可以。所以開發模式在改變,工廠化,模塊化思想已經很成熟。所以將來的軟件開發一定會關注,個性化、差異化。從這個意義上來看,軟件開發的職業前景會受到需求的影響。另外,從行業資訊來看,比較新的開發技術會得到關注。老的慢慢會淡化。
總體而言,如果非得要在軟件開發和軟件測試做一個結論性的比較,還是比較困難的,所以給每一位看到此文章的人一個建議,如果你很難選擇把哪個作為自己的職業來思考。就強烈建議你可以問下這兩個領域資深的人,他們的建議對于你來說應該比較關鍵。另外,清楚地問下如下幾個問題:
第一,你的優缺點是什么?
第二,你想做什么樣的工作?
第三,有哪些事情是一定要靠自己的,有哪些事情是一定要借助外力?
所以,有時我們不僅僅是要埋頭干活,也需要抬頭看路,另外,人生沒有捷徑可走,但要懂得借勢而上。如果你對你的職業不滿意,轉行是一種選擇,樹挪死,人挪活。只是在挪的時候,分析下自己,因為你可以改變你自己。分析下外部的環境,因為你需要去適應環境。至于那個更可行,沒有答案。
關于如何入行這個問題,不管是培訓還是自學都只是一個入門的手段,殊途同歸罷了。
先說自學:
如果能夠自學入行可能基礎薄弱,但是就長期的職業發展而言是很好的,自學能力在這個迭代快速的行業是很重要的。自學的優點很多,良好的自學能力利于日后發展,自學能力強的人其他各方面的素質也不會差,意志力,決策力,執行力等等,而這些是影響你職業走向的東西。缺點也很明顯,不容易堅持。但是話又說回來了,沒有毅力的人還真要回到第一個問題好好考慮一下了。容易鉆牛角尖,效率慢,耗時太多,也學不深。再說培訓:
你要清楚的是培訓最大的優勢是: 在正規的培訓機構有一套完善的學習就業流程,也就是說提供的是一個學習-就業一條龍服務。缺點的話也有,不贅述,自行檢索。然而不管是自學還是培訓,都是建立在你決心轉行之后的,不要本末倒置了。而在這個問題上沒有人能夠對你做出指導,需要自己根據自己的實際情況自行分析。夢里走了很多路,醒來依然在床上。如果決定轉行了,就開干吧。但是,在決定轉行之前,慎之又慎!