景 雨 劉建鑫 于瑩瑩 劉海燕
(大連外國(guó)語(yǔ)大學(xué)軟件學(xué)院,遼寧 大連116044)
畢業(yè)設(shè)計(jì)是應(yīng)用型本科高校人才培養(yǎng),實(shí)踐能力考察的最重要環(huán)節(jié),它檢驗(yàn)了學(xué)生應(yīng)用所學(xué)知識(shí)解決實(shí)際問(wèn)題能力。為了確保計(jì)算機(jī)專業(yè)學(xué)生認(rèn)真的完成畢業(yè)設(shè)計(jì)以及保證畢業(yè)設(shè)計(jì)的功能質(zhì)量,需要注重畢業(yè)設(shè)計(jì)過(guò)程管理[1]。
在教育部關(guān)于印發(fā)《高等學(xué)校人工智能創(chuàng)新行動(dòng)計(jì)劃》的通知中,要求高校加快人工智能在教育領(lǐng)域的創(chuàng)新應(yīng)用,利用智能技術(shù)支撐人才培養(yǎng)模式的創(chuàng)新、教學(xué)方法的改革、教育治理能力的提升。在目前人工智能時(shí)代下,機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、大數(shù)據(jù)分析與處理等新技術(shù)的提出極大的促進(jìn)了Python 語(yǔ)言的發(fā)展,Python 已經(jīng)成為越來(lái)越多高校里最受歡迎的計(jì)算機(jī)編程語(yǔ)言之一。本課題正是應(yīng)用人工智能技術(shù),通過(guò)引入基于Python 的Selenium 自動(dòng)化測(cè)試對(duì)軟件學(xué)院學(xué)生畢業(yè)設(shè)計(jì)進(jìn)行教學(xué)改革研究。在軟件系統(tǒng)的開(kāi)發(fā)過(guò)程中,任何一個(gè)編程人員都不可避免地會(huì)產(chǎn)生錯(cuò)誤。為了盡可能地發(fā)現(xiàn)并改正系統(tǒng)設(shè)計(jì)中的錯(cuò)誤,減少錯(cuò)誤造成的損失,保證系統(tǒng)開(kāi)發(fā)的質(zhì)量,需要對(duì)系統(tǒng)進(jìn)行測(cè)試。軟件測(cè)試是對(duì)開(kāi)發(fā)完成后的軟件產(chǎn)品進(jìn)行全面的驗(yàn)證、保證其正確性的過(guò)程。現(xiàn)狀是部分學(xué)生的畢業(yè)設(shè)計(jì)網(wǎng)站系統(tǒng)功能缺陷較多,系統(tǒng)健壯性不好,測(cè)試效果不理想。通過(guò)引入基于Python 的Selenium 自動(dòng)化測(cè)試,可以讓學(xué)生根據(jù)系統(tǒng)功能逐一設(shè)計(jì)測(cè)試用例,這樣也可以讓學(xué)生自己對(duì)系統(tǒng)的功能點(diǎn)進(jìn)行較好的測(cè)試覆蓋,對(duì)于學(xué)生畢業(yè)設(shè)計(jì)系統(tǒng)的質(zhì)量有較好的提高。而且在畢業(yè)設(shè)計(jì)指導(dǎo)時(shí)運(yùn)行一下自動(dòng)化測(cè)試(轉(zhuǎn)下頁(yè))用例,也可以讓指導(dǎo)老師全面的了解系統(tǒng)的功能。
在分析和研究自動(dòng)化測(cè)試的相關(guān)理論基礎(chǔ)上,結(jié)合案例分析,采用基于Python 語(yǔ)言的Selenium 自動(dòng)化測(cè)試框架,將其應(yīng)用在軟件學(xué)院畢業(yè)設(shè)計(jì)中??梢宰寣W(xué)生根據(jù)已經(jīng)完成的網(wǎng)站系統(tǒng)功能,逐一設(shè)計(jì)測(cè)試用例,這樣可以讓學(xué)生自己對(duì)系統(tǒng)的功能點(diǎn)進(jìn)行較好的功能測(cè)試覆蓋,進(jìn)而提高系統(tǒng)的健壯性和穩(wěn)定性,最終提高學(xué)生畢業(yè)設(shè)計(jì)軟件的質(zhì)量。
Selenium 是一個(gè)用于Web 應(yīng)用程序測(cè)試的工具,它的特點(diǎn)是開(kāi)源、免費(fèi),支持多個(gè)平臺(tái),支持多個(gè)開(kāi)發(fā)語(yǔ)言,同時(shí)也支持多個(gè)瀏覽器,Selenium 已經(jīng)越來(lái)越廣泛的應(yīng)用于Web 自動(dòng)化測(cè)試領(lǐng)域。要進(jìn)行自動(dòng)化測(cè)試,首先要進(jìn)行環(huán)境搭建,環(huán)境包括如下:
要進(jìn)行Selenium 自動(dòng)化測(cè)試,瀏覽器是必須的,那么要選擇哪個(gè)瀏覽器?具體選擇哪個(gè)版本呢?可以選擇Firefox、Chrome或IE。本文選用的是Firefox,版本是46.0.1。
我們了解到Selenium WebDriver 支持多種語(yǔ)言的開(kāi)發(fā),如C#、Java、Python、Ruby 等。本文選擇的編程語(yǔ)言是Python,版本是3.7。
通過(guò)pip 命令安裝Selenium 包, 版本是2.53.1。安裝的時(shí)候需要注意Selenium 包的版本要與瀏覽器版本相匹配,否則無(wú)法操作瀏覽器中的頁(yè)面元素。
WebDriver 通過(guò)原生瀏覽器支持或者瀏覽器擴(kuò)展直接控制瀏覽器,WebDriver 針對(duì)各個(gè)瀏覽器開(kāi)發(fā),取代了嵌入到被測(cè)Web 應(yīng)用中的JavaScript??梢园阉闯蒘elenium 設(shè)計(jì)出來(lái)操作瀏覽器行為的一套 API。 WebDriver 支持 Firefox(FirefoxDriver)、IE (Internet Explorer Driver)、Opera(OperaDriver)、Chrome(ChromeDrvier)等瀏覽器[2]。各個(gè)瀏覽器驅(qū)動(dòng)下載地址:http://www.seleniumhq.org/download/。本文采用的Firefox 瀏覽器驅(qū)動(dòng)默認(rèn)已經(jīng)在Selenium WebDriver 包里了,不需要額外安裝。
要實(shí)現(xiàn)自動(dòng)化測(cè)試,需要完成下面的步驟:
(1)導(dǎo)入Selenium Webdriver 相關(guān)模塊。
(2)通過(guò)調(diào)用Webdriver 模塊獲得瀏覽器對(duì)象,然后啟動(dòng)瀏覽器。
(3)通過(guò)瀏覽器對(duì)象訪問(wèn)頁(yè)面URL。
(4)通過(guò)瀏覽器對(duì)象操作頁(yè)面元素。
(5)通過(guò)瀏覽器對(duì)象關(guān)閉瀏覽器。
本文在實(shí)際測(cè)試過(guò)程中引入單元測(cè)試框架,因?yàn)閱卧獪y(cè)試不但可以對(duì)軟件設(shè)計(jì)中最小的模塊進(jìn)行驗(yàn)證,而且通過(guò)使用單元測(cè)試框架可以更規(guī)范的編寫(xiě)和維護(hù)測(cè)試代碼。Python 中有很多單元測(cè)試框架,比如unittest、doctest、pytest 等,本文采用的框架是unittest。這樣雖然可以進(jìn)行功能測(cè)試,但是生成的測(cè)試結(jié)果只是簡(jiǎn)單的幾行信息,不能很清晰的表達(dá)已經(jīng)驗(yàn)證的功能。我們還需要一份漂亮的測(cè)試報(bào)告來(lái)展示所進(jìn)行的自動(dòng)化測(cè)試結(jié)果,通過(guò)研究我們了解到HTMLTestRunner 是unittest 單元測(cè)試框架的擴(kuò)展庫(kù),通過(guò)它可以生成簡(jiǎn)單易讀的HTML 測(cè)試報(bào)告,下圖就是我們進(jìn)行用戶登錄測(cè)試的HTML 測(cè)試報(bào)告。
測(cè)試報(bào)告
測(cè)試報(bào)告中體現(xiàn)了測(cè)試用例的開(kāi)始時(shí)間,測(cè)試的周期以及測(cè)試的狀態(tài),并以表格的形式清晰地展示了測(cè)試用例的標(biāo)題,測(cè)試用例的總數(shù),通過(guò)測(cè)試的個(gè)數(shù),測(cè)試失敗的個(gè)數(shù)等,這樣生成的測(cè)試報(bào)告通俗易懂的展示了自動(dòng)化測(cè)試的成果。還可以在自動(dòng)化測(cè)試腳本執(zhí)行完之后,將測(cè)試結(jié)果的詳細(xì)報(bào)告信息通過(guò)郵件的形式自動(dòng)發(fā)送到相應(yīng)人員的郵箱里,這就需要用到SMTP 簡(jiǎn)單郵件傳輸協(xié)議。Python 中的smtplib 模塊實(shí)現(xiàn)了對(duì)SMTP 協(xié)議的簡(jiǎn)單封裝,可以使用該模塊發(fā)送電子郵件。
軟件開(kāi)發(fā)與軟件測(cè)試是軟件生命周期中兩個(gè)很重要的組成部分,只有經(jīng)過(guò)了嚴(yán)格測(cè)試的軟件,它的健壯性、穩(wěn)定性才更高。對(duì)于大學(xué)生的畢業(yè)設(shè)計(jì)軟件,不是設(shè)計(jì)出來(lái)了就合格了,只有通過(guò)了完整的測(cè)試用例測(cè)試,才算是一個(gè)高質(zhì)量的畢業(yè)作品。本課題的研究在我校可以較大程度的提高學(xué)生畢業(yè)設(shè)計(jì)應(yīng)用程序的質(zhì)量,發(fā)揮自動(dòng)化測(cè)試的優(yōu)勢(shì),極大地推動(dòng)了教學(xué)改革和質(zhì)量工程建設(shè)。通過(guò)Python 與Selenium 的結(jié)合,實(shí)現(xiàn)畢業(yè)設(shè)計(jì)應(yīng)用程序的智能測(cè)試,這樣既鍛煉了學(xué)生的編程能力,促進(jìn)其專業(yè)技術(shù)水平的發(fā)展,同時(shí)又符合國(guó)家以及企業(yè)對(duì)現(xiàn)在大學(xué)生這種應(yīng)用型人才的迫切需求,具有重要的推廣價(jià)值。