寶哥淺析-軟件測試技術發(fā)展
忙了很久,終于有點時間來寫寫自己的對于目前軟件測試技術發(fā)展的看法了。
前段時間,一直忙于各個外包項目的對接,也接觸了很多客戶,做技術的人在一起聊的肯定基本都跑不了技術范疇,尤其現(xiàn)在很多人關注的全棧測試、敏捷測試、TestOPS等等,一聽,好多時髦牛B的專業(yè)詞語。
軟件測試這個行業(yè),我從2003年開始接觸,至今已有16個年頭。從起初的純手工,到現(xiàn)在遍地都談的自動化測試,發(fā)展還是挺快的,作為一個快40歲的人,緊跟時代潮流,還是有點累的:)
記得剛開始做軟件測試的時候,就是純粹的手工測試,號稱點點測試,每天的工作就是配置好要測試的系統(tǒng),然后根據(jù)軟件的實現(xiàn)來驗證,基本不寫計劃,不寫用例, 測試環(huán)境都是與開發(fā)環(huán)境一起的,毫無質量監(jiān)控可言,不過,也就這么過來了。在我的印象中,這種情況從2003年持續(xù)到2005年,那個時候,想學點更深層次的技術,挺難的。一是,行業(yè)沒太多這么高的要求;二是,沒什么渠道可以學習。
2005年,到廣州工作后,接觸了TestDirector、QTP、LoadRunner,當時工作要求,測試管理用TD,Web自動化回歸用QTP,性能用LoadRunner,比如論壇,美食頻道以及播放器等,逐步技能豐富了,要求高了,但是仍然沒有對編程有太多的要求。比如Java編程,C語言、VBS也是因為測試工具需要用到,那個時候能夠把測試工具玩得還可以,都可以稱為“大神”,小白都這么理解。那時候我也熱衷在各個群,論壇活躍,幫助別人,被別人稱贊,也是一種榮譽,說到底,還是虛榮心,關鍵是還能遇到愛學好問的女測友:)
2007年進了華為,測試廣東移動Boss平臺的時候,發(fā)現(xiàn)華為不少的測試工具是自主研發(fā)的,可能很復雜,也可能很簡單,比如EXCEL數(shù)據(jù)對比工具。那段時間的工作感覺,能夠自定義開發(fā)測試所用的工具,感覺是極好的,但并不是大家都能搞定的。

從此,我對軟件測試工作有了一個全新的認識,用現(xiàn)在的話就是,以前的技術都是渣渣。不過從整個行業(yè)來講,我個人感覺,還是沒什么太大變化,但從技術而言,當時所用的,也是歷史就有的,只是自己不會而已。
但從2009年以后,市面上流行出來的技術術語越來越多,我不知道是不是隨著離岸外包越來越多的緣故,還是所謂的技術大咖故弄玄虛,各種奇形怪狀的技術語言都出來了,比如探索測試、穿透性測試、玻璃盒測試等,我不是否認這些術語背后的測試意義,我只是不理解為什么一些相對通俗的技術,非要起一個比較唬人的名字呢?
從2014年移動應用飛速發(fā)展,敏捷開發(fā)大行其道,隨之而來的各種測試術語很囂張,什么敏捷測試、全棧到現(xiàn)在的TestOPS等,聽上去很牛,很玄,但究其本質呢?
行業(yè)對測試人員的能力要求越來越高,這是IT行業(yè)發(fā)展趨勢,是正常的。大型優(yōu)秀的企業(yè),也會因為其業(yè)務的復雜度,需要構建復雜高效智能的技術框架,這點是無可厚非的,但我不理解的是,為什么現(xiàn)在測試工程師在學習,進化的過程中,非要研究那些高精專的技術呢?
10多年來,我對軟件測試技術發(fā)展的理解就是,在以后相當長的一段時間內,軟件測試工作,仍然是勞動密集型工作,仍然需要測試工程師充分發(fā)揮自己的主觀能動性,而不是依賴這樣那樣的測試工具或者框架,我們在學習、研究的時候,不要忘記了工作的本質,舍本逐末的想一步登天。
為什么這么說,其實是我看著目前行業(yè)內,有太多的人覺得自己不聊點、不靠點流行的概念,都不好意思說自己干IT工作了。以TestOPS來說,從技術發(fā)展來看,完全是從DevOPS延伸出來,就像敏捷測試的誕生一樣。
DevOPS:我查到的解釋是:DevOps是一種軟件工程文化和實踐,旨在統(tǒng)一軟件開發(fā)(Dev)和軟件運維(Ops)。DevOps運動的主要特點是在軟件構建的所有步驟中極力提倡自動化和監(jiān)控,從集成、測試、發(fā)布到部署和基礎設施管理。DevOps的目標是縮短開發(fā)周期,增加部署頻率,更可靠的發(fā)布,與業(yè)務目標緊密結合。
把開發(fā)人員、QA、運維人員的工作要求、技能的交集部分,定義為DevOPS,一句話,就是將開發(fā)人員的技能要求再提升兩個檔次

TestOPS:與DevOPS相對,期望TestOPS工程師,把測試、QA、運維甚至開發(fā)人員的工作要求、技能的交集部分,定義起來,希望測試工程師具備這樣的技能,我的天,要求太高了。

就上面的TestOPS構成圖,朋友們可以看看,這個要求很高,不是說不能做到,而是不是人人都能做到。
我們每天都在接觸新的事物,都在學習新的知識,但是我們要知道哪些是目前能夠解決現(xiàn)實問題的知識,哪些是可以擴展的,而不是每出現(xiàn)一個新的事物,我們就義無反顧,逼迫自己去追隨。
目前的軟件測試行業(yè),我個人覺得,仍然手工測試為主,自動化測試為輔,手工測試是基礎,是自動化測試思想的源泉,如果這個基礎都沒有,根本談不上未來的測試開發(fā)、全棧、TestOPS等等。立足眼前,才可能有未來。
我不是在批判現(xiàn)在流行的技術或術語,而是期望朋友們能夠理解、識別這些概念的本質,理解了本質才有明確的判斷,才有明確的方向。
以我的理解,軟件測試工程師的核心技能可以下圖來表示:

圖很簡單,要說的也很簡單,理論是必須要學的,傳統(tǒng)的軟件工程理論、流行的敏捷開發(fā)流程,在這個基礎上,一定要從基本的手工測試活動開始,不斷提煉,深化思想,有了優(yōu)化的思想,再去實現(xiàn)對應的思想,才會有這樣那樣的技能,比如selenium自動化、Appium自動化、接口自動化等,當然,我僅僅是從技術本身來討論。
目前軟件測試技術中,從51job,中華英才等招聘平臺看到的測試開發(fā)工程師崗位要求,看到的主要要求如下:
1、測試理論;
2、開發(fā)語言能力:java、python、R語言、C++等;
3、數(shù)據(jù)庫技能:Mysql、Oracle、MangoDB、Redis等
4、操作系統(tǒng):基本都是Linux方面的;
5、測試工具:商用ALM、UFT、LoadRunner,開源:Selenium、Appium、JMeter、PostMan等
6、持續(xù)集成:基本Jenkins比較多;
7、容器:Docker等
還有其他技能,就不一一列舉
一看這么多要求,想做一名合格的測試工程師得多難,掌握的技術,其實不亞于軟件開發(fā)人員了,要求真的變高了很多。
但我想說的是:
1、這么些年來,軟件測試的本質核心并沒有太多變化,不要被那些唬人的術語嚇到,即使真的那么復雜,至少90%的測試工程師無須擔心;
2、不要因為這些變化,我們亂了陣腳,擔心未來自己的職業(yè)發(fā)展,學習是個持續(xù)性的過程,把握學習的核心即可;
3、我們既然無法一口吃成一個胖子,那就圍繞一個主題,逐步增肥,但要的是肌肉,而不是脂肪;
4、現(xiàn)在的技術太多,不要堆砌一堆無用的技能,時間是寶貴的, 定位好自己的方向,再專注學習提高
針對已經(jīng)從業(yè)或即將從業(yè)軟件測試的朋友們,我的建議是:
1、軟件測試基礎理論必須奠定好;
2、從軟件測試的目的--發(fā)現(xiàn)缺陷這個本質著手,規(guī)劃技術體系,然后逐步學習;
3、雖說技多不壓身,但是學習這些技術是有時間成本的;
4、以眼前需求為切入點:學習Python的緊迫性要高于學習JAVA、C++等語言;
5、不要糾結于這樣那樣的框架,記住,所有的框架都是虛的,思想最有價值,思想怎么來,通過功能測試來;
6、不懂編程、不會編程別談什么單元測試,僅會一些工具是遠遠不夠的;
7、解決眼前工作中的問題是老板關注的,你的其他想法與他無關,所以,你的核心目標是伺候好你的老板,因為他舒服了,你才有夢想。
結束語
寫完了,自己才覺得寫的什么亂七八糟,這感想怎么來的?
源于目前很多的朋友問我什么是全棧,什么是TestOPS,也有朋友在研究,可惜都沒有真正落地的,BAT、京東這些一些的企業(yè)已經(jīng)在實施,可惜我們大部分人都進不了。立足眼下是現(xiàn)實的做法。
測試行業(yè)其實是浮躁的,正如頻發(fā)的“割韭菜”現(xiàn)象,我期望的是踏踏實實的做技術,而不是跟著噱頭浪費青春。

