摘要:一什么是是一個基于瀏覽器的自動化工具,她提供了一種跨平臺跨瀏覽器的端到端的自動化解決方案。模塊主要用來記錄用例執行情況,以便于高效的調查用例失敗信息以及追蹤用例執行情況。測試用例倉庫用例倉庫主要用來組織自動化測試用例。
一、什么是Selenium?
Selenium是一個基于瀏覽器的自動化工具,她提供了一種跨平臺、跨瀏覽器的端到端的web自動化解決方案。Selenium主要包括三部分:Selenium IDE、Selenium WebDriver 和Selenium Grid:
? 1、Selenium IDE:Firefox的一個擴展,它可以進行錄制回放,并可以把錄制的操作以多種語言(例如java,python等)的形式導出成測試用例。
? 2、Selenium WebDriver:提供Web自動化所需的API,主要用作瀏覽器控制、頁面元素選擇和調試。不同的瀏覽器需要不同的WebDriver。
? 3、Selenium Grid:提供了在不同機器的不同瀏覽器上運行selenium測試的能力
本文使用Python結合Selenium WebDriver庫進行自動化測試框架的搭建。
二、自動化測試框架
一個典型的自動化測試框架一般包括用例管理模塊、自動化執行控制器、報表生成模塊和log模塊,這些模塊相輔相成。
接下來介紹一下各模塊的邏輯單元:
1、用例管理模塊
用例管理模塊包括新增、修改、刪除等操作單元,這些單元又會涉及到用例書寫模式,測試數據庫的管理、可復用庫等。
2、自動化控制器
控制器是自動化用例執行的組織模塊,主要是負責以什么方法執行我們的測試用例
3、報表生成模塊
主要負責執行用例后的生成報告,一般以HTML格式居多,信息主要是用例執行情況。另外還可以配置發送郵件功能。
4、log模塊
主要用來記錄用例執行情況,以便于高效的調查用例失敗信息以及追蹤用例執行情況。
三、自動化框架的設計和實現
1、需求分析
首先我們的測試對象是一個web平臺,基于此平臺設計的框架要包含測試用例管理、測試執行控制器、測試報告以及測試日志的生成。
2、設計和實現
1)頁面管理
假設測試web對象為一個典型單頁面應用,所以我們采用頁面模式。頁面模式
是頁面與測試用例之間的紐帶,它將每個頁面抽象成一個多帶帶的類,為測試用例提供頁面元素的定位和操作。
BaseClass作為父類只包含driver成員變量,用來標識Selenium中的WebDriver,以便在子類中定位頁面元素。LoginClass和PageClass作為子類,可以提供頁面元素的定位和操作方法。比如登錄頁面。
從頁面看,需要操作的元素分別為,登錄用戶名、密碼、下次自動登錄和登錄按鈕,具體實現代碼如下:
頁面父類BaseClass.py
LoginClass繼承自BaseClass,并進行登錄的元素定位以及操作實現。代碼中定位了username和password,并添加了設置用戶名和密碼的操作。
2)公共庫模塊
公共庫模塊是為創建測試用例服務的,主要包括常量、公共函數、日志、報告等。
Common.py
測試用例信息類用來標識測試用例,并且包括執行用例、執行結果信息,主要包括以下字段。
日志主要用來記錄測試用例執行步驟及產生的錯誤信息,不同的信息有不同的日志級別,比如Information,Warning,Critical和Debug。由于每個測試用例產生的日志條目比較少,所以在測試框架中只利用了最高級別的日志打印,即Debug級別,該級別也會將其他所有的日志級別的信息同樣打印出來。在具體的實現中引用了Python標準庫中的logging類庫,以便更方便的控制日志輸出。
3)測試用例倉庫
用例倉庫主要用來組織自動化測試用例。每條測試用例都被抽象成一個獨立的類,并且均繼承自unittest.TestCase類。 Python中的unittest庫提供了豐富的測試框架支持,包括測試用例的setUp和tearDown方法,在實現用例的過程中可以重寫。依托頁面管理和公共庫模塊實現的頁面方法和公共函數,每一個測試用例腳本的書寫都會非常清晰簡潔。
從這個測試用例中,我們可以看到
Setup中定義了執行測試用例前的一些實例化工作
tearDown對執行完測試做了清理和寫日志文件工作
測試步驟、測試數據和測試檢查點非常清晰,易修改(比如用戶名密碼)
日志級別僅有Debug,所以寫日志僅需用同一Log方法
3)用例執行模塊
執行模塊主要用來控制測試用例腳本的批量執行,形成一個測試集。用例的執行引用了Python標準庫中的subprocess來執行nosetests的shell命令,從而執行給定測試用例集中的用例。測試用例集是一個簡單的純文本文件,實現過程中利用了.txt文件testcases.txt
用例前沒有“#“標記的測試用例腳本會被執行,而有”#“標記的則會被忽略,這樣可以很方便的控制測試集的執行,當然也可以創建不同的文件來執行不同的測試集。
四、需要改進的模塊
對于現有實現的測試框架,已經可以滿足web對象的自動化需求,但還是有些可以改進提高的地方,比如:
1)部分用例可以嘗試數據驅動
2)二次封裝selenium的By函數,以便更高效定位元素
3)沒有進行持續化集成
五、總結
基于Selenium實現的web自動化框架不僅輕量級而且靈活,可以快速的開發自動化測試用例,結合本篇的框架設計和一些好的實踐,希望對大家以后的web自動化框架的設計和實現有所幫助。
宜信技術學院
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/8874.html
摘要:不同目標的自動化測試有不同的測試工具,但是任何工具都無不例外的需要編程的過程,實現源代碼,也可以稱之為測試腳本。 寫在最前面:目前自動化測試并不屬于新鮮的事物,或者說自動化測試的各種方法論已經層出不窮,但是,能夠在項目中持之以恒的實踐自動化測試的團隊,卻依舊不是非常多。有的團隊知道怎么做,做的還不夠好;有的團隊還正在探索和摸索怎么做,甚至還有一些多方面的技術上和非技術上的舊系統需要重構……...
摘要:在上次的自動化測試系列二自動化測試系列二中為大家大體介紹了測試的概念及在豬齒魚中的實踐展開,本文主要圍繞測試進行概念介紹及中的實踐展開。手動測試要求測試人員在每個元素上手動執行每個測試。主要是用于回歸測試和同一軟件的新版本測試。 UI 測試是一種測試類型,也稱為用戶界面測試,通過該測試,我們...
摘要:自動化測試工具可能是網頁應用中最流行的開源自動化測試框架。證書商業是一個開源的自動化測試框架,它實現了關鍵字測試驅動來實現測試驅動開發。 showImg(https://segmentfault.com/img/bVYz7D?w=1200&h=627); 簡評:軟件開發實踐一直以來都在變化,工具和技術也是如此。這些改變都是為了提高生產率,質量,讓客戶滿意,縮短交付時間,以及交付成功的產...
摘要:你是對的,因為你需要學習。如果你有這些疑問,那么請不要擔心,因為在本文中,我將給出個令人信服的理由,來說明學習的必要性。用于家庭用途的操作系統足以支撐進行測試。由于的使用量持續增長,使對測試員的需求也在成比例增長。 翻譯:瘋狂的技術宅原文:https://www.edureka.co/blog/1... 本文首發微信公眾號:前端先鋒歡迎關注,每天都給你推送新鮮的前端技術文章 如果...
閱讀 3471·2021-11-18 10:02
閱讀 3711·2021-09-13 10:25
閱讀 1924·2021-07-26 23:38
閱讀 2573·2019-08-30 15:44
閱讀 2275·2019-08-30 13:51
閱讀 1230·2019-08-26 11:35
閱讀 2276·2019-08-26 10:29
閱讀 3447·2019-08-23 14:56