前段時(shí)間公司招人,面了一個(gè)要20K的,一問(wèn)自動(dòng)化只會(huì)點(diǎn)皮毛···
前段時(shí)間公司要招2個(gè)自動(dòng)化測(cè)試,同事面了幾十個(gè)候選人,發(fā)現(xiàn)了一個(gè)很奇怪的現(xiàn)象,面試的時(shí)候,如果問(wèn)的是框架api、腳本編寫這些問(wèn)題,基本上個(gè)個(gè)都能對(duì)答如流,等問(wèn)到實(shí)際項(xiàng)目的時(shí)候,類似“怎么從0開始搭建自動(dòng)化體系”“讓你來(lái)推廣自動(dòng)化,你會(huì)怎么設(shè)計(jì)方案”這種問(wèn)題時(shí),很多人就開始避重就輕、含糊其辭。
跟同事討論了一下這個(gè)事,一致認(rèn)為主要問(wèn)題出現(xiàn)在,現(xiàn)在學(xué)習(xí)自動(dòng)化的渠道太多了,很多自動(dòng)化的基礎(chǔ)知識(shí)都能在公開的渠道學(xué)習(xí),很多自動(dòng)化的新手就把學(xué)到的這些技術(shù)名詞和術(shù)語(yǔ)往自己簡(jiǎn)歷里搬,覺(jué)得好像自己已經(jīng)完全掌握自動(dòng)化了。
但事實(shí)上,“會(huì)自動(dòng)化” ≠ “ 能做自動(dòng)化”
如果說(shuō)沒(méi)有企業(yè)級(jí)的項(xiàng)目實(shí)操, 你就不可能清楚,怎么去拆解項(xiàng)目需求?怎么從0到1搭建自動(dòng)化體系?還有自動(dòng)化實(shí)施過(guò)程中的坑如何避開?
說(shuō)來(lái)說(shuō)去,還是對(duì)自動(dòng)化實(shí)操的經(jīng)驗(yàn)太匱乏了,同時(shí)也沒(méi)有能夠參考的自動(dòng)化測(cè)試流程規(guī)范。
做了幾年自動(dòng)化測(cè)試,突然想就這個(gè)問(wèn)題,總結(jié)一下自己以往的學(xué)習(xí)經(jīng)歷,踩過(guò)的坑,做一些深入的探討。
拋開疑問(wèn),只做學(xué)術(shù)探討
這次我們拋開所有的疑惑,比如自動(dòng)化測(cè)試到底有什么用?自動(dòng)化真的能提升效率么?學(xué)了自動(dòng)化能漲多少工資等等,以上的話題,我這次將不再論述,這幾個(gè)問(wèn)題也是平時(shí)討論的比較多的問(wèn)題。
針對(duì)以上的問(wèn)題,我做一個(gè)總結(jié),能漲工資,能多賺錢的技術(shù),就值得我們?nèi)W(xué)!既然自動(dòng)化現(xiàn)如今發(fā)展的這么火,自然有它存在的價(jià)值。
大部分手工測(cè)試想的無(wú)非是以下幾點(diǎn)問(wèn)題:
1.自動(dòng)化測(cè)試好學(xué)嗎?
2.不學(xué)/不寫代碼能做自動(dòng)化測(cè)試嗎?
3.怎樣學(xué)習(xí)自動(dòng)化測(cè)試?
4.學(xué)自動(dòng)化測(cè)試要先學(xué)習(xí)哪個(gè)方向?學(xué)ui自動(dòng)化?還是接口自動(dòng)化?好像App自動(dòng)化也比較火?要么再來(lái)個(gè)小程序自動(dòng)化?
5.我沒(méi)有代碼基礎(chǔ),工作都是點(diǎn)點(diǎn)點(diǎn),要不要報(bào)培訓(xùn)班?
6.我需要學(xué)習(xí)什么語(yǔ)言?java 還是 python?
…等等
我來(lái)針對(duì)以上的問(wèn)題,說(shuō)一些自己的看法:
首先,自動(dòng)化測(cè)試,很好學(xué)!但是要記住,一定要明確學(xué)習(xí)的方向,不要?jiǎng)ψ咂h,白花力氣。
第一,不寫代碼當(dāng)然可以做自動(dòng)化測(cè)試,但是個(gè)人建議還是學(xué)習(xí)一門語(yǔ)言,至于學(xué)習(xí)什么語(yǔ)言的話,很簡(jiǎn)單,不用糾結(jié),第一看你是否有編程基礎(chǔ),沒(méi)有選py,有的話選java py都可
第二,需要看你們的開發(fā)用的什么語(yǔ)言,和開發(fā)用同一門語(yǔ)言能在學(xué)習(xí)自動(dòng)化測(cè)試的同時(shí),降低你和開發(fā)之間溝通的門檻,提升你在公司的話語(yǔ)權(quán)。
第三,學(xué)習(xí)哪個(gè)方向?我建議:web ui自動(dòng)化=》接口自動(dòng)化=》App自動(dòng)化/小程序自動(dòng)化,當(dāng)然,著重學(xué)習(xí)接口自動(dòng)化,ui自動(dòng)化要學(xué),但是沒(méi)太大必要深究。
第四,要不要報(bào)名培訓(xùn)班?這個(gè)看你個(gè)人,如果你覺(jué)得自己學(xué)習(xí)理解能力很強(qiáng),本身自己又很自律,同時(shí)學(xué)習(xí)的方向又很明確,那么你當(dāng)然可以不報(bào)名培訓(xùn),多省點(diǎn)錢不香么?
假如你對(duì)自動(dòng)化測(cè)試或者一些編程語(yǔ)言毫無(wú)理解,身邊又沒(méi)有能帶你學(xué)習(xí)的人,那么報(bào)名培訓(xùn)絕對(duì)是一個(gè)快速提升的途徑。
蓋樓之前先打好地基,首先需要學(xué)習(xí)一門語(yǔ)言
在上面我們也提到了,自動(dòng)化要想做得好,必須要學(xué)習(xí)至少一門語(yǔ)言。當(dāng)然至于學(xué)習(xí)語(yǔ)言要到什么程度了?我不可能一直學(xué)下去吧?答案是,會(huì)用就行!
掌握大部分的語(yǔ)法基礎(chǔ),已經(jīng)能夠滿足你的自動(dòng)化的日常需求了,因?yàn)槲覀儗懩_本并沒(méi)有像開發(fā)那么難!
語(yǔ)言你需要學(xué)習(xí),for循環(huán),if判斷,數(shù)據(jù)類型,運(yùn)算符,面向?qū)ο缶幊痰鹊?,不管是java還是python,這些都是需要的,其實(shí)也差不多,會(huì)一門語(yǔ)言,其他的都類似。
語(yǔ)言入門后,正式踏上開始自動(dòng)化成神之路,入門篇Selenium

selenium作為自動(dòng)化的老祖宗,已經(jīng)被玩爛了,基本上只要是做自動(dòng)化的,無(wú)人不知無(wú)人不曉。為什么要先學(xué)習(xí)selenium?
它能幫助你快速理解,自動(dòng)化到底是個(gè)什么東西,并且能直觀的在頁(yè)面上面反饋給你。咱當(dāng)初也是,看著selenium的api,一點(diǎn)一點(diǎn)啃下來(lái)的,幾乎每個(gè)方法都去嘗試了一下。
selenium有1.0 2.0 3.0,建議你學(xué)習(xí)之前,先去了解以下它的歷史,u以及它的運(yùn)行原理,這樣可以勾起你的學(xué)習(xí)興趣。你學(xué)習(xí)selenium,需要去安裝瀏覽器,強(qiáng)烈建議使用Chrome而不是FireFox,前者兼容的更好。
安裝好Chrome,你需要去安裝驅(qū)動(dòng),恭喜你,這時(shí)候你就會(huì)踩到自動(dòng)化的第一個(gè)坑了!大部分原因還是因?yàn)槟愕尿?qū)動(dòng)版本和瀏覽器版本對(duì)不上。等能訪問(wèn)百度后,這里印象很深的su和kw(具體是什么等你學(xué)了就知道了)
你會(huì)再去嘗試各種selenium的方法,去操作瀏覽器,這時(shí)候仿佛打開了新世界的大門,奧!原來(lái)自動(dòng)化測(cè)試是這么個(gè)東西!真神奇!
玩膩了Selenium
等你玩了幾天,或者幾個(gè)星期之后,你好像對(duì)Selenium提不起什么興趣了,腳本也寫的越來(lái)越6,能寫出一些線性的自動(dòng)化腳本了,這個(gè)時(shí)候,有點(diǎn)驕傲自滿,自動(dòng)化不過(guò)如此,就這?
我想說(shuō)的是,不要高興的太早,你僅僅只是剛跨入自動(dòng)化測(cè)試的大門,走了一小步而已。此時(shí),你可以開始嘗試,把項(xiàng)目中一些重復(fù)的操作,寫成腳本去跑,滿滿的成就感有木有!自動(dòng)化的成效初步形成,仿佛你開始懂得如何用自動(dòng)化提升效率了。
開始接觸自動(dòng)化框架unittest/testNG
等你學(xué)會(huì)單元測(cè)試框架unittest/testNG,當(dāng)你學(xué)會(huì)了selenium后,你會(huì)發(fā)現(xiàn)大部分的線性腳本,很難去管理,并且每個(gè)腳本需要去一個(gè)個(gè)run,而且還無(wú)法統(tǒng)計(jì)測(cè)試結(jié)果,這個(gè)時(shí)候,就需要單元測(cè)試框架登場(chǎng)了!
你會(huì)開始學(xué)習(xí),單元測(cè)試框架的用法,如何創(chuàng)建一個(gè)測(cè)試類,如何寫測(cè)試方法,如何把你的腳本寫成測(cè)試用例,如何校驗(yàn)測(cè)試是否通過(guò),用例的執(zhí)行順序怎么去控制,斷言怎么去寫,這些都是你要去探究學(xué)習(xí)的。
不滿足于單元測(cè)試框架的功能
等你腳本寫的很6,用例也會(huì)組織了,然后每次領(lǐng)導(dǎo)告訴你,跑一下測(cè)試,然后把測(cè)試結(jié)果發(fā)給他,要總結(jié)成測(cè)試報(bào)告的形式。
你這時(shí)候,屢次打開你的編輯器,run test,然后刷刷刷的跑完測(cè)試,一條一條的統(tǒng)計(jì)測(cè)試結(jié)果,累得半死,發(fā)給了領(lǐng)導(dǎo)。
第二天領(lǐng)導(dǎo)又說(shuō),下班前你再跑一下測(cè)試,給我份報(bào)告,想死的心都有了。那么你開始去逛百度,逛論壇,想要得到解決方法,那么“框架”一次就會(huì)映入眼簾。
學(xué)習(xí)自動(dòng)化框架
此時(shí),你已經(jīng)開始琢磨如何寫一個(gè)自動(dòng)化框架出來(lái)了,那么說(shuō)明你的自動(dòng)化已經(jīng)開始入門了,并且往著中級(jí)的方向發(fā)展,你開始研究框架的結(jié)構(gòu),發(fā)現(xiàn)有用例管理,日志,測(cè)試報(bào)告,郵件,基礎(chǔ)封裝類等等,還有一種框架的設(shè)計(jì)模式(經(jīng)典PO模式)
你開始對(duì)你的用例進(jìn)行整理,封裝基類,編寫頁(yè)面類,封裝日志,郵件模塊等等,經(jīng)過(guò)了幾個(gè)星期的打磨,你的第一個(gè)自動(dòng)化框架誕生了!
此時(shí)你可以去各個(gè)技術(shù)群去炫耀了,自動(dòng)寫出了一個(gè)自動(dòng)化框架,很多小白也開始吹捧你,叫你大神了。
初始接口測(cè)試
以上結(jié)束了UI自動(dòng)化的學(xué)習(xí),那么下面到接口這邊。一般公司用的都是http接口,那么你就從http協(xié)議開始學(xué)習(xí)了,了解它的結(jié)構(gòu),請(qǐng)求頭,請(qǐng)求參數(shù),請(qǐng)求地址,請(qǐng)求方式等等等,嘗試學(xué)習(xí)一些抓包工具
如fiddler,chales,wireshark或者瀏覽器的開發(fā)者工具等等,去抓包獲取一些接口,慢慢的觀察它的請(qǐng)求構(gòu)造,但是這時(shí)候還是云里霧里,對(duì)接口一知半解。于是下載了一個(gè)接口測(cè)試工具,嘗試把參數(shù)錄入到工具中,手動(dòng)發(fā)起調(diào)用。
當(dāng)工具返回200 code時(shí),奧,原來(lái)是這么回事。好像就是和服務(wù)端來(lái)傳遞和接受數(shù)據(jù)的,然后前端頁(yè)面會(huì)把數(shù)據(jù)展示到前臺(tái)!
嘗試學(xué)習(xí)Request/HttpClient庫(kù)發(fā)起請(qǐng)求
在用完postman后,就會(huì)想到,那么我怎么用代碼去發(fā)起一個(gè)請(qǐng)求呢?這時(shí)候就需要去學(xué)習(xí)這兩個(gè)東西。pip install & import requests后,就開始了你的接口自動(dòng)化之旅。
你嘗試也是把之前ui自動(dòng)化的增刪改查,用接口來(lái)實(shí)現(xiàn),你把抓包的請(qǐng)求參數(shù)拿過(guò)來(lái),一個(gè)一個(gè)方法的調(diào)用,然后一鍵運(yùn)行!一綠三紅!為什么?然后發(fā)現(xiàn)接口返回了401,無(wú)權(quán)限!奧!我沒(méi)有登入啊,那么怎么才能登入呢??
抱著很多的疑惑開始研究,這時(shí)候你需要去了解cookie和token的工作機(jī)制,再配合你的代碼,去緩存cookie,達(dá)到登入。等解決了這個(gè)問(wèn)題,但是接口還是報(bào)錯(cuò)了啊,刪除接口提示我沒(méi)有這條數(shù)據(jù)!
查來(lái)查去,原來(lái)是我那條數(shù)據(jù)已經(jīng)用掉了,那么怎么可以保證我每次錄入的參數(shù)都是新的呢?這時(shí)候就需要去了解接口關(guān)聯(lián),如何把參數(shù)從上個(gè)接口的響應(yīng)提取出來(lái),給下個(gè)接口用。
request/HttpClient結(jié)合unittest/testNG+allure
一樣的,等你學(xué)會(huì)了 request/HttpClient,自然也會(huì)想到用單元測(cè)試框架把他們集成起來(lái),然后又發(fā)現(xiàn)了一個(gè)高大上的allure測(cè)試報(bào)告,再結(jié)合一些日志模塊打印參數(shù),輕車熟路的這么一個(gè)接口框架就出來(lái)了,和之前的差不多!小意思。
嘗試用yaml/Excel管理測(cè)試用例
等你拿自己的框架,重復(fù)枯燥的寫著測(cè)試用例,這時(shí)候你想了,我為啥每次都要request.post,方法都是一樣的,只是數(shù)據(jù)不一樣,為什么我要一直寫代碼呢,很累??!為什么不用一些文件來(lái)讀取測(cè)試數(shù)據(jù),做參數(shù)化呢?
這時(shí)候你開始研究讀寫excel/yaml了,你想把所有的測(cè)試用例都放在文件里管理,就不用每次去寫代碼了,然而事情并沒(méi)有那么簡(jiǎn)單!那么我在文件里如何去處理關(guān)聯(lián)數(shù)據(jù)呢?如何去緩存cookie呢?如何做斷言呢?如果做一些動(dòng)態(tài)的輸入呢?
以上問(wèn)題就留給你們自己去想了。
高級(jí)貨?git?jenkins?docker容器?分布式?
走到這一步,你已經(jīng)寫過(guò)好幾個(gè)框架了,并且基于自己的框架做了優(yōu)化,那么你此時(shí)發(fā)現(xiàn)一個(gè)很嚴(yán)重的問(wèn)題,我的代碼居然只能在我本地運(yùn)行,如果要給別人用,還需要去別人電腦上配置環(huán)境,copy代碼給他。
那么為什么不用一些代碼管理工具去管理我的腳本呢?那么就會(huì)需要去學(xué)習(xí)git,了解如何add commit push推送我的代碼到公司的gitlab,這樣別人也可以使用,那么有了gitlab,我想做一些定時(shí)任務(wù),讓它自動(dòng)執(zhí)行呢?
學(xué)jenkins。再更多,要是我想多個(gè)用例一起跑呢?學(xué)習(xí)selenium grid,docker等等。。
自動(dòng)化頂端之測(cè)試平臺(tái)/工具開發(fā)
等你搭建好公司的自動(dòng)化生態(tài),你還是不滿足,我為什么不把這些東西可視化管理呢?做個(gè)平臺(tái)?管理用例,管理任務(wù),管理測(cè)試報(bào)告?我還可以把公司的一些部署任務(wù)也集成過(guò)來(lái)?
想法很好!此時(shí)的你已經(jīng)不僅僅是一名優(yōu)秀的自動(dòng)化工程師了,已經(jīng)邁向了測(cè)試開發(fā)的道路!開始學(xué)習(xí),了解了測(cè)試框架httprunner,開發(fā)框架django/flask/springboot,懂得了接口開發(fā)的流程,了解了mybatis,shiro,quartz等等,開始學(xué)習(xí)前端
vue/react,懂得了什么是組件開發(fā),父子組件傳值,開始了解很多東西,甚至運(yùn)維方面的知識(shí),開始了解k8s docker,微服務(wù)。。那么你越來(lái)越往著大神的方向去了,希望你還沒(méi)有禿頭,此時(shí)的你可以驕傲的稱自己為一名合格的測(cè)試開發(fā),或者叫全棧開發(fā)了有木有!到此告一段落。
最后
做為一名有8年工作經(jīng)驗(yàn)的測(cè)試人員,接下來(lái)我想分享一下這些年來(lái),我對(duì)于技術(shù)一些歸納和總結(jié),和自己對(duì)作為一名高級(jí)測(cè)試者需要掌握那些技能的筆記分享,希望能幫助到有心在技術(shù)這條道路上一路走到黑的朋友!
下面分享我整理的這一份2023年可能是最全的軟件自動(dòng)化測(cè)試開發(fā)工程師發(fā)展方向知識(shí)架構(gòu)體系圖。
1、Python 編程與測(cè)試開發(fā)技術(shù)

2、Web自動(dòng)化測(cè)試基礎(chǔ)

3、APP自動(dòng)化測(cè)試基礎(chǔ)

4、Postman測(cè)試工具專題

5、接口自動(dòng)化測(cè)試基礎(chǔ)

6、自動(dòng)化框架封裝

7、持續(xù)集成

8、Jmeter 性能測(cè)試

9、APP性能測(cè)試

10、Fiddler 抓包工具的使用

11、TCP/IP協(xié)議詳情

12、計(jì)算機(jī)操作系統(tǒng)

13、Linux 系統(tǒng)操作

14、MySQL 數(shù)據(jù)庫(kù)

15、RobotFramework 自動(dòng)化測(cè)試框架

16、跨平臺(tái)的自動(dòng)化測(cè)試框架

上面就是我為大家整理出來(lái)的一份軟件測(cè)試工程師發(fā)展方向知識(shí)架構(gòu)體系圖。
可以說(shuō),這個(gè)過(guò)程會(huì)讓你痛不欲生,但只要你熬過(guò)去了。以后的生活就輕松很多。正所謂萬(wàn)事開頭難,只要邁出了第一步,你就已經(jīng)成功了一半,等到完成之后再回顧這一段路程的時(shí)候,你肯定會(huì)感慨良多。
如果你不想再體驗(yàn)一次學(xué)習(xí)時(shí)找不到資料,沒(méi)人解答問(wèn)題,堅(jiān)持幾天便放棄的感受的話,在這里我給大家分享一些自動(dòng)化測(cè)試的學(xué)習(xí)資源,希望能給你前進(jìn)的路上帶來(lái)幫助。

軟件測(cè)試面試題合集
我們進(jìn)階學(xué)習(xí)自動(dòng)化測(cè)試必然是為了找到高薪的工作,下面這些面試題是來(lái)自阿里、騰訊、字節(jié)等一線互聯(lián)網(wǎng)大廠最新的面試資料,并且有字節(jié)大佬給出了權(quán)威的解答,刷完這一套面試資料相信大家都能找到滿意的工作。

視頻文檔獲取方式:
這份文檔和視頻資料,對(duì)于想從事【軟件測(cè)試】的朋友來(lái)說(shuō)應(yīng)該是最全面最完整的備戰(zhàn)倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)也陪伴我走過(guò)了最艱難的路程,希望也能幫助到你!以上均可以分享,軟件自動(dòng)化測(cè)試交流群782598560自取即可。