1. 程式人生 > 實用技巧 >談談python自動化測試學習路線

談談python自動化測試學習路線

一、Python的應用場景

  • Python用於簡單指令碼程式設計,如編寫2048小遊戲或12306的自動搶票軟體;
  • Python用於系統程式設計,如開發系統應用;
  • Python用於開發網路爬蟲;

網路爬蟲的用途是進行資料採集,也就是將網際網路中的資料採集過來。網路爬蟲的難點其實並不在於爬蟲本身,由於網站方為了避免被爬取回採取各種各樣的反爬蟲措施,而如果想要繼續從網站爬取資料就需要解決這些反爬蟲措施,所以網路爬蟲的難點在於反爬的攻克和處理。

1、 Python用於Web開發,如個人部落格、線上教育網站以及論壇等;

2、 Python用於自動化運維,如通過寫Python指令碼實現對於伺服器叢集進行自動化管理;

3、 Python用於網路程式設計,如Socket程式設計等;

4、Python用於資料探勘、機器學習等大資料與人工智慧領域方向的程式開發,如在人工智慧領域;

5、Python用於自動化測試,如UI自動化測試(Python+Selenium等)、介面測試(Python requests等)、效能測試(Python Locust等)、安全性測試(Python Scapy等)、相容性測試(Python+Selenium等)等;

二、自動化測試的那些事

1. 什麼是自動化測試?

首先理清自動化測試的概念,

1、廣義上來講,自動化包括一切通過工具(程式)的方式來代替或輔助手工測試的行為都可以看做自動化,包括效能測試工具(loadrunner、jmeter),或自己所寫的一段程式,用於生成1到100個測試資料。

所以實際上從廣義上來講:效能測試、介面測試等但凡用到測試工具的測試都稱為"自動化測試"

2、狹義上來講,通工具記錄或編寫指令碼的方式模擬手工測試的過程,通過回放或執行指令碼來執行測試用例,從而代替人工對系統的功能進行驗證。

當然,行業中經常說的“自動化測試”及企業中要求的“自動化測試”大多都是“基於產品或專案UI層的自動化測試”。對於效能測試,介面測試一般不把它們歸納為自動化測試的範疇。

2. 為什麼要做自動化測試?

根據51testing的《中國軟體測試從業人員調查報告》,手工測試佔到的89% ,相對開發來說,測試的門檻底,薪資普遍較底,所要求的知識面雖然有一定廣度,但缺乏深度。這是測試的普遍現狀。

正因為手功測試人門檻不高,使大量的畢業生,甚至是非專業人員湧入這個行業。從而增加了這個行業的激烈競爭。對於工作幾年扔處於手工測試的人員來說都會有強列的危機感。由於工作的技術含量不高,薪資的漲幅遇到瓶頸,另一方面受到新進入者的威脅,同樣的工作公司花5K招來的人就可以做,那麼就不會花8K 的招。

這個問題本不應該出現討論技術的話題中,但他的確是大多測試人員不得不面對的一個問題。所以,從測試人員自身的發展來說,我其實非常需要通過自動化技術來增加自己有競爭力。
  
自動化測試最實在的優勢在於——工作好找:有一個測試工程師(並不是本人)發現一個有趣的現象,她申請過的幾乎所有測試職位,在招聘時都需要自動化測試經驗。但當她開始工作後,就發現這些公司都試圖做自動化測試,但是結果大多不怎麼地。不過,儘管她參與的都是一些悲劇的專案,不過她總能把這些悲劇包裝成喜劇以應對下一次面試。

3、所以呢,既然自動化測試有那麼多優勢,為什麼還有那麼多專案做失敗了呢?

我個人有個推論:

1、公司自動化測試人員能力不夠

2、專案難度太大,功能不穩定,需求變化太快,就盲目啟動自動化,導致自動化指令碼開發頻繁改變,更不上需求變化的速度,最終以失敗告終

3、專案過於複雜,大部分功能無法實現自動化,僅僅只有小部分功能實現自動化,這個對於專案意義不大。

4、公司人員流動大,導致自動化指令碼維護的難度加大,最終夭折。

當然自動化測試還有個優勢:自動化測試可以將產品的知識固化到指令碼中,以降低測試人員流動對專案造成的影響。但是這個優勢的前提是,這些指令碼易於維護,這就需要一些必要的文件,這又是另一個議題了。

4、什麼專案適合做自動化測試?

假如你已經決定要學習自動化測試了,如何學習是要面臨的下一個問題?這個問題以被測試產品為出發點進行分析,假如你所學的技術不能得到應用(驗證),將會使你的學習過程寸步難行。

首先考考慮產品是否適合做自動化測試。這方法比較普遍的共識是從三個方面進行權衡。

1、軟體需求變動不頻繁

測試指令碼的穩定性決定了自動化測試的維護成本。如果軟體需求變動過於頻繁,測試人員需要根據變動的需求來更新測試用例以及相關的測試指令碼,而指令碼的維護本身就是一個程式碼開發的過程,需要修改、除錯,必要的時候還要修改自動化測試的框架,如果所花費的成本不低於利用其節省的測試成本,那麼自動化測試便是失敗的。

專案中的某些模組相對穩定,而某些模組需求變動性很大。我們便可對相對穩定的模組進行自動化測試,而變動較大的仍是用手工測試。

2、專案週期較長

由於自動化測試需求的確定、自動化測試框架的設計、測試指令碼的編寫與除錯均需要相當長的時間來完成。這樣的過程本身就是一個測試軟體的開發過程,需要較長的時間來完成。如果專案的週期比較短,沒有足夠的時間去支援這樣一個過程,那麼自動化測試便成為笑談。

3、自動化測試指令碼可重複使用

自動化測試指令碼的重複使用要從三個方面來考量,一方面所測試的專案之間是否很大的差異性(如C/S系統和B/S系統的差異);所選擇的測試工具是否適應這種差異;最後,測試人員是否有能力開發出適應這種差異的自動化測試框架。

OK!講明瞭上面那些事,我們現在可以學習自動化測試了

三、主流自動化測試框架

桌面程式的工具有:QTP、 AutoRunner

web應用的工具有:QTP、AutoRunner、Robot Framework、watir、selenium

手機App自動化測試:後續再分享

由於B/S架構的諸多優勢,早幾年前大量C/S架構的應用轉為B/S結構。從而也推動了web開發與測試技術的發展。這也導致QTP框架的落寞,Selenium框架及Robot Framework框架的大量興起。

  • 假如,被測試有產品是C/S架構的,那麼推薦QTP
  • 如果,被測產品是B/S 結構,那麼推薦selenium 為什麼不是QTP 或其它工具?因為selenium
    對B/S應用支援很好,更重要的一點,它支援多語言的開發,真正的試用selenium
    ,你所要掌握的不僅僅是一個工具而已,你還需要學習一門語言。我為什麼要選擇selenium?

目前市面主流自動化測試框架:

  • RFS: Robot Framework + Selenium
  • Selenium+unittest框架

那你說我們學什麼???

自然選擇主流框架,假如你決定使用selenium 了之後,你又面臨了一個新的問題,選擇一門語言。selenium 是支援java、python、ruby、php、C#、JavaScript 。

  • 從語言易學性來講,首選ruby ,python

  • 從語言應用廣度來講,首選python,java、C#、php、

  • 從語言相關測試技術成熟度(及 資料)來講:python ,java,ruby ,

    或者你可以考慮整個技術團隊主流用什麼語言,然後選擇相應的語言。

    我們在這裡自然選擇目前市面上最火,使用範圍廣,技術成熟度大的Python講解

四、Python自動化測試學習路線

  • 第一步:先學python ------- python不過關,別談自動化。
  • 第二步:Selenium框架
  • 第三步:unittest框架
  • 第四步:專案
  • 第五步:Robot Framwork框架 如果只學習Robot
    Framwork,通過這個來做自動化,別以為不要學習Selenium跟python了, 因為Robot
    Framework中的關鍵字可能不夠用,不能滿足你們的需求,那麼我們需要自定義關鍵字,這個時候就必須自己得通過python+selenium來編寫了。

在 欄目一中已經說明了python的應用王國了,用途很廣,我們做自動化測試具體要學習那些python內容 【附圖】 如下:

在這裡插入圖片描述

在這裡插入圖片描述
上面是我收集的一些視訊資源,在這個過程中幫到了我很多。如果你不想再體驗一次自學時找不到資料,沒人解答問題,堅持幾天便放棄的感受的話,可以加入我們扣扣群【313782132 】,裡面有各種軟體測試資源和技術討論。

軟體測試是IT相關行業中最容易入門的學科~不需要開發人員燒腦的邏輯思維、不需要運維人員24小時的隨時待命,需要的是細心認真的態度和IT相關知識點廣度的瞭解,每個測試人員從入行到成為專業大牛的成長路線可劃分為:軟體測試、自動化測試、測試開發工程師 3個階段。

如果你不想再體驗一次自學時找不到資料,沒人解答問題,堅持幾天便放棄的感受的話,可以加我們的軟體測試交流群,裡面有各種軟體測試資料和技術交流。