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