天天看點

selenium之自動化測試成神之路淺談

忽然想談談自動化的學習路徑,因為發現很多人總是急于求成,不懂該如何學習。

在學習或者工作中,難免會遇到很多低級問題,例如寫了一個selenium腳本,卻執行失敗,卻不知道這裡為什麼會報錯?很多都是明顯的文法問題,針對沒有文法基礎,沒學過Java,沒學過Python,就跑來搞selenium,想玩自動化。還是要有一定的正确的方法才能達到較好的效果。

1. 首先是你需要知道的

自動化是用機器代替手工做一些事情。作為一個測試人員,做自動化一般是指接口自動化與UI自動化。(接口也是指對外的部分,通過各種協定,各系統或子產品之間交流的接口。)接口成本效益更高,但不代表UI自動化沒有價值。

可以看看蟲師的了解:​​在做自動化測試之前你需要知道的​​

2. 然後是你應該具備的(程式設計語言基礎)

很多想學自動化測試的同學都忽略了程式設計語言的重要性。很大一部分測試人員不懂程式設計,也不想學程式設計,但如果你想要學習自動化,那程式設計是必須的!

你可能會覺得QTP就不需要程式設計,錄制回放就可以了。這是大錯特錯的,QTP要想玩的溜,VB是必須的。selenium想要玩的溜,Java或者Python是必須的!

很多人沒有學語言,直接上來搞selenium,我認為這是一種本末倒置的行為,沒有語言基礎,想學會自動化,是走到了彎路上,到達目的地時間要更久。

那麼學Java還是Python?這個要取決于你對那種語言更熟悉一些,同時要看測試團隊所使用的語言,如果團隊用Java,那你就學Java。如果你既沒有語言基礎,測試團隊也沒有指定的語言,那麼我建議你學Python,Python相對Java更簡單,學習成本要低一些。

确定了要學習的語言,部落客便推薦一些學習資料:

(1)針對初學者,将《笨辦法學Python》練習前45個章節練習敲一遍,英文版本學習連結​​https://learnpythonthehardway.org/book/​​

中文pdf電子書下載下傳連結:​​我的網盤下載下傳​​ 密碼:v2s8

(2)有一定的語言基礎的,推薦《Python核心程式設計》、《Python基礎教程》、《Python簡明教程》、《Python入門指南》、《Head First Python》。擇一即可

(3)跟廖雪峰的網站學:​​https://www.liaoxuefeng.com/wiki/1016959663602400​​

3. selenium學習,腳本編寫

接下來終于要到學習selenium的時候了,在這個時候,我需要你先去搞清楚幾個問題:

selenium到底是什麼?selenium家族成員,selenium的結構組成。

Selenium 是web自動化測試工具集,包括IDE、Grid、RC(selenium 1.0)、WebDriver(selenium 2.0)等。

Selenium IDE 是firefox浏覽器的一個插件。提供簡單的腳本錄制、編輯與回放功能。

Selenium Grid 是用來對測試腳步做分布式處理。現在已經內建到selenium server 中了。

RC和WebDriver 更多應該把它看成一套規範,在這套規範裡定義用戶端腳步與浏覽器互動的協定。以及元素定位與操作的接口。

selenium支援的語言,浏覽器。selenium操作浏覽器需要依賴的驅動,驅動版本與浏覽器版本的關系(​​selenium自動化測試資源整理(含所有版本chrome、chromedriver、firefox下載下傳連結)​​)。

對于 selenium的基本方法查詢表,定位速查表以及異常清單的了解,也整理了,可以快速查閱:

​​selenium之方法查詢表,定位速查表以及異常清單整理​​

然後還需要再簡單學習一些前端的知識:

HTML(網頁結構,各種标簽,推薦連結:​​https://liudaima.com/a/16.html​​)

Xpath(基本的定位要了解,可以看​​selenium之動态id、class怎麼定位​​、​​selenium之父子、兄弟、相鄰節點定位方式詳解​​、​​selenium之定位以及切換frame(iframe)​​。)

CSS(簡單了解可以看​​基本的CSS了解​​)

JavaScript(簡單了解可以看​​基本JavaScript的了解​​)

firebug,chrome調試工具的使用(參考​​firebug,chrome調試工具的使用​​,超級全)

網絡基礎知識

接下來就是學習selenium了,入門推薦蟲師的《Selenium2自動化測試實戰–基于Python語言》,這本書比較基礎,用來入門再合适不過。

同時不要光看,一定要動手自己寫代碼,找一個網站,先練基礎元素的定位與操作,推薦一個練手網站:​​http://sahitest.com/demo/index.htm​​

基本定位方式熟悉了,就是要對一個正式的網站進行實踐了,你可以用你們公司的網站,也可以用某些門戶網站,比如58、趕集等等,可以用selenium做一個小爬蟲,爬取網站上的一些資訊。這個過程中你會遇到各種坑,各種詭異的事情,不要怕,你一定要相信這些坑,前輩們早已替你趟過了。

4. 執行測試,脫離腳本階段

恭喜你,你能寫腳本了,能寫小爬蟲從網站上爬東西了,接下來,你得真正開始執行測試了。

在這個階段,你必須學習的是Python的doctest和unittest。

學習怎麼用斷言來添加檢查點。

同時,你要學習怎麼将代碼中公共的部分抽出來,把測試和業務分離開,學習PageObject思想。

用testsuite來組織你的測試用例,并學習HTMLTestRunner,下載下傳,學習怎麼輸出報告。

5. 參數化、配置、日志、簡單架構搭建

你已經能夠用unittest組織用例,并輸出報告了。這時候,你需要讓你的測試更像個樣子。

該學習參數化了,學習xlrd、xlwt操作excel檔案,學習xml庫操作xml檔案,來配置你的資料源,實作參數化。

還需要學習configParser、pyyaml子產品,進行配置檔案的操作,将用例中的配置提取出來,寫在配置檔案裡,這樣要修改起來就容易多了。

然後還得學習logging庫,學會怎麼記錄日志,寫你自己的日志子產品,在用例裡加上日志記錄。

到了這兒,基本上,就像個樣子了。但是不能把這些東西放在一起,你就需要搭建一個輕量級的小架構,來分層組織你的代碼與其他檔案,可以參照我的部落格簡單分享一個輕量級自動化測試架構目錄結構設計,跟着我的專欄從零搭建一個自動化測試架構,教你怎麼一步步搭建自己的架構。這下你就能把所有的東西分門别類管理起來,終于有點專業的樣子了。

6. 自動執行,自動發送報告

簡單的架構搭建好了,你也能夠每次執行testsuite便可以得到測試報告了。但這時,你又不滿足了。

是的,你應該讓它自動執行,自動把報告發到你手裡。

你該學習Jenkins了。别喪氣,這個玩意很簡單,你也隻需要簡單的配置便可以讓你的測試任務在Jenkins上跑起來了。

還有,要自動發報告,簡單學習下smtplib子產品吧,它能讓你的報告以郵件的形式發送到團隊成員的手中。

7. 進階貨,平台?分布式?界面?

學學Django(推薦我的學習連結:​​diango​​)、flask、web2py、web.py?挑一個,搞個界面,管理用例,管理測試執行,如何?

再搞搞資料分析,配個資料庫,拿到曆史執行資料,搞出來個報表怎麼樣?

看看request、suds、socket,把接口測試整進測試平台