python自動化框架構思及相關技術的學習
Python selenium —— selenium與自動化測試成神之路
忽然想談談自動化的學習路徑,因為發現很多人總是急於求成,不懂該如何學習。
在群裡總是會遇到很多人問低階問題,寫了一個selenium指令碼,卻執行失敗,跑到群裡來問,大神,這裡為什麼會報錯?很多都是明顯的語法問題,一問方知,今天剛剛學selenium,之前也沒有語法基礎,沒學過Java,沒學過Python,就跑來搞selenium,想玩自動化。每當看到這樣的同學,總是很想吐槽。今天博主也不是想要吐槽,只是想跟大家談談我認為的正確的自動化學習路徑。
1. 首先要搞明白幾個問題
本來想寫一些東西,但忽然發現蟲師已經對這個問題總結很到位了,所以我也就不想多說什麼,放上鍊接,學自動化測試之前,先去看看吧
自動化是用機器代替手工做一些事情。作為一個測試人員,做自動化一般是指介面自動化與UI自動化。(介面也是指對外的部分,通過各種協議,各系統或模組之間交流的介面。)介面價效比更高,但不代表UI自動化沒有價值。
2. 程式語言基礎
很多想學自動化測試的同學都忽略了程式語言的重要性。很大一部分測試人員不懂程式設計,也不想學程式設計,但如果你想要學習自動化,那程式設計是必須的!
你可能會覺得QTP就不需要程式設計,錄製回放就可以了。這是大錯特錯的,QTP要想玩的溜,VB是必須的。selenium想要玩的溜,Java或者Python是必須的!(selenium並不侷限於這兩種語言,但是你用其他語言玩,別怪我沒有提醒你,你會遇到很多麻煩,而且還找不到人能跟你交流,你的成長速度會慢得多)
很多人沒有學語言,直接上來搞selenium,我認為這是一種本末倒置的行為,沒有語言基礎,想學會自動化,是走到了彎路上,到達目的地時間要更久。
那麼學Java還是Python?這個要取決於你對那種語言更熟悉一些,同時要看測試團隊所使用的語言,如果團隊用Java,那你就學Java。如果你既沒有語言基礎,測試團隊也沒有指定的語言,那麼我建議你學Python,Python相對Java更簡單,學習成本要低一些。
確定了要學習的語言,博主便推薦一些學習資料:
如果你一點語言基礎都沒有,那麼我推薦你先把《笨辦法學Python》中的前45個練習照著敲一遍。(注意:必須得一個個手敲,程式碼學習重在實踐
如果你有學過一門語言,瞭解基本的資料結構和判斷、迴圈之類的,或者你剛剛完成步驟0的練習,我推薦你這個階段學習Python語言基礎。這個階段有好幾本好書,當然,你只需要其中的一本就足夠了:《Python核心程式設計》、《Python基礎教程》、《Python簡明教程》、《Python入門指南》、《Head First Python》等,這個你去百度便能百度到很多,去京東淘寶逛一逛,看銷量最多的也便可知。當然,我推薦你《Python核心程式設計》,建議買本紙質書。至於其中的內容,你學習完成主幹部分即可,最後面的幾章關於網路程式設計、執行緒與程序的,可以先不看,當遇到這樣的問題,可以再來補充這方面的知識。
跟著廖雪峰的網站學也是可以的 廖雪峰Python教程
好了,這兩個階段完成之後,我認為你做好了學習selenium的準備,可以開始學習selenium了。
3. selenium學習,指令碼編寫
接下來終於要到學習selenium的時候了,在這個時候,我需要你先去搞清楚幾個問題:
- selenium到底是什麼?
- selenium家族成員,selenium的結構組成。
- selenium支援的語言,瀏覽器。selenium操作瀏覽器需要依賴的驅動,驅動版本與瀏覽器版本的關係。
然後還需要再簡單學習一些前端的知識:
- HTML(網頁結構,各種標籤)
- Xpath(基本的定位要了解,軸的內容可以在有一定基礎之後再學)
- CSS(簡單瞭解)
- JavaScript(簡單瞭解)
- Firebug(開發者工具)的使用(這個經常會用到,必須熟悉,可在selenium學習中逐漸深入)
- 網路基礎知識
接下來就是學習selenium了,入門推薦蟲師的《Selenium2自動化測試實戰–基於Python語言》,這本書比較基礎,用來入門再合適不過,期間也可混雜著看一些部落格,比如我的部落格^_^,會給你不少幫助。
同時不要光看,一定要動手自己寫程式碼,找一個網站,先練基礎元素的定位與操作,推薦一個練手網站:http://sahitest.com/demo/index.htm
基本定位方式熟悉了,就是要對一個正式的網站進行實踐了,你可以用你們公司的網站,也可以用某些入口網站,比如58、趕集等等,可以用selenium做一個小爬蟲,爬取網站上的一些資訊。這個過程中你會遇到各種坑,各種詭異的事情,不要怕,你一定要相信這些坑,前輩們早已替你趟過了。
一定要善用百度、Google,搞IT的,不會翻牆,不會百度,簡直沒有資格叫自己是XX工程師,Google的重要性我不想再多言,起碼GitHub部落格,百度的爬蟲是爬不到的
4. 執行測試,脫離指令碼階段
恭喜你,你能寫指令碼了,能寫小爬蟲從網站上爬東西了,接下來,你得真正開始執行測試了。
在這個階段,你必須學習的是Python的doctest和unittest。
學習怎麼用斷言來新增檢查點。
同時,你要學習怎麼將程式碼中公共的部分抽出來,把測試和業務分離開,學習PageObject思想。
用testsuite來組織你的測試用例,並學習HTMLTestRunner,下載,學習怎麼輸出報告。
5. 引數化、配置、日誌、簡單框架搭建
你已經能夠用unittest組織用例,並輸出報告了。這時候,你需要讓你的測試更像個樣子。
該學習引數化了,學習xlrd、xlwt操作excel檔案,學習xml庫操作xml檔案,來配置你的資料來源,實現引數化。
還需要學習configParser、pyyaml模組,進行配置檔案的操作,將用例中的配置提取出來,寫在配置檔案裡,這樣要修改起來就容易多了。
然後還得學習logging庫,學會怎麼記錄日誌,寫你自己的日誌模組,在用例里加上日誌記錄。
到了這兒,基本上,就像個樣子了。但是不能把這些東西放在一起,你就需要搭建一個輕量級的小框架,來分層組織你的程式碼與其他檔案,可以參照我的部落格簡單分享一個輕量級自動化測試框架目錄結構設計,還有博主的專欄 從零搭建一個自動化測試框架,教你怎麼一步步搭建自己的框架。這下你就能把所有的東西分門別類管理起來,終於有點專業的樣子了。
6. 自動執行,自動傳送報告
簡單的框架搭建好了,你也能夠每次執行testsuite便可以得到測試報告了。但這時,你又不滿足了。
是的,你應該讓它自動執行,自動把報告發到你手裡(或者你老大手裡,當然,未成熟前不建議這麼做)。
你該學習Jenkins了。別喪氣,這個玩意很簡單,你也只需要簡單的配置便可以讓你的測試任務在Jenkins上跑起來了。
還有,要自動發報告,簡單學習下smtplib模組吧,它能讓你的報告以郵件的形式傳送到團隊成員的手中。
7. 高階貨,平臺?分散式?介面?
是不是很有成就感了,QQ群裡也有了很多人叫你大神。滿滿的虛榮心有木有?
不過,你就滿足於這些嗎?
當然不,還有更多想要做的。
UI的用例執行太慢了,整個分散式的執行怎麼樣?selenium的grid還沒有研究呢。我可以用一臺機器控制,讓多臺機器同時執行我的測試,想想簡直碉堡了對不對。
還能怎麼玩?搞個介面怎麼樣?學學Django、flask、web2py、web.py?挑一個,搞個介面,管理用例,管理測試執行,如何?
再搞搞資料分析,配個數據庫,拿到歷史執行資料,搞出來個報表怎麼樣?
看看request、suds、socket,把介面測試整進測試平臺,怎麼樣?
單元測試?嘿嘿嘿,小case。
再整合個性能測試工具,一塊搞到平臺裡去怎麼樣?
8. 現在,大神,可以拿你的平臺去賣錢了
恭喜你,你絕對已經成神了。
你不僅僅是一個自動化測試工程師了,你已經是一個全棧開發工程師了。還有什麼能難得到你的?
當然,別嘲笑我,博主也是在慢慢往上爬,這些也只是我個人的一些腦洞,一些想法,如果你也有什麼想法,可以和博主多交流交流。
謹以此文,向廣大的初學者指點一條博主認為不錯的路徑,具體你的學習方式、學習過程,見仁見智吧。