天天看點

以往經曆、踩過的坑—如何從小白進階為大神

做了幾年自動化測試,突然想就這個問題,總結一下自己以往的學習經曆,踩過的坑,做一些深入的探讨。

抛開疑問,隻做學術探讨

這次我們抛開所有的疑惑,比如自動化測試到底有什麼用?自動化真的能提升效率麼?學了自動化能漲多少工資等等,以上的話題,我這次将不再論述,這幾個問題也是平時讨論的比較多的問題。

針對以上的問題,我做一個總結,能漲工資,能多賺錢的技術,就值得我們去學!既然自動化現如今發展的這麼火,自然有它存在的價值。

想必每一個大神,都是從小白一步步走上來的。當然呢,我很能了解小白的想法,因為平時經常和一些剛入門自動化測試的同行交流,也很深入的了解到他們的一些困惑。

大部分小白想的無非是以下幾點問題:

1.自動化測試好學嗎?

2.不學/不寫代碼能做自動化測試嗎?

3.怎樣學習自動化測試?

4.學自動化測試要先學習哪個方向?學ui自動化?還是接口自動化?好像app自動化也比較火?要麼再來個小程式自動化?

5.我沒有代碼基礎,工作都是點點點,要不要報教育訓練班?

6.我需要學習什麼語言?java還是python?

  …等等

我來針對以上的問題,說一些自己的看法:

首先,自動化測試,很好學!但是要記住,一定要明确學習的方向,不要劍走偏鋒,白花力氣。

第一,不寫代碼當然可以做自動化測試,但是個人建議還是學習一門語言,至于學習什麼語言的話,很簡單,不用糾結,第一看你是否有程式設計基礎,沒有選py,有的話選javapy都可

第二需要看你們的開發用的什麼語言,和開發用同一門語言能在學習自動化測試的同時,降低你和開發之間溝通的門檻,提升你在公司的話語權。

第三,學習哪個方向?我建議:webui自動化=》接口自動化=》app自動化/小程式自動化,當然,着重學習接口自動化,ui自動化要學,但是沒太大必要深究。

第四,要不要報名教育訓練班?這個看你個人,如果你覺得自己學習了解能力很強,本身自己又很自律,同時學習的方向又很明确,那麼你當然可以不報名教育訓練,多省點錢不香麼?

假如你對自動化測試或者一些程式設計語言毫無了解,身邊又沒有能帶你學習的人,那麼報名教育訓練絕對是一個快速提升的途徑。

蓋樓之前先打好地基,首先需要學習一門語言

在上面我們也提到了,自動化要想做得好,必須要學習至少一門語言。當然至于學習語言要到什麼程度了?我不可能一直學下去吧?答案是,會用就行!

掌握大部分的文法基礎,已經能夠滿足你的自動化的日常需求了,因為我們寫腳本并沒有像開發那麼難!

語言你需要學習,for循環,if判斷,資料類型,運算符,面向對象程式設計等等,不管是java還是py,這些都是需要的,其實也差不多,會一門語言,其他的都類似。

語言入門後,正式踏上開始自動化成神之路,入門篇selenium

selenium作為自動化的老祖宗,已經被玩爛了,基本上隻要是做自動化的,無人不知無人不曉。為什麼要先學習selenium?

它能幫助你快速了解,自動化到底是個什麼東西,并且能直覺的在頁面上面回報給你。咱當初也是,看着selenium的api,一點一點啃下來的,幾乎每個方法都去嘗試了一下。

selenium有1.02.03.0,建議你學習之前,先去了解以下它的曆史,以及它的運作原理,這樣可以勾起你的學習興趣。你學習selenium,需要去安裝浏覽器,強烈建議使用chrome而不是firefox,前者相容的更好。

安裝好chrome,你需要去安裝驅動,恭喜你,這時候你就會踩到自動化的第一個坑了!大部分原因還是因為你的驅動版本和浏覽器版本對不上。等能通路百度後,這裡印象很深的su和kw(具體是什麼等你學了就知道了)

你會再去嘗試各種selenium的方法,去操作浏覽器,這時候仿佛打開了新世界的大門,奧!原來自動化測試是這麼個東西!真神奇!

等你玩了幾天,或者幾個星期之後,你好像對selenium提不起什麼興趣了,腳本也寫的越來越6,能寫出一些線性的自動化腳本了,這個時候,有點驕傲自滿,自動化不過如此,就這?

我想說的是,不要高興的太早,你僅僅隻是剛跨入自動化測試的大門,走了一小步而已。此時,你可以開始嘗試,把項目中一些重複的操作,寫成腳本去跑,滿滿的成就感有木有!自動化的成效初步形成,仿佛你開始懂得如何用自動化提升效率了。

等你學會單元測試架構unittest/testng,當你學會了selenium後,你會發現大部分的線性腳本,很難去管理,并且每個腳本需要去一個個run,而且還無法統計測試結果,這個時候,就需要單元測試架構登場了!

你會開始學習,單元測試架構的用法,如何建立一個測試類,如何寫測試方法,如何把你的腳本寫成測試用例,如何校驗測試是否通過,用例的執行順序怎麼去控制,斷言怎麼去寫,這些都是你要去探究學習的。

不滿足于單元測試架構的功能

等你腳本寫的很6,用例也會組織了,然後每次上司告訴你,跑一下測試,然後把測試結果發給他,要總結成測試報告的形式。

你這時候,屢次打開你的編輯器,runtest,然後刷刷刷的跑完測試,一條一條的統計測試結果,累得半死,發給了上司。

第二天上司又說,下班前你再跑一下測試,給我份報告,想死的心都有了。那麼你開始去逛百度,逛論壇,想要得到解決方法,那麼“架構”一次就會映入眼簾。

此時,你已經開始琢磨如何寫一個自動化架構出來了,那麼說明你的自動化已經開始入門了,并且往着中級的方向發展,你開始研究架構的結構,發現有用例管理,日志,測試報告,郵件,基礎封裝類等等,還有一種架構的設計模式(經典po模式)

你開始對你的用例進行整理,封裝基類,編寫頁面類,封裝日志,郵件子產品等等,經過了幾個星期的打磨,你的第一個自動化架構誕生了!

此時你可以去各個技術群去炫耀了,自動寫出了一個自動化架構,很多小白也開始吹捧你,叫你大神了。

以上結束了ui自動化的學習,那麼下面到接口這邊。一般公司用的都是http接口,那麼你就從http協定開始學習了,了解它的結構,請求頭,請求參數,請求位址,請求方式等等等,嘗試學習一些抓包工具

如fiddler,chales,wireshark或者浏覽器的開發者工具等等,去抓包擷取一些接口,慢慢的觀察它的請求構造,但是這時候還是雲裡霧裡,對接口一知半解。于是下載下傳了一個接口測試工具,嘗試把參數錄入到工具中,手動發起調用。

當工具傳回200code時,奧,原來是這麼回事。好像就是和服務端來傳遞和接受資料的,然後前端頁面會把資料展示到前台!

嘗試學習request/httpclient庫發起請求

在用完postman後,就會想到,那麼我怎麼用代碼去發起一個請求呢?這時候就需要去學習這兩個東西。pipinstall&importrequests後,就開始了你的接口自動化之旅。

你嘗試也是把之前ui自動化的增删改查,用接口來實作,你把抓包的請求參數拿過來,一個一個方法的調用,然後一鍵運作!一綠三紅!為什麼?然後發現接口傳回了401,無權限!奧!我沒有登入啊,那麼怎麼才能登入呢??

抱着很多的疑惑開始研究,這時候你需要去了解cookie和token的工作機制,再配合你的代碼,去緩存cookie,達到登入。等解決了這個問題,但是接口還是報錯了啊,删除接口提示我沒有這條資料!

查來查去,原來是我那條資料已經用掉了,那麼怎麼可以保證我每次錄入的參數都是新的呢?這時候就需要去了解接口關聯,如何把參數從上個接口的響應提取出來,給下個接口用。

一樣的,等你學會了request/httpclient,自然也會想到用單元測試架構把他們內建起來,然後又發現了一個高大上的allure測試報告,再結合一些日志子產品列印參數,輕車熟路的這麼一個接口架構就出來了,和之前的差不多!小意思。

等你拿自己的架構,重複枯燥的寫着測試用例,這時候你想了,我為啥每次都要request.post,方法都是一樣的,隻是資料不一樣,為什麼我要一直寫代碼呢,很累啊!為什麼不用一些檔案來讀取測試資料,做參數化呢?

這時候你開始研究讀寫excel/yaml了,你想把所有的測試用例都放在檔案裡管理,就不用每次去寫代碼了,然而事情并沒有那麼簡單!那麼我在檔案裡如何去處理關聯資料呢?如何去緩存cookie呢?如何做斷言呢?如果做一些動态的輸入呢?

以上問題就留給你們自己去想了。

走到這一步,你已經寫過好幾個架構了,并且基于自己的架構做了優化,那麼你此時發現一個很嚴重的問題,我的代碼居然隻能在我本地運作,如果要給别人用,還需要去别人電腦上配置環境,copy代碼給他。

那麼為什麼不用一些代碼管理工具去管理我的腳本呢?那麼就會需要去學習git,了解如何addcommitpush推送我的代碼到公司的gitlab,這樣别人也可以使用,那麼有了gitlab,我想做一些定時任務,讓它自動執行呢?

學jenkins。再更多,要是我想多個用例一起跑呢?學習seleniumgrid,docker等等。。

等你搭建好公司的自動化生态,你還是不滿足,我為什麼不把這些東西可視化管理呢?做個平台?管理用例,管理任務,管理測試報告?我還可以把公司的一些部署任務也內建過來?

想法很好!此時的你已經不僅僅是一名優秀的自動化工程師了,已經邁向了測試開發的道路!開始學習,了解了測試架構httprunner,開發架構django/flask/springboot,懂得了接口開發的流程,了解了mybatis,shiro,quartz等等,開始學習前端

vue/react,懂得了什麼是元件開發,父子元件傳值,開始了解很多東西,甚至運維方面的知識,開始了解k8sdocker,微服務。。那麼你越來越往着大神的方向去了,希望你還沒有秃頭,此時的你可以驕傲的稱自己為一名合格的測試開發,或者叫全棧開發了有木有!到此告一段落。

技術行業,一定要提升技術功底,豐富自動化項目實戰經驗,這對于你未來幾年職業規劃,以及測試技術掌握的深度非常有幫助。

金九銀十面試季,跳槽季,整理面試題已經成了我多年的習慣!下面有我近幾年的收集和整理,整體是圍繞着【軟體測試】來進行整理的,主體内容包含:python自動化測試專屬視訊、python自動化詳細資料、全套面試題等知識内容。

以往經曆、踩過的坑—如何從小白進階為大神

對于軟體測試的的朋友來說應該是最全面最完整的面試備戰倉庫,為了更好地整理每個子產品,我也參考了很多網上的優質博文和項目,力求不漏掉每一個知識點,很多朋友靠着這些内容進行複習,拿到了batj等大廠的offer,這個倉庫也已經幫助了很多的軟體測試的學習者,希望也能幫助到你!

願你我相遇,皆有所獲! 歡迎關注微信公衆号:【傷心的辣條】 免費領取一份216頁軟體測試工程師面試寶典文檔資料。以及相對應的視訊學習教程免費分享!

以往經曆、踩過的坑—如何從小白進階為大神