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

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

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

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

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

