凌 赟 鳳德金
(廣西民族大學軟件工程系,廣西 南寧530006)
在政府網(wǎng)站績效評估指標體系中,影響政府績效的指標有網(wǎng)站規(guī)范、展現(xiàn)布局、地址鏈接、信息更新情況等,而其中一些可以通過自動化的方式進行測評。本系統(tǒng)擬對政府網(wǎng)站測評績效評估指標中的地址鏈接、展現(xiàn)布局、網(wǎng)站可用性的指標采用自動化方式完成測評。
通過分析政府網(wǎng)站績效評估指標體系,可歸納出系統(tǒng)應該實現(xiàn)如下功能需求:
1.1 測評首頁可用性。測評標準為監(jiān)測網(wǎng)站一周,每天間隔性訪問20 次以上,計算首頁打不開的次數(shù)占全部監(jiān)測次數(shù)的比例,超過(含)15 秒網(wǎng)站仍打不開的次數(shù)比例累計超過(含)5%即判定為不合格網(wǎng)站。
1.2 測評火狐、IE 等主流瀏覽器兼容性。實現(xiàn)獲取網(wǎng)站在火狐、IE、谷歌瀏覽器運行下的首頁截圖。
1.3 測評鏈接可用性。測評標準為每發(fā)現(xiàn)一個首頁上不能正常訪問的鏈接,扣一分。
Selenium 作為專用的Web 應用程序自動化測試工具,基于其易擴展、兼容性強、方便易用等特點,本系統(tǒng)采用該框架完成系統(tǒng)設計與實現(xiàn)。Selenium 歷經(jīng)三個版本的發(fā)展,目前最新版本是Selenium 3,由各瀏覽器廠商為Selenium 提供的WebDriver,使Selenium 具有更高的自動化效率和成功率。
WebDriver 的功能非常強大,其擁有的功能特性為本系統(tǒng)的實現(xiàn)提供了良好的技術支持,如下所列:
2.1 支持多種瀏覽器,例如Mozilla FireFox、Google Chrome、Internet Explorer 等,為本系統(tǒng)實現(xiàn)瀏覽器兼容性的功能提供了良好的支持。
2.2 WebDriver 不僅提供了定位頁面元素的方法,還可以獲取網(wǎng)頁源代碼,通過它可以爬取頁面數(shù)據(jù)。本系統(tǒng)在實現(xiàn)測評鏈接可用性功能時需要獲取首頁上的所有鏈接,所以在這個部分我們通過WebDriver 提供的定位元素的方法findElements(By.cssSelector("a"))實現(xiàn)爬取首頁上的所有鏈接。
2.3 WebDriver 支持頁面截圖,它提供了TakesScreenshot 接口來實現(xiàn)網(wǎng)頁的截屏。
2.4 WebDriver 支持JS(javascript)的注入,在本系統(tǒng)編寫實現(xiàn)Window.performance 和停止加載網(wǎng)頁自動化測試腳本的過程中需要執(zhí)行JS 語句,在WebDriver 中執(zhí)行JS 要先將WebDriver的實例強制轉換成JavascriptExecutor 類型,第二步則可以注入JS 代碼。本系統(tǒng)中利用(JavascriptExecutor)driver).executeScript("window.stop()實現(xiàn)了停止加載網(wǎng)頁的功能。
系統(tǒng)的另一個關鍵功能是采集網(wǎng)頁相關性能數(shù)據(jù),Window.performance 是W3C(World Wide Web Consortium)性能小組推出的一套性能API 標準,提供了獲取與瀏覽器性能有關的時間數(shù)據(jù)功能。
系統(tǒng)通過Apache Echarts 實現(xiàn)各項網(wǎng)站的性能指標數(shù)據(jù)的可視化。
本系統(tǒng)基于分層體系結構風格,根據(jù)需求將系統(tǒng)劃分為數(shù)據(jù)可視化層,控制器層,數(shù)據(jù)采集層以及數(shù)據(jù)分析層。其總體架構如圖1 所示。
系統(tǒng)架構圖
下面將對系統(tǒng)各個層次的職責進行闡述。
控制器層有兩個作用,一是從數(shù)據(jù)可視化層接收用戶輸入的信息,然后將請求參數(shù)傳遞給數(shù)據(jù)采集層里對應的子模塊,二是將最終的測評結果返回給數(shù)據(jù)可視化層對應的視圖。
數(shù)據(jù)采集層是整個測評系統(tǒng)的基礎,它的職責是對網(wǎng)站測評所需數(shù)據(jù)進行采集,在本系統(tǒng)中所采集的數(shù)據(jù)主要是網(wǎng)頁性能數(shù)據(jù)。數(shù)據(jù)采集層需要實現(xiàn)數(shù)據(jù)采集腳本的功能。在該層中,需要采集網(wǎng)頁的請求狀態(tài),網(wǎng)頁的加載時間、首屏時間以及在火狐、IE、chrome 瀏覽器下的首頁快照。實現(xiàn)該模塊的基礎是Selenium 框架,依賴此框架提供的WebDriver 接口,啟動瀏覽器,在獲得WebDriver 實例后,才能進行下一步的數(shù)據(jù)采集操作。
數(shù)據(jù)分析層主要實現(xiàn)數(shù)據(jù)過濾和數(shù)據(jù)計算功能。主要流程是對采集到的數(shù)據(jù)進行無效數(shù)據(jù)的過濾,得到需要向用戶展示的數(shù)據(jù),并根據(jù)這些數(shù)據(jù)進行再加工,對數(shù)據(jù)進行一些比較、計算,最終得到測評結果,為數(shù)據(jù)可視化層做好數(shù)據(jù)準備。
數(shù)據(jù)的過濾目的是將與測評結果無關聯(lián)的數(shù)據(jù)進行過濾刪除,獲取測評指標所需要的數(shù)據(jù),本系統(tǒng)主要是對采集到的網(wǎng)頁性能數(shù)據(jù)進行過濾。數(shù)據(jù)計算是進一步將過濾得到的數(shù)據(jù)進行再加工。本系統(tǒng)需要展示測評結果,測評結果的產(chǎn)生需要對網(wǎng)頁性能數(shù)據(jù)進行計算占比、加減運算以及求平均值;并參照測評指標,得到最終的測評結果。
數(shù)據(jù)可視化層主要負責視圖的顯示,該模塊集成SpringBoot Thymeleaf 模板完成視圖的設計與展示,結合Echarts 實現(xiàn)數(shù)據(jù)可視化。
系統(tǒng)的測試內容主要是功能測試,采用黑盒測試方法,接下來對部分測試用例的設計進行說明,闡述系統(tǒng)的測試工作。
鏈接可用性測試完成驗證鏈接可用性測評結果是否與測評指標一致。通過在用戶界面中選擇測評鏈接可用性,輸入待測評的網(wǎng)址,確認后返回不可打開鏈接數(shù),并展示依據(jù)績效測評指標做出的評分。
首屏時間測試完成驗證首屏時間測評結果是否與測評指標一致。通過在用戶界面中選擇測評首屏時間,輸入待測評的網(wǎng)址,確認后返回首屏在Firefox、Google 以及IE 的打開時間,并展示依據(jù)績效測評指標做出的評分。
通過以上兩項測試,測評鏈接可用性和測評首屏時間實際結果均與預期結果一致,這兩個功能測試通過。
本文面向政府門戶網(wǎng)站,提出基于Selenium 框架的自動化測評平臺,并成功實踐了對政府網(wǎng)站的自動測評。根據(jù)需求對系統(tǒng)進行設計,并基于Selenium 搭建自動化測試平臺,能夠通過模擬瀏覽器來進行自動化采集相關性能數(shù)據(jù),達到最終的測評目的,系統(tǒng)運行效果良好,提高了測評工作的效率和質量。
作者要感謝張綱強老師和編輯的寶貴意見和建議,這些意見和建議極大地幫助改善了論文的質量。這項工作得到了來自廣西民族大學軟件工程重點實驗室(2020-18XJSY-03)、國家級大學生創(chuàng)新創(chuàng)業(yè)訓練計劃項目(201810608005)、廣西高等教育本科教學改革工程項目(2019JGB174)以及廣西民族大學特色專業(yè)及實驗實訓教學基地一體化建設項目的支持。