Python-webUI 自動化框架搭建

在講解之前先提一個問題:爲什麼要做自動化測試?

    在公司當中所做的項目基本都是手工測試,雖然也有將手工測試用例轉化爲自動化測試用例過,但是個人的認識是自動化測試是用在爲產品後期維護進行測試的目的,以遍快速持續性的自動化檢測項目中的各個功能的穩定。

    想要做這兩樣測試的話必須軟件的界面都很成熟了,頁面功能變動不大了。產品後期交付界面比較穩定不會做大的調整。

    軟件自動化測試是測試工作的一部分,是對手工測試的一種補充。自動化測試是相對手工測試而存在的,主要是通過所開發的軟件測試工具、腳本來實現,具有良好的可操作性、可重複性和高效率等特點。

自動化測試主要優點:

(1)避免重複工作:對於功能已經完整和成熟的軟件,每發佈一個新的版本,其中大部分功能和界面都和上一個版本相似或完全相同,這部分功能特別適合於自動化測試,從而可以讓測試達到測試每個特徵的目的。

(2)提高測試效率:版本的發佈週期往往比較短,也就是開發週期只有短短的幾個月,而在測試期間是每天 / 每 2 天都要發佈一個版本供測試人員測試,一個系統的功能點有幾千個上萬個,人工測試是非常的耗時和繁瑣,這樣必然會使測試效率低下。

(3)保證每次測試的一致性和可重複性:由於每次自動化測試運行的腳本是相同的,所以每次執行的測試具有一致性,人是很難做到的。由於自動化測試的一致性,很容易發現被測軟件的任何改變。

(4)更好的利用資源--周未 / 晚上。理想的自動化測試能夠按計劃完全自動的運行,在開發人員和測試人員不可能實行三班倒的情況下, 自動化測試可以勝任這個任務, 完全可以在週末和晚上執行測試。這樣充分的利用了公司的資源,也避免了開發和測試之間的等待。

(5)解決測試與開發之間的矛盾:通常在開發的末期,進入集成測試階段,由於每發佈一個版本的初期,測試系統的錯誤比較少,這時開發人員在等待測試人員測試出錯誤的時間。事實上在迭代週期很短的開發模式中,存在更多的矛盾,但自動化測試可以解決其中的主要矛盾。

2. 自動化測試的缺點:

(1)不能取代手工測試。

(2)手工測試比自動測試發現的缺陷更多,自動化測試不容易發現新的 BUG。

(3)對測試質量的依賴性極大(理解:自動化測試腳本的正常運轉前,需要先經過功能測試的通過)。

(4)自動化測試不能提高有效性(理解:任何功能的改動(新增功能或刪除功能)都可能會對腳本造成影響,需要不斷的進行維護)。

自動化測試框架搭建:

我用的框架是一套底層語言基於 python 的框架,主要架構包:python+pycharm+chromedriver+

selenium+unittest+BSTestRunner(HTMLTestRunner )。框架環境搭建的話自行百度,這裏就不在介紹。

JDK**:**下載安裝 jdk 工具包,Java Development Kit (JDK) 是 Sun 公司(已被 Oracle 收購)針對 Java 開發員的軟件開發工具包。

安裝配置:系統變量→新建 JAVA_HOME 變量 。變量值填寫 jdk 的安裝目錄(E:\Java\jdk1.7.0) 根據自己實際安裝路徑配置。

python**:**“python 是編程語言,與平時說的 c 語言、Java、php 等語言相似。python 是面向對象的編程語言

安裝配置:下載:https://blog.csdn.net/Pgwsunny/article/details/74246831

下載對應的 32 位或者 64 位系統的文件,直接雙擊一鍵安裝就行,記得修改安裝路徑。

pycharm**:**pycharm 是爲 Python 編程語言專門打造的一款 IDE(集成開發環境)。在 pycharm 中編寫 Python 程序,最終還是要有 Python 解釋器的支持,兩者配合工作。

安裝配置:PyCharm 的下載地址:http://www.jetbrains.com/pycharm/download/#section=windows

professional 表示專業版,community 是社區版,推薦安裝社區版,因爲是免費使用的。

1、當下載好以後,點擊一鍵安裝,記得修改安裝路徑。

chromedriver**:**UI 自動化測試是要實際跑瀏覽器的,但是測試工具怎麼與瀏覽器去交互呢?就需要一些適配器建立測試工具與瀏覽器之間的連接。這就是 chromedriver 的作用。注:chromedriver 的版本要與谷歌瀏覽器的版本號一致。以及其他主流瀏覽器的 driver(geckodriver、IEdriverserver),使用不同瀏覽器測試時都要安裝對應的 driver 驅動。

安裝配置:

谷歌驅動下載地址:http://chromedriver.storage.googleapis.com/index.html

火狐驅動下載地址:https://github.com/mozilla/geckodriver/releases

IE 驅動下載地址://selenium-release.storage.googleapis.com/index.html

1、下載 Chromedriver 解壓後,將 chromedriver.exe 放到 python 的 Scripts 安裝目錄下。

2、再將 Chrome 驅動的安裝路徑加入到 Path 環境變量中

selenium**:**Selenium 是一個用於 Web 應用程序測試的工具包。Selenium 測試是直接運行在瀏覽器中,就像真正的用戶在操作一樣。通過編寫模仿用戶操作的 Selenium 測試腳本,可以從終端用戶的角度來測試應用程序。通過在不同瀏覽器中運行測試,更容易發現瀏覽器的不兼容性。Selenium 的核心,也稱 _browser bot_,是用 JavaScript 編寫的。這使得測試腳本可以在受支持的瀏覽器中運行。browser bot 負責執行從測試腳本接收到的命令。

unittest**:**在 python 中,unittest 是 Python 中的單元測試框架。它擁有支持共享搭建、自動測試、在測試中暫停代碼、將不同測試迭代成一組。而在我們自動化測試中 unittest 可以幫助我們實現數據參數化,窗口在執行出錯的時候自動截屏,自動生成測試報告等相關操作。

BSTestRunner(HTMLTestRunner ):HTMLTestRunner 是 Python 標準庫的 unittest 模塊的一個擴展,它可以生成 HTML 的測試報告,BSTestRunner 也是用於生成生成 HTML 的測試報告。

接下來說一下我寫的這套架構腳本的各個依賴包的應用:

先說一下我的目錄結構吧!

下面我就直接用一張截圖來描述了,就不一一去介紹目錄的結構及各個模塊文件了。

編寫自動化測試用例原則:

1、一個腳本是一個完整的場景,從用戶登陸操作到用戶退出系統關閉瀏覽器。

2、一個腳本腳本只驗證一個功能點,不要試圖用戶登陸系統後把所有的功能都進行驗證再退出系統

3、儘量只做功能中正向邏輯的驗證,不要考慮太多逆向邏輯的驗證,逆向邏輯的情況很多(例如手號輸錯有很多種情況) ,驗證一方面比較複雜,需要編寫大量的腳本,另一方面自動化腳本本身比較脆弱,很多非正常的邏輯的驗證能力不強。(我們儘量遵循用戶正常使用原則編寫腳本即可)

4、腳本之間不要產生關聯性,也就是說編寫的每一個腳本都是獨立的,不能依賴或影響其他腳本。

5、如果對數據進行了修改,需要對數據進行還原。

6、在整個腳本中只對驗證點進行驗證,不要對整個腳本每一步都做驗證。

需要獲取自動化腳本源碼的朋友私聊昊哥領取!!!

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/Rgw3RaR9wIFl6Nqk3g4iCA