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