景 雨 劉建鑫 于瑩瑩 劉海燕
(大連外國語大學軟件學院,遼寧 大連116044)
畢業設計是應用型本科高校人才培養,實踐能力考察的最重要環節,它檢驗了學生應用所學知識解決實際問題能力。為了確保計算機專業學生認真的完成畢業設計以及保證畢業設計的功能質量,需要注重畢業設計過程管理[1]。
在教育部關于印發《高等學校人工智能創新行動計劃》的通知中,要求高校加快人工智能在教育領域的創新應用,利用智能技術支撐人才培養模式的創新、教學方法的改革、教育治理能力的提升。在目前人工智能時代下,機器學習、深度學習、大數據分析與處理等新技術的提出極大的促進了Python 語言的發展,Python 已經成為越來越多高校里最受歡迎的計算機編程語言之一。本課題正是應用人工智能技術,通過引入基于Python 的Selenium 自動化測試對軟件學院學生畢業設計進行教學改革研究。在軟件系統的開發過程中,任何一個編程人員都不可避免地會產生錯誤。為了盡可能地發現并改正系統設計中的錯誤,減少錯誤造成的損失,保證系統開發的質量,需要對系統進行測試。軟件測試是對開發完成后的軟件產品進行全面的驗證、保證其正確性的過程。現狀是部分學生的畢業設計網站系統功能缺陷較多,系統健壯性不好,測試效果不理想。通過引入基于Python 的Selenium 自動化測試,可以讓學生根據系統功能逐一設計測試用例,這樣也可以讓學生自己對系統的功能點進行較好的測試覆蓋,對于學生畢業設計系統的質量有較好的提高。而且在畢業設計指導時運行一下自動化測試(轉下頁)用例,也可以讓指導老師全面的了解系統的功能。
在分析和研究自動化測試的相關理論基礎上,結合案例分析,采用基于Python 語言的Selenium 自動化測試框架,將其應用在軟件學院畢業設計中。可以讓學生根據已經完成的網站系統功能,逐一設計測試用例,這樣可以讓學生自己對系統的功能點進行較好的功能測試覆蓋,進而提高系統的健壯性和穩定性,最終提高學生畢業設計軟件的質量。
Selenium 是一個用于Web 應用程序測試的工具,它的特點是開源、免費,支持多個平臺,支持多個開發語言,同時也支持多個瀏覽器,Selenium 已經越來越廣泛的應用于Web 自動化測試領域。要進行自動化測試,首先要進行環境搭建,環境包括如下:
要進行Selenium 自動化測試,瀏覽器是必須的,那么要選擇哪個瀏覽器?具體選擇哪個版本呢?可以選擇Firefox、Chrome或IE。本文選用的是Firefox,版本是46.0.1。
我們了解到Selenium WebDriver 支持多種語言的開發,如C#、Java、Python、Ruby 等。本文選擇的編程語言是Python,版本是3.7。
通過pip 命令安裝Selenium 包, 版本是2.53.1。安裝的時候需要注意Selenium 包的版本要與瀏覽器版本相匹配,否則無法操作瀏覽器中的頁面元素。
WebDriver 通過原生瀏覽器支持或者瀏覽器擴展直接控制瀏覽器,WebDriver 針對各個瀏覽器開發,取代了嵌入到被測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)通過瀏覽器對象關閉瀏覽器。
本文在實際測試過程中引入單元測試框架,因為單元測試不但可以對軟件設計中最小的模塊進行驗證,而且通過使用單元測試框架可以更規范的編寫和維護測試代碼。Python 中有很多單元測試框架,比如unittest、doctest、pytest 等,本文采用的框架是unittest。這樣雖然可以進行功能測試,但是生成的測試結果只是簡單的幾行信息,不能很清晰的表達已經驗證的功能。我們還需要一份漂亮的測試報告來展示所進行的自動化測試結果,通過研究我們了解到HTMLTestRunner 是unittest 單元測試框架的擴展庫,通過它可以生成簡單易讀的HTML 測試報告,下圖就是我們進行用戶登錄測試的HTML 測試報告。

測試報告
測試報告中體現了測試用例的開始時間,測試的周期以及測試的狀態,并以表格的形式清晰地展示了測試用例的標題,測試用例的總數,通過測試的個數,測試失敗的個數等,這樣生成的測試報告通俗易懂的展示了自動化測試的成果。還可以在自動化測試腳本執行完之后,將測試結果的詳細報告信息通過郵件的形式自動發送到相應人員的郵箱里,這就需要用到SMTP 簡單郵件傳輸協議。Python 中的smtplib 模塊實現了對SMTP 協議的簡單封裝,可以使用該模塊發送電子郵件。
軟件開發與軟件測試是軟件生命周期中兩個很重要的組成部分,只有經過了嚴格測試的軟件,它的健壯性、穩定性才更高。對于大學生的畢業設計軟件,不是設計出來了就合格了,只有通過了完整的測試用例測試,才算是一個高質量的畢業作品。本課題的研究在我校可以較大程度的提高學生畢業設計應用程序的質量,發揮自動化測試的優勢,極大地推動了教學改革和質量工程建設。通過Python 與Selenium 的結合,實現畢業設計應用程序的智能測試,這樣既鍛煉了學生的編程能力,促進其專業技術水平的發展,同時又符合國家以及企業對現在大學生這種應用型人才的迫切需求,具有重要的推廣價值。