張焱
隨著人工智能的發(fā)展,機器代替人工,已經(jīng)是未來發(fā)展的一種趨勢,人工智能需要編程語言來實現(xiàn),而Python語言在這方面有極大的優(yōu)勢,本篇文章主要介紹Python語言在自動化方面的應(yīng)用。
【關(guān)鍵詞】Python Selenium 自動化測試
1 概述
自動化測試是指軟件測試的自動化,軟件測試就是在預(yù)設(shè)條件下運行系統(tǒng)或應(yīng)用程序,評估運行結(jié)果,預(yù)先條件應(yīng)包括正常條件和異常條件。自動化測試是把以人為驅(qū)動的測試行為轉(zhuǎn)化為機器執(zhí)行的一種過程。
在做自動化測試之前,首先應(yīng)該知道什么場景適合做自動化測試,因為并不是所有項目都適合做自動化測試的,項目滿足以下條件才可以進行自動化測試:
1.1 需求穩(wěn)定
為什么要求需求穩(wěn)定呢?
在一個項目組中如果需求經(jīng)常變動的話,程序代碼也要做相應(yīng)的改動,一旦需求改動,測試人員所寫的測試用例也要做對應(yīng)的修改,測試用例修改了,測試用例對應(yīng)的自動化測試腳本也要進行調(diào)整,而對自動化腳本的維護修改,需要花費大量的人力物力,自動化的一個主要目的就是節(jié)省人力成本,把人解放出來做更多的事情,重復(fù)的事情交給自動化的代碼實現(xiàn),但如果代碼需要經(jīng)常維護,人力就不能更好的解放出來,這就和自動化的目的相違背。
當(dāng)然并不是說一個項目的需求不穩(wěn)定,就意味著完全不能自動化測試了,對于某些功能文檔的模塊,我們還可以進行自動化測試,變動頻繁的采用黑盒測試的方法,可以成為半自動化測試。這就要求結(jié)合具體的項目做具體的分析,選用對應(yīng)的方法。
1.2 項目周期較長
自動化測試框架的選擇、設(shè)計、評審,腳本的編寫以及調(diào)試都需要一定的時間來完成,而這一過程基本可以理解為軟件開發(fā)的過程,這樣的一個周期是很長時間的,如果項目的周期很短,自動化測試的框架還沒確定好選取哪個,項目就要上線運行,那么就無法開展自動化測試。
1.3 編寫的自動化測試腳本復(fù)用度較高
經(jīng)過一個相對較長的周期完成一個自動化測試腳本的編寫,但是這些腳本只在上線前可以做回歸測試使用,以后再無用武之地,這樣的腳本復(fù)用度是很低的,是不符合現(xiàn)代化要求的,既然花那么大的成本開發(fā)一套腳本,就要有很強的復(fù)用性,這就要求在其他相似的項目中,對自動化測試的腳本稍加改動,也能起到作用,這樣的腳本才能真正發(fā)揮它的價值,被廣泛地接受。
如果有些功能測試需要花費大量的時間才能完成,就要想辦法引入自動化測試,尤其是大數(shù)據(jù)量的測試,這些操作如果用人工測試的話,不僅花費時間精力,而且最后測出的結(jié)果還不一定準(zhǔn)確,所以,遇到這樣的操作就要考慮引入自動化測試。
我們所寫的自動化腳本選擇python語言,那么多語言可以使用,為什么偏偏選用python語言。
首先Python是一種解釋型的、面向?qū)ο蟮?、動態(tài)數(shù)據(jù)類型的高級程序設(shè)計編程語言。解釋型,也就意味著開發(fā)過程中沒有了編譯源碼這個環(huán)節(jié);面向?qū)ο?,則意味著Python支持面向?qū)ο蟮娘L(fēng)格或代碼封裝在對象的編程技術(shù)。另外,其交互性意味著可以在一個Python提示符后,直接互動寫和執(zhí)行程序。此外python語言還具有以下優(yōu)點:
學(xué)起來簡單:Python相對于其他語言來說有較少的關(guān)鍵字,語法結(jié)構(gòu)定義明確簡單,這可以讓一個零基礎(chǔ)的學(xué)習(xí)者在短時間內(nèi)掌握該語言的語法并加以綜合的運用實踐。
看起來容易:該語言寫的代碼順序簡單清晰,可以順著自己的思路寫代碼,讓稍微懂一些語法的人都能很容易的讀懂代碼。
改起來方便:Python的源代碼不僅寫起來容易,而且還有一大優(yōu)點就是維護起來很方便。
較強的互動模式:具有很強的互動模式的支持,用戶可以從任意終端輸入任何結(jié)果正確的語言,讓互動的測試和調(diào)試代碼片斷。
可擴展性:在使用的過程中可以添加低層次的模塊到Python解釋器中。這些模塊使得程序員可以添加或定制自己的工具,更有效,更方便。
具有廣泛的標(biāo)準(zhǔn)庫:Python有一個很大的優(yōu)勢就是散裝庫是非常方便的、跨平臺上的linux系統(tǒng),Windows系統(tǒng)和Macintosh系統(tǒng)兼容。
2 自動化測試的優(yōu)勢
在人工智能越來越重要的今天,自動化的推廣顯得更加重要,同樣在軟件測試中推行自動化測試也是勢在必行的,自動化測試有以下幾方面優(yōu)勢:
2.1大大節(jié)省回歸測試的效率
在每一次上線前或者復(fù)測bug的時候都需要把整個系統(tǒng)的業(yè)務(wù)流程都跑一遍,這樣的測試我們就可以稱為回歸測試,回歸測試的測試用例是固定的,而且量很大,此時再進行人工的回歸測試,會花費很多的時間,而且人都在做重復(fù)的操作,難免是人力的極大浪費,此時引入自動化測試,可以大大的節(jié)省人力成本,提高工作效率。
2.2 可以高效率的執(zhí)行繁瑣的重復(fù)性的測試
自動化測試相對于人工測試的一個明顯的優(yōu)點就是執(zhí)行效率高,測試人員在重復(fù)測試某個功能時會逐漸出現(xiàn)厭倦感,從而可能降低測試的效率,影響測試的效果,而自動化測試就不會有這方面的顧慮,代碼去執(zhí)行測試,執(zhí)行的過程都是按照預(yù)設(shè)好的步驟代碼去執(zhí)行,最終測試人員只要看代碼即可。
2.3 能完成一些人工測試不能完成的測試
在測試數(shù)量較大且有隨機性特點的數(shù)據(jù)時, 人工測試就不好完成,此時使用自動化測試,隨機取一些沒有規(guī)律的數(shù)據(jù),就可達到模擬真實用戶測試數(shù)據(jù)的目的。
2.4 自動化測試可以重復(fù)執(zhí)行且具有一致性
自動化測試的腳本基本是固定的,在需要測試的時候,執(zhí)行下一腳本即可執(zhí)行測試,這樣可以反復(fù)執(zhí)行多次,在需要的時候執(zhí)行腳本即可完成測試。由于自動化測試的腳本是固定的,每次執(zhí)行的內(nèi)容和執(zhí)行的結(jié)果的一致性是可以保證完全一樣的。
2.5 更好地利用人力資源endprint
將繁瑣的測試工作任務(wù)自動化,可以提高測試的準(zhǔn)確性,也可以將測試技術(shù)人員解脫出來將更多精力投入到設(shè)計更好的測試用例中。有些測試項目模塊不適用于自動測試,將可以執(zhí)行自動測試的測試執(zhí)行自動化測試之后,讓其余測試人員專注于不能自動化測試的部分,從而提高手工測試的效率。圖1展示了在項目中自動化測試的流程。
3 實驗過程
3.1 環(huán)境配置
實驗所需環(huán)境Windows7 64位操作系統(tǒng),python2+seleniun2,所用工具Pycharm45.0.2版本的火狐瀏覽器,以及火狐瀏覽器的插件Firebug、FirePathSeleniumBuilder。
3.2 技術(shù)分析
定位元素的確定可以通過百度的元素組成來查找,在編輯程序中輸入該命令的元素,便可執(zhí)行該命令,若有多個元素便可用以上方法來查找,利用列表中元素的位置所代表的數(shù)字也可以精確地執(zhí)行相關(guān)命令,這也體現(xiàn)了Python語言的準(zhǔn)確性,為工作提供了方便。
Selenium 是web應(yīng)用程序自動化測試工具集,包括IDE、Grid、RC(selenium 1.0)、WebDriver(selenium 2.0)等,是直接運行在瀏覽器中,模擬用戶在操作,具有很強的真實感。目前支持的瀏覽器包括IE系列、火狐瀏覽器、谷歌瀏覽器等。這個工具主要有以下功能:瀏覽器的兼容性測試--模擬應(yīng)用程序在IE瀏覽器 、火狐瀏覽器、谷歌瀏覽器的運行情況,得出最終結(jié)果,查看哪個瀏覽器兼容性更好。測試整個系統(tǒng)的功能--創(chuàng)建回歸測試檢驗軟件功能是否達到用戶需求。支持自動錄制,錄制工具采用selenium IDE,錄制完可以自動生成代碼,節(jié)省人力成本,并且支持其他不同語言的測試腳本。Selenium 是專門為Web應(yīng)用程序編寫的一個驗收回歸測試的工具。
使用 python語言寫自動化應(yīng)用到了該語言的類和方法以及對數(shù)據(jù)類型列表、 元組、 字典、字符串的常用操作,以及常用的if 判斷語句for、while循環(huán)語句,其中用到了該語言的面向?qū)ο蟮奶攸c(繼承、多態(tài)、封裝 )。
在用Pythonselenium實現(xiàn)自動化測試的工程中最重要部分就是定位頁面元素,常用的定位頁面元素有8種方法以及這八種方法的復(fù)數(shù)形式,如果是通過復(fù)數(shù)定位到的元素則會定位到一組元素,這八種方法包含:通過id查找元素、通過name查找元素、通過classname查找元素、通過tagname查找元素、通過link_text查找元素、通過partial_link_text查找元素、通過xpath查找元素、通過css選擇器查找元素,其中除了xpath和css選擇器外,其他都是可以在頁面中通過F12查看到的,而xpath和css是一種特殊的語法。
XPath即為XML路徑語言,它是一種用來確定XML(標(biāo)準(zhǔn)通用標(biāo)記語言的子集)文檔中某部分的語言。XPath基于XML的樹狀結(jié)構(gòu),提供在數(shù)據(jù)結(jié)構(gòu)樹中找尋節(jié)點的能力這種途徑給編輯語言帶來了極大的便利,也為把繁瑣復(fù)雜的程序簡單化提供了可能。
例如Python可以通過火狐瀏覽器自動打開網(wǎng)頁,通過編輯程序可以執(zhí)行相關(guān)操作:
import webdriver 導(dǎo)入所需的框架,當(dāng)然在導(dǎo)入前,需要進行安裝。webdriver.Firefox()自動打開火狐瀏覽器,這里就對火狐瀏覽器的版本有要求,版本必須低于火狐46,否則不能自動打開瀏覽器,selenium默認支持火狐瀏覽器,如果需要在IE瀏覽器或者谷歌瀏覽器則需要下載對應(yīng)的驅(qū)動。下面展示了部分代碼:
driver.get("https://www.baidu.com/")在火狐瀏覽器中自動輸入百度的網(wǎng)址并打開
driver.find_element_by_id("kw").send_keys(u"2018高考")獲取百度搜索框并自動輸入2018高考,當(dāng)然還可以輸入你需要搜索的任何內(nèi)容
find_element_by_id("su").click()定位到百度一下按鈕并自動點擊該按鈕進行搜索
close()然后使用該方法自動關(guān)閉瀏覽器,否則運行次數(shù)多的時候,系統(tǒng)會卡掉。
find_element_by_xpath("http://*[@id='kw']")此行代碼是通過xpath方法獲取百度搜索框,其中//表示從任何位置開始匹配,*代表匹配任何的標(biāo)簽,@id='kw'表示找到屬性名是id,值是kw的元素。
4 實驗結(jié)果
通過模擬人工操作,使用代碼的形式編寫程序?qū)崿F(xiàn)對瀏覽器的常用操作,以及對頁面元素的操作,可以模擬常見的輸入、點擊、清除文本,輸入回車、空格、刪除字符以及瀏覽的最大化、截圖、指定瀏覽器頁面大小、關(guān)閉瀏覽器的操作。
5 結(jié)論
通過Python進行自動化測試大大節(jié)約了人力,通過Firebug和Fire Path可以得到有關(guān)按鍵的位置以及名稱,節(jié)省了大量的時間,為各種程序的設(shè)計者提供了方便,自動化編輯更是迎來了廣闊的發(fā)展空間與前景,對于我國科技的進步以及生產(chǎn)力的發(fā)展也起到了很大的推動作用。
參考文獻
[1]網(wǎng)址http://www.w3.org/1999/xhtml.
[2]蟲師.《selenium webdriver python (第二版)[M].北京:電子工業(yè)出版社,2013.
作者單位
新泰一中 山東省新泰市 271200endprint