測試現狀

開始正文之前,我先拋出一個觀點,做80%的做測試的,都稱不上爲測試工程師。

好的,帶着這個觀點,咱們從行業目前的發展來說一下。如果你沒有進入這個行業,那麼有些概念可能不太理解,沒關係,先接觸一下。

  • 作爲 DevOps 關鍵角色,未來的軟件測試工程師和質量人員必須同時具備一定的開發和運維能力。
  • 測試人員會更深入介入開發工作,通過“測試左移”,提前與開發人員一起制定測試計劃,推動代碼評審、代碼審計、單元測試、自動化冒煙測試、測試精準化分析以及研發自測等來保證研發階段的質量;
  • 另外,測試人員會也會參與配置部署,將自動化測試用例配置到持續交付鏈中,並通過“測試右移”,全流程監控發佈後的應用質量。

這裏我所說的“測試左移”,也就是指的研發階段的質量保證,“測試右移”也就是發佈後的質量監控,搞明白這連個理念,就能很清晰的明白測試開發具體指的是什麼了。

下面我就說一下整個測試行業目前,一個整體的一個現狀。

第一個觀點:XP、Scrum、CI/CD/DevOps的項目管理迭代的方法論的流行加大了測試壓力

你要是剛開始進入這個行業,可能認爲測試就是找bug,但是測試工程師的核心是質量保證。舉個例子,以前一個項目,按月發佈,兩月發佈一個,一月發佈一個,現在呢,一個月也慢慢變成了兩週,三週,甚至一週,甚至有的時候2天就可以發佈一個功能,如果是按照這個節奏,研發只需要改一行代碼,你要保證這一行代碼的正確性,你要寫很多的用例,甚至要回歸,幾十條甚至上百條的都有可能。那麼他的改動會越來越頻繁,而對於測試來說,每一次的改動,我們都要去做迴歸的,而這種迴歸,在這種短時間迭代越來越短的節奏下,其實已經沒有辦法再靠人力去支撐了,到時候必然就會帶來測試工程師要進行加班,而且光加班也是解決不了的問題,所以這個時候,測試的壓力是非常大的。

第二個觀點:是原有的質量保證體系缺乏可以融入架構的工程化技術支撐。

原有的質量保證體系指的是什麼呢,我們說最早期的手工測試的方法論,什麼邊界值啦,以及我們自動化最簡單的一些自動化測試、壓測,所有原來的這一套測試體系其實在當今的這個測試行業下,尤其是互聯網快速發展的階段裏面已經慢慢的不太適用了。雖然說目前它仍然非常的有用,但是這樣的一套體系很難融入已經流行的比如說持續交付、持續集成、DevOps等這樣一個大的環境裏面。你所做的自動化測試,如何融入到這個體系中去,如何能快速的發現線上的問題,以及更早的發現研發級別的問題,靠原有的這些質量保證手段,其實已經有點匱乏了。

第三個觀點:行業大量技術根基薄弱的測試工程師面臨淘汰和外包

這句話聽起來比較殘酷,但是你必須要看到這種變化。通過和一些測試經理進行溝通,也都是認爲現在很多的測試工程師都不及格,要麼是會點點點,要麼是會一點自動化。20%-30%的人懂一點最基礎的自動化,自動化的能力也是屬於一個很薄弱的環節,既解決不了公司裏面深層次的問題,又沒有辦法幫公司支撐和搭建更高的平臺,完善更好的一套測試流程,所以也會導致這一類人也不太及格。

比如說阿里的一些現狀,就是招測試開發,或者說招研發做測試,由測試開發以及研發來負責完成公司內的質量體系建設,公司的持續集成,持續交付,DevOps,以及一些質量監控平臺,剩下的點點點,外包給其他的公司來做,這是他們目前的一個現狀,也就是說,如果你們只是點點點,那麼很快你將失去在大的公司的工作機會,直接會被外包公司吸收過去。

所以,這些也就是爲什麼很多公司都要招聘測試開發

說到這裏,肯定很多會點點點的,都在抱怨爲什麼招普通的測試,還要會自動化,會語言基礎?如果前面行業發展你可以理解,那麼你也就可以懂得,他們對測試是有更高的期待的,已有的測試又不能解決,所以只能在招聘中體現這一點。

測試開發工程師的概念怎麼來的?

這個名詞一開始並不叫測試開發,只是說懂技術,懂研發的測試工程師,後來這個詞又很長,再加上以前測試開發曾經在老的時代是有一個對應的詞的,從微軟的時代的時候,微軟就把工程師稱爲軟件工程師on testing,就是屬於測試領域的一個開發工程師。後來這個詞就慢慢的受到很多公司的採納,之後測試開發這個詞,逐漸的開始流行。

測試工程師需要會多少語言?

2門。第一門,推薦大家使用Python。Python是做自動化工作首選的一門語言,所以Python是第一位的。

第二個語言,等你月薪達到2萬或者2萬5以上的時候,這個時候光靠做測試,已經很難再產生更大的影響力了,這個時候需要怎麼做呢?第一個,在研發角度,去影響研發團隊提高質量,第二個,從運維和線上角度,去影響運維和線上用戶,然後去分析更好的質量。

如果要做這兩個事情,只靠Python,就有些乏力了,比如說全公司都在用Java,go,你用Python對接就會很麻煩,比如你要分析他們代碼的規範,代碼裏面的內存泄漏,多性能的死鎖,各方面的問題,你要發明工具去發現這些問題,技術棧不一樣,會很麻煩。所以Python是你入門的第一門語言,Python之後可以走2個方向,一個是Java,一個是go,懂2門語言就夠了。當然像前端,html,js,css,這肯定是每個人都需要去懂的,這些基本上都屬於基礎知識了。

測試開發做到後面,是不是和開發沒有區別了?

測試實際上是比開發更牛的,只不過大家礙於現狀,不好意思說這個事情。對測試的能力要求,比開發還要高,只不過是說現在的測試行業裏面,大量的人是沒有成長起來,導致大家覺得開發比測試牛。

舉個例子,開發工程師每天做什麼呢,學網站開發,學數據庫查詢,學各種工具,每天的工作就是產品經理告訴你我要在頁面上加一個好評,有多少人點贊,你給我實現這個功能,開發就去後臺裏面,第一個,數據庫裏面加一個字段,第二個,代碼裏面加一段查詢,第三個,在網頁端,加一個展示的效果。每天,每年常年的都是在做這樣的事情,你可以認爲就是數據庫的增刪改查,加上網頁的展現,多數的開發都是這樣,只有少數的開發會走出來,比如說進到更強的架構層去思考解決方案。多數的研發也是困擾於日常的搬磚。

測試做什麼呢?首先是人工的測試需要去做,第二個是自動化的測試要去做,第三個,專項的測試也要去做,之後是什麼呢,測試的左移,對研發質量要提前發現一些問題,同時上線之後的產品要進行質量的監控,發現一些線上用戶的崩潰問題,瞭解所有的業務場景。所以在總體的範圍裏面,測試比研發更有前途的。在技術能力的要求上,也要求測試具備比研發所不知道的一些東西。

舉個例子,耗電量怎麼去測,內存泄漏怎麼去測,一些底層的性能,壓測怎麼去測,這些東西研發日常是接觸不到的,反而是我們測試經常需要去關注這些指標。測試是比研發更有價值的一個崗位,但是遺憾的是,我們。行業所有的測試基本上都去忙點點點去了,忽略了對質量體系的建設,以及測試流程的建設。

後面你們會慢慢發現,隨着devops、持續交付這一套東西的流行,測試,運維,會慢慢的去管控整個公司的質量,然後研發只需要負責寫代碼。在目前以及過去的這些年,研發是比測試有優勢的,就是因爲高階的質量保障,測試行業基本上都沒有做,大家做的都是低端的,不是點點點,就是低端的自動化,然後很少有人往上去走,如果你走上來你會發現,測試比開發更有價值。但是兩者都是殊途同歸,都是開發工程師,只不過一個專注於測試,一個專注於功能的開發。所以現在很多公司,特別是大的公司,招測試開發以及研發去做測試,然後點點點,外包。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章