張曦煌,蔡晶晶,柴志雷,3,奚智雯
(1.江南大學(xué) 人工智能與計(jì)算機(jī)學(xué)院,江蘇 無錫 214215;2.無錫太湖學(xué)院 智能裝備學(xué)院,江蘇 無錫 214064;3.江南大學(xué) 江蘇省模式識(shí)別與計(jì)算智能工程實(shí)驗(yàn)室,江蘇 無錫 214215)
由于敏捷開發(fā)技術(shù)的興起,Web 應(yīng)用產(chǎn)品的開發(fā)周期逐漸縮短,產(chǎn)品更新升級(jí)日趨頻繁。隨著產(chǎn)品不斷迭代更新,Web 應(yīng)用的規(guī)模和系統(tǒng)復(fù)雜度增加,對(duì)Web 產(chǎn)品的質(zhì)量要求也隨之越來越高[1]。
傳統(tǒng)手工測(cè)試方式效率低、資源消耗大,通常難以滿足大規(guī)模Web 應(yīng)用的測(cè)試需求。因此,自動(dòng)化測(cè)試逐漸成為Web 應(yīng)用測(cè)試的主流測(cè)試方式[2],該方法不僅節(jié)省時(shí)間、人力等資源,還能顯著提高測(cè)試效率。
然而,在實(shí)際操作過程中部署自動(dòng)化測(cè)試時(shí),會(huì)存在以下局限性[3]:
(1)測(cè)試用例覆蓋率差。在一些復(fù)雜測(cè)試任務(wù)中,仍需要手工進(jìn)行測(cè)試。
(2)測(cè)試用例復(fù)用性低。當(dāng)產(chǎn)品迭代升級(jí)后,需要重新編寫測(cè)試用例,測(cè)試人員的工作量較大[4]。
(3)成本投入高。自動(dòng)化測(cè)試前期需要巨額的成本投入,后期如果缺乏成本控制方案和測(cè)試計(jì)劃,項(xiàng)目往往會(huì)因?yàn)橘Y金問題而以失敗告終[5]。
為了解決以上問題,文獻(xiàn)[6]提出一種適用于統(tǒng)一建模語言和序列圖生成測(cè)試用例方法。Ansari 等[7]借助自然語言處理的功能需求生成測(cè)試用例,在減少工作量的同時(shí),提高了工作效率。Verma 等[8]提出一種測(cè)試用例優(yōu)先級(jí)比較的方法來檢測(cè)Web 應(yīng)用中存在的錯(cuò)誤,該方法包括風(fēng)險(xiǎn)策略和多樣性策略。其中,風(fēng)險(xiǎn)策略是指選擇每次迭代中風(fēng)險(xiǎn)最大的測(cè)試用例;多樣性策略則通過最大化測(cè)試過的測(cè)試用例之間的距離來設(shè)定測(cè)試用例優(yōu)先級(jí)。通過結(jié)合以上兩種策略,能夠有效提高Web 應(yīng)用中缺陷檢測(cè)的準(zhǔn)確率。高應(yīng)波[9]結(jié)合數(shù)據(jù)驅(qū)動(dòng)和關(guān)鍵字驅(qū)動(dòng)模式,運(yùn)用圖像匹配算法設(shè)計(jì)一款混合驅(qū)動(dòng)的自動(dòng)化測(cè)試框架,該框架能夠識(shí)別非Web 控件,有效提高Web 應(yīng)用測(cè)試過程中的自動(dòng)化程度。李吟等[10]設(shè)計(jì)了一款自動(dòng)化測(cè)試的框架以提高自動(dòng)化測(cè)試的覆蓋率。
在傳統(tǒng)自動(dòng)化測(cè)試方法中,Web 應(yīng)用更新后與歷史版本相類似的功能測(cè)試仍需要編寫測(cè)試用例[11]。為此,本文結(jié)合Selenium 自動(dòng)化測(cè)試框架和SVM(Support Vector Machines,SVM)模型,從歷史測(cè)試經(jīng)驗(yàn)中對(duì)模型展開訓(xùn)練。首先,通過測(cè)試用例完成Web 前端頁面的功能測(cè)試,并對(duì)前端頁面功能所采用的測(cè)試用例進(jìn)行分類預(yù)測(cè);然后,借助自動(dòng)化測(cè)試平臺(tái)執(zhí)行測(cè)試用例得到測(cè)試結(jié)果;最后,通過測(cè)試結(jié)果完善Web 應(yīng)用。此外,為了驗(yàn)證所提方法的有效性,將該方法應(yīng)用于一個(gè)真實(shí)運(yùn)行的FPGA 公有云平臺(tái)中進(jìn)行Web測(cè)試。
自動(dòng)化測(cè)試是Web 應(yīng)用測(cè)試領(lǐng)域的發(fā)展趨勢(shì),目的是簡(jiǎn)化敏捷開發(fā)中重復(fù)的測(cè)試任務(wù)[12]。具體操作為:在測(cè)試需求的基礎(chǔ)上,對(duì)Web 應(yīng)用編寫自動(dòng)運(yùn)行的測(cè)試用例以獲取測(cè)試結(jié)果[13]。其中,自動(dòng)化測(cè)試的本質(zhì)是實(shí)現(xiàn)自動(dòng)化機(jī)器測(cè)試,主要包括開發(fā)并執(zhí)行測(cè)試用例、使用自動(dòng)化測(cè)試工具驗(yàn)證開發(fā)需求兩個(gè)部分。通過該技術(shù)幫助測(cè)試人員在規(guī)定時(shí)間內(nèi),盡可能多地執(zhí)行測(cè)試用例[14]。
SVM 屬于有監(jiān)督分類學(xué)習(xí)模型,依賴于支持向量分類超平面,具體原理如圖1 所示。由于在SVM 中少數(shù)支持向量決定了最終的聚類結(jié)果,可通過該特點(diǎn)在實(shí)際應(yīng)用中獲取關(guān)鍵樣本,剔除冗余樣本以減少計(jì)算量。此外,該方法計(jì)算的復(fù)雜性取決于支持向量的數(shù)目,在一定程度上避免了“維數(shù)災(zāi)難”。
Fig.1 SVM schematic圖1 SVM原理
本文使用SVM 分類Web 元素(文本信息)的測(cè)試用例。在實(shí)驗(yàn)過程中,首先將訓(xùn)練集中的文本數(shù)據(jù)進(jìn)行特征提?。〝?shù)值化處理),將其轉(zhuǎn)化為特征向量。
然后,依據(jù)“間隔最大化”原則尋找一個(gè)超平面對(duì)樣本進(jìn)行分割[15],計(jì)算公式如下:
其中,w=(w1,w2,w3…wd)為法向量,決定超平面的方向,b為決定超平面與原點(diǎn)間距離的位移項(xiàng)。
接下來,計(jì)算兩個(gè)異類支持向量到超平面的距離之和d,計(jì)算公式如下:
其中,d為間隔距離。
最后,只需要找到滿足式(3)中約束條件的w、b,使d最大,即為“最大間隔”的超平面,計(jì)算公式如下:
式中,最大化間隔僅需最大化||w||-1,等價(jià)于最小化||w||2。因此,式(3)可重寫為:
Selenium 框架主要應(yīng)用于Web 應(yīng)用自動(dòng)化測(cè)試工具,工作原理如圖2 所示。在處理自動(dòng)化測(cè)試任務(wù)時(shí),首先向Selenium 框架中集成的瀏覽器驅(qū)動(dòng)Web Driver 發(fā)送請(qǐng)求,在Web Driver 收到測(cè)試腳本后對(duì)其進(jìn)行解析;然后將結(jié)果發(fā)送至對(duì)應(yīng)的瀏覽器;最后由瀏覽器執(zhí)行測(cè)試用例并返回測(cè)試結(jié)果[16]。
由圖2 可見,Selenium 框架的主要組件包括Selenium IDE、Selenium Web Driver 及Selenium Grid 模塊[17]。其中,Selenium IDE 主要用于錄制用戶操作,生成測(cè)試用例;Selenium Web Driver 是在Selenium Remote Control 基礎(chǔ)上優(yōu)化和升級(jí)的新模塊,支持多種編程語言編寫測(cè)試用例,可直接給瀏覽器發(fā)送命令;Selenium Grid 是運(yùn)行不同瀏覽器下的Selenium 網(wǎng)格,支持跨平臺(tái)運(yùn)行測(cè)試用例。Selenium 自動(dòng)化測(cè)試框架如圖3所示。
Fig.2 Selenium schematic圖2 Selenium 原理
Fig.3 Selenium framework architecture圖3 Selenium 框架架構(gòu)
實(shí)驗(yàn)架構(gòu)主要包含數(shù)據(jù)獲取模塊、機(jī)器學(xué)習(xí)模塊和測(cè)試用例執(zhí)行模塊,用來獲取一個(gè)網(wǎng)頁所有網(wǎng)頁功能的測(cè)試結(jié)果。其中,數(shù)據(jù)獲取模塊獲取網(wǎng)頁元素;機(jī)器學(xué)習(xí)模塊預(yù)測(cè)每個(gè)Web 元素的測(cè)試用例;Selenium 框架模塊執(zhí)行Web 元素的測(cè)試用例并展現(xiàn)測(cè)試結(jié)果。實(shí)驗(yàn)整體架構(gòu)如圖4所示。
Fig.4 Overall architecture of the experiment圖4 實(shí)驗(yàn)整體架構(gòu)
實(shí)驗(yàn)平臺(tái)為PyCharm,電腦配置為Intel(R)Core(TM)i7-9700CPU @300GHz,操作系統(tǒng)為Windows 10專業(yè)版。
通過Request 函數(shù)向指定URL(Uniform Resource Locator)網(wǎng)址發(fā)起訪問請(qǐng)求、處理響應(yīng)請(qǐng)求,以獲取靜態(tài)頁面的Web 元素。其中,Web 元素為Web 應(yīng)用中前端頁面中的HTML(Hyper Text Markup Language)標(biāo)簽,例如文本框、按鈕等。然后,采用Beautiful Soup 解析Web 頁面數(shù)據(jù)處理后的網(wǎng)頁元素以提取指定數(shù)據(jù)。
目前,通常采用Beautiful Soup 模塊提取頁面數(shù)據(jù)。該模塊不僅能規(guī)則化解析頁面數(shù)據(jù),還能提供html.parser 和lmxl 兩種頁面解析方式。由于lmxl 解析方式將Web 頁面源碼解析成一個(gè)DOM(Document Object Model)樹,便于定位和提取Web 元素,因此本文選擇該方法進(jìn)行實(shí)驗(yàn)。通過Beautiful Soup 對(duì)象中的find、select、find_all 等方法,獲取指定頁面上的a、select、input、button 等標(biāo)簽如表1所示。
Table 1 Web element table表1 Web元素表
本文選擇FPGA 公有云平臺(tái)中前端頁面的數(shù)據(jù)構(gòu)建訓(xùn)練集(見表2)。訓(xùn)練集和測(cè)試集均來源于同一個(gè)數(shù)據(jù)集,共1 700 條數(shù)據(jù)。在實(shí)驗(yàn)執(zhí)行過程中,隨機(jī)抽取70%數(shù)據(jù)設(shè)置為訓(xùn)練集,剩余數(shù)據(jù)設(shè)置為測(cè)試集。
Table 2 Training set表2 訓(xùn)練集
由表2 可知,訓(xùn)練集包含tag_name(標(biāo)簽名稱)、type(標(biāo)簽類型)、web_element(元素名稱)、test_case(測(cè)試用例)。其中,web_element 作為特征列、test_case 列作為類標(biāo)簽列。測(cè)試用例類別主要包括文本框是否可編輯、按鈕是否可點(diǎn)擊、頁面是否跳轉(zhuǎn)、圖片顯示是否正常、鏈接標(biāo)簽是否成功跳轉(zhuǎn)、單選按鈕是否選中、文件是否可上傳。
在特征提取過程中,首先采用數(shù)值化處理方法建立單詞到數(shù)字的映射關(guān)系,將單詞轉(zhuǎn)換為數(shù)字;然后,采用SVM和決策樹對(duì)模型進(jìn)行擬合,并采用網(wǎng)格搜索和交叉驗(yàn)證方法尋找模型的最佳參數(shù);最后,將測(cè)試數(shù)據(jù)輸入模型預(yù)測(cè)每個(gè)Web元素的測(cè)試用例。
圖5(彩圖掃OSID 碼可見,下同)為采用20 條測(cè)試數(shù)據(jù)對(duì)訓(xùn)練后的模型進(jìn)行測(cè)試的結(jié)果。其中,橫軸表示每個(gè)測(cè)試用例,縱軸表示測(cè)試用例的類別,紅色點(diǎn)為每個(gè)測(cè)試用例的真實(shí)類別,藍(lán)色點(diǎn)為模型預(yù)測(cè)類別。如果預(yù)測(cè)正確,紅色點(diǎn)將完全覆蓋藍(lán)色。
Fig.5 Scatter plot of test case prediction圖5 預(yù)測(cè)測(cè)試用例散點(diǎn)圖
由圖5 可見,僅有4 條數(shù)據(jù)的分類結(jié)果發(fā)生錯(cuò)誤,原因可能是訓(xùn)練數(shù)據(jù)量較少,在對(duì)數(shù)據(jù)集進(jìn)行特征提取時(shí)發(fā)生特征相似的情況。
準(zhǔn)確率是衡量分類模型分類正確的次數(shù),如果預(yù)測(cè)樣本標(biāo)簽與真實(shí)標(biāo)簽集嚴(yán)格匹配,則精度為1,否則精度為0。準(zhǔn)確率計(jì)算公式如式(5)所示:
其中,ntotal為總樣本個(gè)數(shù),ncorrect為被正確分類的樣本個(gè)數(shù)。
混淆矩陣(見圖6)屬于模型評(píng)估的一部分,能夠快速計(jì)算分類任務(wù)的準(zhǔn)確率。
Fig.6 Confusion matrix圖6 混淆矩陣
圖6 中,T(True)代表正確,F(xiàn)(False)代表錯(cuò)誤,P(Positive)為1,表示正例,N(Negative)為0,表示負(fù)例;TP 表示實(shí)際為正且被預(yù)測(cè)為正的樣本數(shù)量;FP 表示實(shí)際為負(fù)但被預(yù)測(cè)為正的樣本數(shù)量;FN 表示實(shí)際為正卻被預(yù)測(cè)為負(fù)的樣本數(shù)量;TN 代表TN 表示實(shí)際為負(fù)被預(yù)測(cè)為負(fù)的樣本的數(shù)量。結(jié)合混淆矩陣,準(zhǔn)確率可表達(dá)為:
在為每個(gè)Web 元素所需要的測(cè)試用例進(jìn)行分類預(yù)測(cè)后,基于Selenium 框架的自動(dòng)化測(cè)試系統(tǒng)將開始執(zhí)行測(cè)試用例。該系統(tǒng)可詳細(xì)展示測(cè)試用例的執(zhí)行情況,并且支持在瀏覽器上運(yùn)行。此外,還能夠在多種瀏覽器下完成測(cè)試任務(wù),便于測(cè)試人員對(duì)Web 應(yīng)用進(jìn)行跨平臺(tái)、跨瀏覽器的兼容性測(cè)試。
Selenium 的Web 自動(dòng)化測(cè)試系統(tǒng)基于Selenium Web Driver 驅(qū)動(dòng)原理,結(jié)合了Web 開發(fā)與數(shù)據(jù)可視化的技術(shù)。該系統(tǒng)支持在網(wǎng)頁上構(gòu)建測(cè)試計(jì)劃、執(zhí)行測(cè)試用例、日志記錄、測(cè)試報(bào)告的生成、郵件通知等功能,能夠讓測(cè)試人員清晰了解每個(gè)測(cè)試用例的執(zhí)行情況,同時(shí)降低測(cè)試成本。自動(dòng)化測(cè)試系統(tǒng)的功能模塊如圖7所示。
Fig.7 Function block of automated test system圖7 自動(dòng)化測(cè)試系統(tǒng)功能模塊
自動(dòng)化測(cè)試系統(tǒng)的整體架構(gòu)包括測(cè)試用例執(zhí)行模塊、瀏覽器驅(qū)動(dòng)模塊、SVM 預(yù)測(cè)測(cè)試用例模塊、測(cè)試結(jié)果反饋模塊,如圖8所示。
Fig.8 Architecture of automated test system圖8 自動(dòng)化測(cè)試系統(tǒng)架構(gòu)
由圖8 可見,執(zhí)行模塊包含測(cè)試用例預(yù)測(cè)、測(cè)試用例加載、數(shù)據(jù)驅(qū)動(dòng)和結(jié)果收集;SVM 模塊使用Python 對(duì)SVM分類模型進(jìn)行封裝,以獲取目標(biāo)頁面的元素并預(yù)測(cè)測(cè)試用例分類。
測(cè)試人員登錄自動(dòng)化系統(tǒng),將分類結(jié)果輸入自動(dòng)化測(cè)試系統(tǒng)中完成以下流程:構(gòu)建測(cè)試用例運(yùn)行計(jì)劃、運(yùn)行計(jì)劃中測(cè)試用例、查看測(cè)試用例運(yùn)行結(jié)果、反饋測(cè)試結(jié)果。
本文采用網(wǎng)格搜索和交叉驗(yàn)證方法(Grid Search CV)確定SVM 和決策樹模型中的參數(shù)。該方法在指定參考范圍內(nèi),利用參數(shù)訓(xùn)練學(xué)習(xí)器,根據(jù)步長(zhǎng)依次調(diào)整參數(shù)值尋找模型準(zhǔn)確率最高的參數(shù)值。
通過該方法,最終確定模型的兩個(gè)主要參數(shù),如表3所示。其中,Kernel 代表算法使用的內(nèi)核模型;C 代表誤差項(xiàng)的正則化參數(shù);Gamma 為用于非線性SVM 的超參數(shù),隱含地決定了數(shù)據(jù)映射到新特征空間后的分布狀況。
Table 3 Main parameters表3 主要參數(shù)
在控制模型核心參數(shù)相同的條件下,分別對(duì)FPGA 公有云平臺(tái)前端頁面中的Web 元素功能進(jìn)行自動(dòng)化測(cè)試,得到模型的主要評(píng)價(jià)指標(biāo),如表4所示。
Table 4 Evaluation index of classification model表4 分類模型的評(píng)價(jià)指標(biāo)(%)
由表4 可知,SVM 的準(zhǔn)確率相較于決策樹模型提高4.43%;相較于樸素貝葉斯分類模型,準(zhǔn)確率提高5.12%。
將測(cè)試用例輸入自動(dòng)化測(cè)試系統(tǒng),執(zhí)行兩個(gè)頁面的測(cè)試任務(wù),預(yù)測(cè)96 個(gè)Web 元素的測(cè)試用例,測(cè)試結(jié)果如表5所示。
Table 5 Test case operation status表5 測(cè)試用例運(yùn)行狀況
本文為解決現(xiàn)有Web 應(yīng)用的自動(dòng)化測(cè)試任務(wù)中,測(cè)試用例只能根據(jù)測(cè)試人員設(shè)定好的順序執(zhí)行,無法鏈接新的Web 元素,尤其在頁面更新后,仍需要重寫測(cè)試用例的問題。借助SVM 根據(jù)歷史測(cè)試經(jīng)驗(yàn),對(duì)新頁面進(jìn)行測(cè)試。
實(shí)驗(yàn)結(jié)果表明,SVM 相較于決策樹及樸素貝葉斯模型,分類效果更優(yōu)。借助該系統(tǒng)執(zhí)行Web 元素的測(cè)試任務(wù),可實(shí)時(shí)獲取測(cè)試用例的執(zhí)行狀況,及時(shí)將遇見的問題反饋給開發(fā)人員。下一步,將持續(xù)優(yōu)化測(cè)試用例的覆蓋率,以提高測(cè)試自動(dòng)化程度。