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