摘 要:近年來,以Web應(yīng)用為典型代表的各種網(wǎng)絡(luò)軟件產(chǎn)品得到普及推廣,由此Web自動化測試技術(shù)逐漸得到發(fā)展完善。文中對Web應(yīng)用自動化測試技術(shù)與主流工具進行了詳細說明,列舉了近期高校研究生的相關(guān)科研成果。首先,采取列舉的方式對Web自動化測試技術(shù)進行簡要介紹,對Web自動化測試流程進行概括說明,并分析了其面臨的諸多現(xiàn)實挑戰(zhàn)。然后,對目前主流的Web自動化測試框架和近期高校研究生的科研成果進行了分析探究。最后,在總結(jié)近期研究成果的基礎(chǔ)上,展望了未來Web自動化測試技術(shù)與框架的發(fā)展趨勢,以期為其未來的發(fā)展提供有效的參考和借鑒。
關(guān)鍵詞:Web應(yīng)用;自動化測試;測試腳本;測試框架;測試工具;驅(qū)動測試
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:2095-1302(2024)08-00-04
DOI:10.16667/j.issn.2095-1302.2024.08.020
0 引 言
近年來,隨著互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,以Web應(yīng)用為典型代表的網(wǎng)絡(luò)產(chǎn)品得到普及推廣,逐漸融入我們?nèi)粘I畹姆椒矫婷妗eb應(yīng)用以操作簡單、使用便捷的特點成為當(dāng)今軟件產(chǎn)品開發(fā)使用的主流[1]。為保證Web軟件在使用過程中的流暢便捷與安全穩(wěn)定,進行相應(yīng)的軟件測試工作非常有必要。目前,軟件測試已成為軟件產(chǎn)品開發(fā)過程中不可或缺的工作流程,用以確保系統(tǒng)在發(fā)布或交付前可以滿足用戶需求[2]。
當(dāng)下,Web應(yīng)用功能需求變更頻繁,版本迭代速度較快,造成測試任務(wù)持續(xù)增長,采取傳統(tǒng)的手工測試方法進行測試不僅成本較高,還存在諸多局限性,已無法滿足紛繁復(fù)雜的Web應(yīng)用測試任務(wù)要求。在主流的開發(fā)環(huán)境下,回歸測試等需要重復(fù)執(zhí)行的測試為自動化測試技術(shù)的大范圍使用提供了條件,而自動化測試技術(shù)的使用也極大減少了重復(fù)性工作。
文中主要介紹了Web自動化測試過程中涉及的技術(shù)方法以及面臨的風(fēng)險挑戰(zhàn),對近期發(fā)表的論文中涉及的方法技術(shù)以及框架工具進行了說明,總結(jié)近期領(lǐng)域內(nèi)的研究成果并對其未來的發(fā)展進行了展望。
1 Web自動化測試概述
1.1 常見Web自動化測試技術(shù)
1.1.1 錄制與回放測試
所謂的“錄制-回放”技術(shù)指的是將需要測試的流程采取人工手動的方式執(zhí)行一遍,這種方式無需編程技巧即可實現(xiàn),但其穩(wěn)定性較差,一旦UI產(chǎn)生變化,就會影響到測試執(zhí)行過程和最終效果[3]。
1.1.2 腳本測試
腳本測試即編寫測試腳本對測試對象進行自動化測試。目前,測試腳本主要被劃分為4類,分別是:線性腳本、結(jié)構(gòu)化腳本、數(shù)據(jù)驅(qū)動腳本以及關(guān)鍵字驅(qū)動腳本。
線性腳本是四類腳本中最簡單的一種,如同流水賬般對測試過程進行描述,通常采取自動錄制的方式獲??;結(jié)構(gòu)化腳本相當(dāng)于采用結(jié)構(gòu)化設(shè)計的程序,通常用于腳本優(yōu)化;基于數(shù)據(jù)驅(qū)動和關(guān)鍵字驅(qū)動腳本的出現(xiàn)使得腳本編寫更加便捷,一定程度上減少了腳本維護的工作量。目前,測試工具采用的腳本技術(shù)以數(shù)據(jù)驅(qū)動腳本和關(guān)鍵字驅(qū)動腳本為主。腳本制作開發(fā)過程中,一般將上述幾種腳本組合使用。
1.1.3 數(shù)據(jù)驅(qū)動測試
數(shù)據(jù)驅(qū)動測試將測試數(shù)據(jù)與測試腳本進行了分離。
與“錄制-回放”技術(shù)相比,數(shù)據(jù)驅(qū)動測試使得腳本利用率和可維護性得到了大幅提升,但是數(shù)據(jù)驅(qū)動測試局限性也較為明顯,那就是被測對象單一,執(zhí)行操作務(wù)必一致,參數(shù)形式有嚴(yán)格限制[4]。因此數(shù)據(jù)驅(qū)動測試適用于邏輯簡單、操作不便、數(shù)據(jù)量大的測試工作。
1.1.4 關(guān)鍵字驅(qū)動測試
關(guān)鍵字驅(qū)動測試通過腳本文件里的關(guān)鍵字來展現(xiàn)測試人員的測試邏輯,測試工具工作時,只要解釋關(guān)鍵字含義即可得到數(shù)據(jù)文件[5],從而擺脫了數(shù)據(jù)驅(qū)動測試技術(shù)的限制—只能執(zhí)行一種操作[4]。關(guān)鍵字驅(qū)動將業(yè)務(wù)、腳本、數(shù)據(jù)相互剝離,降低了程序耦合性,增強了測試程序的靈活性[6]。
1.2 Web自動化測試流程
Web自動化測試首先需要搭建測試環(huán)境,設(shè)計并創(chuàng)制測試用例再自動執(zhí)行,最后顯示用例執(zhí)行結(jié)果[7]。Web的功能自動化測試可分為三步,即測試用例的自動生成與自動執(zhí)行以及測試結(jié)果的自動分析。Web軟件自動化測試過程對Web軟件測試的成功起著至關(guān)重要的作用[8]。
1.2.1 測試用例自動生成
由于Web軟件產(chǎn)品復(fù)雜多變,我們無法窮舉所有測試用例,因此在測試過程中,測試用例的自動生成技術(shù)得到了廣泛應(yīng)用。目前,可以實現(xiàn)測試用例自動生成的技術(shù)很多,如基于模型的測試用例生成方法、基于搜索的測試用例生成方法以及基于錄制與回放的測試用例生成方法等[9]。
1.2.2 測試用例自動執(zhí)行
手工進行測試用例的執(zhí)行雖然可保證測試質(zhì)量,但消耗了大量人力與時間。為減少測試時間,降低人力成本,需借助自動化測試框架或工具完成Web應(yīng)用中測試用例的自動執(zhí)行。目前,主流的Web測試框架包括Selenium、Cypress等。
1.2.3 測試結(jié)果自動分析
Web測試用例執(zhí)行將預(yù)期結(jié)果和實際結(jié)果進行對比分析的操作,找到Web應(yīng)用中出現(xiàn)的問題和缺陷,進而對Web應(yīng)用是否通過該項測試作出判斷[10]。目前,對測試結(jié)果的分析主要采取人工評審方式,為適應(yīng)不斷擴增的測試工作量,今后應(yīng)加強對測試結(jié)果的自動化分析。
1.3 Web自動化測試面臨的挑戰(zhàn)
Web自動化測試技術(shù)的普及與使用使得測試工作更加便捷,但是由于Web系統(tǒng)中集成了許多不同的技術(shù),使Web應(yīng)用的自動化測試面臨諸多挑戰(zhàn)[11]。
1.3.1 Web應(yīng)用易用性判定
Web應(yīng)用中UI界面需時常進行美觀優(yōu)化,每次添加新功能時也需要更改UI界面,使得UI測試的工作量不斷增加。同時,因為工具或框架本身不具有審美觀和想象力[12],因此處理界面是否美觀、軟件是否易用等問題時,Web自動化測試技術(shù)并不能取代人工判斷,需要人工測試介入[13]。
1.3.2 復(fù)雜邏輯處理
Web應(yīng)用包含復(fù)雜的邏輯和運算需求時,使用自動化測試工具完成這些業(yè)務(wù)邏輯較為困難,需要花大量的時間和精力[14],相比人工測試,自動化測試耗時更長,投入更大。
1.3.3 測試腳本執(zhí)行時間較長
在Web應(yīng)用的自動化測試過程中,測試腳本的執(zhí)行需要消耗大量時間,但在現(xiàn)實工作中,一個軟件產(chǎn)品的測試周期有嚴(yán)格的時間限制,如何在規(guī)定時間內(nèi)完成產(chǎn)品的測試任務(wù),確保軟件產(chǎn)品的質(zhì)量是不容忽視的現(xiàn)實問題。
1.3.4 選取合適的測試工具
目前,自動化測試工具層出不窮。針對不同的測試階段以及測試任務(wù),選取對應(yīng)的Web自動化測試工具才能順利完成測試。隨著自動化測試工具與框架持續(xù)更新,選取合適的自動化測試工具也逐漸成為Web應(yīng)用自動化測試過程中面臨的一大挑戰(zhàn)。
2 Web應(yīng)用自動化測試研究
2.1 主流的Web測試框架
目前,主流的Web應(yīng)用自動化測試框架主要有以下幾種。
2.1.1 Selenium
Selenium是一款開源的Web應(yīng)用自動化測試框架,可以在Chrome、Firefox等多種瀏覽器中使用,支持Java、Python、C#等編程語言,是目前技術(shù)最為成熟、使用最為廣泛的Web應(yīng)用自動化測試框架之一。
Selenium從首次發(fā)布到現(xiàn)今歷經(jīng)多次版本更迭,目前Selenium1被棄用,使用最多的是Selenium2及以上版
本[15]。Selenium2又名Selenium Web Driver,是Selenium1與Web Driver的結(jié)合[16]。
Selenium1由Selenium IDE、Selenium Grid、Selenium RC組成。其中Selenium IDE用于錄制和回放腳本;Selenium Grid可實現(xiàn)多臺機器并發(fā)執(zhí)行測試用例;Selenium RC是軟件的核心組件,可借助代理服務(wù)器訪問瀏覽器[17]。
Selenium2使用Web Driver訪問瀏覽器,與Selenium1相比,Selenium2使用更加便捷高效。
Selenium的工作流程:首先編寫測試腳本程序,然后運行測試腳本并向瀏覽器驅(qū)動Web Driver發(fā)送HTTP請求,Web Driver接收到請求后進行解析并將請求發(fā)送給瀏覽器,瀏覽器接收到請求后執(zhí)行相關(guān)操作。
2.1.2 Appium
Appium是一個開源的、跨平臺的自動化測試框架[18],支持多種移動應(yīng)用程序,包括Android和iOS等。通過Appium可以模擬用戶在移動設(shè)備上的操作,進行UI自動化測試。
Appium可二次開發(fā),支持多種類型應(yīng)用的測試和Windows、Linux等操作系統(tǒng),同時也支持多語言測試腳本編寫,并擴展改進了Web Driver協(xié)議,可直接繼承其API。Appium的最大特性是其跨平臺的兼容性[19],這使其成為目前主流的自動化測試框架之一,使用人數(shù)眾多,使用范圍廣泛。
2.1.3 Cypress
Cypress是面向Web,基于JavaScript的開源自動化測試工具,因其使用簡單和運行速度快而廣受歡迎。它提供端到端測試和內(nèi)置調(diào)試功能。
與Selenium相比,Cypress目前支持的瀏覽器種類較少,只有Chrome與Firefox瀏覽器,且只支持JavaScript語言,其適用于現(xiàn)代主流的JavaScript前端框架,包括React、Vue等。Cypress主要有以下特性:時光穿梭,即測試結(jié)束后可以查看測試過程中的每一步動作;實時重新加載,即當(dāng)測試代碼修改后,Cypress會自動加載修改的地方,并重新運行測試;可調(diào)性、自動等待、Web流量控制等。
Cypress不僅可以修改進出瀏覽器的所有內(nèi)容,還可以更改可能影響自動化瀏覽器操作的代碼,能從根本上控制自動化測試流程,因此更加穩(wěn)定可靠。
2.2 近期Web自動化測試取得的研究成果
近年來,自動化測試技術(shù)持續(xù)發(fā)展,吸引了許多高校研究生的目光,促使其加入了Web應(yīng)用自動化測試研究的隊伍,并以此為畢設(shè)課題方向,大膽創(chuàng)新,基于目前主流的測試框架和技術(shù)設(shè)計并實現(xiàn)了一系列Web自動化測試平臺,極大促進了Web自動化測試領(lǐng)域的技術(shù)發(fā)展與工具革新。
2.2.1 基于Selenium的Web自動化測試系統(tǒng)的設(shè)計與實現(xiàn)
孫婧鑫[20]在2021年設(shè)計了一種基于Selenium的Web功能自動化測試框架。該框架是一種數(shù)據(jù)驅(qū)動和關(guān)鍵字驅(qū)動技術(shù)相結(jié)合的混合型自動化測試框架。
在該框架設(shè)計過程中提出將數(shù)據(jù)驅(qū)動技術(shù)和關(guān)鍵字驅(qū)動技術(shù)相融合,利用數(shù)據(jù)驅(qū)動方式將數(shù)據(jù)和測試腳本分離,借助關(guān)鍵字驅(qū)動將業(yè)務(wù)邏輯和應(yīng)用程序分離,從而搭建了一種更為優(yōu)化的測試框架,使測試數(shù)據(jù)和測試庫的管理更便捷??蚣荛_發(fā)基于Page Object設(shè)計思想,設(shè)計了腳本分層結(jié)構(gòu),減少了測試腳本不可用的情況,一定程度上解決了實際測試過程中腳本維護工作量大及腳本健壯性差等問題。在自動化測試框架實現(xiàn)過程中將Selenium工具與TestNG單元測試工具、Jenkins持續(xù)集成工具結(jié)合,實現(xiàn)了應(yīng)用測試過程的自動化。
2.2.2 基于關(guān)鍵字驅(qū)動的Web UI自動化測試平臺的設(shè)計與實現(xiàn)
馬銀瓶[5]在2021年設(shè)計并實現(xiàn)了一種基于關(guān)鍵字驅(qū)動的Web UI自動化測試平臺。
該平臺的設(shè)計開發(fā)過程選擇關(guān)鍵字驅(qū)動作為自動化測試的實現(xiàn)方式;選擇RobotFramework集成Selenium2Library作為Web控件的底層測試庫,最終得到可提升測試效率、降低測試難度的Web UI自動化測試平臺。
框架開發(fā)中運用關(guān)鍵字驅(qū)動思想,結(jié)合RF測試框架對測試庫里的關(guān)鍵字進行封裝和拓展,存儲在關(guān)鍵字管理模塊,用于測試流程?;陉P(guān)鍵字驅(qū)動的自動化測試實現(xiàn)了測試項目管理、測試場景、測試計劃等功能模塊的構(gòu)建,最終完成了Web UI自動化測試平臺的搭建,開發(fā)測試頁面可自動上傳Web控件、定時執(zhí)行測試計劃,實現(xiàn)了測試用例的較好管理。
2.2.3 基于模型驅(qū)動的Web自動化測試平臺的研究與應(yīng)用
羊鈴霞[21]在2022年設(shè)計并實現(xiàn)了一種基于模型驅(qū)動的Web自動化測試平臺,其將基于UML模型的測試用例自動生成技術(shù)應(yīng)用到了自動化測試平臺的設(shè)計搭建中。
平臺設(shè)計過程中使用了2種UML模型,首先是借助UML用例圖明確測試需求并制定測試計劃,采用UML狀態(tài)圖對被測應(yīng)用進行行為建模。在此基礎(chǔ)上,制定了一種基于UML模型的測試策略。隨后根據(jù)對應(yīng)的UML模型圖結(jié)合測試覆蓋準(zhǔn)則設(shè)計了測試路徑以及測試數(shù)據(jù)生成算法。最后,基于相應(yīng)算法生成測試路徑和數(shù)據(jù),進而自動生成測試用例。這也是該平臺最突出的特點。
該平臺將UML模型與Selenium關(guān)鍵字驅(qū)動以及多層Web自動化測試框架等相結(jié)合,成功實現(xiàn)了測試用例的自動生成以及測試的自動化執(zhí)行,顯著提升了Web應(yīng)用的測試覆蓋率和測試效率。
3 展 望
自動化測試從最早期的“錄制-回放”技術(shù)開始,經(jīng)過歷年革新,逐步發(fā)展到當(dāng)前火熱的基于AI技術(shù)的自動化,反映了自動化測試更加智能、精準(zhǔn)、高效的發(fā)展趨勢。
隨著人工智能技術(shù)的發(fā)展成熟,其已被廣泛應(yīng)用于自動化測試領(lǐng)域。盡管AI技術(shù)已應(yīng)用到自動化測試的各個方面但其仍處于初期,需要持續(xù)革新才能滿足未來的自動化測試需求。在不遠的將來,AI技術(shù)將被廣泛應(yīng)用于Web自動化測試領(lǐng)域,實現(xiàn)Web自動化測試的智能化發(fā)展與革新,智能化測試也將成為人們研究的重點。
4 結(jié) 語
隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,Web應(yīng)用得到了普及推廣,受到廣大網(wǎng)民歡迎的同時,對其安全性、可靠性以及易用性的要求也越來越高。同時,由于互聯(lián)網(wǎng)技術(shù)的發(fā)展,Web應(yīng)用的結(jié)構(gòu)越來越復(fù)雜,功能也越來越豐富,使得其測試要求也越來越高,傳統(tǒng)的手工測試已經(jīng)無法完成日漸繁重的測試任務(wù)。因此,Web自動化測試相關(guān)技術(shù)與框架工具進入了大眾視野,受到持續(xù)關(guān)注。
目前,Web自動化測試技術(shù)日趨成熟,形成了一套完整的工作流程,同時,一批主流的自動化測試工具或框架脫穎而出,被大量應(yīng)用于現(xiàn)實工作場景。
由于Web自動化領(lǐng)域的火熱,吸引了大批高校研究生加入,他們以此為研究課題,大膽創(chuàng)新,勇于實踐,提出了諸多可行的測試方法,設(shè)計并實現(xiàn)了一批Web自動化測試平臺,極大促進了Web自動化測試領(lǐng)域的技術(shù)發(fā)展與工具革新。
注:本文通訊作者為楊麗娟。
參考文獻
[1]孫婧鑫. Web應(yīng)用的自動化測試研究[J].電腦與信息技術(shù),2020,28(5):43-44.
[2] ZHOU J G,YIN K. Automated web testing based on textual-visual UI patterns: the UTF approach. [J]. ACM sigsoft software engineering notes,2014,39(5).
[3]王靜,楊曉峰,錢斐斐.軟件自動化測試方法及其應(yīng)用研究[J].中國新通信,2021,23(7):91-92.
[4]陳臘梅.數(shù)據(jù)驅(qū)動和關(guān)鍵字驅(qū)動的研究與應(yīng)用[J].軟件,2016,37(4):90-92.
[5]馬銀瓶.基于關(guān)鍵字驅(qū)動的Web UI自動化測試平臺設(shè)計與實現(xiàn)[D].西安:西安電子科技大學(xué),2022.
[6]黨若楠,陳健.基于關(guān)鍵字驅(qū)動的Web自動化測試框架研究與實現(xiàn)[J].工業(yè)控制計算機,2017,30(9):46-47.
[7]吳伶琳,方巍. Web自動化測試開源框架研究[J].信息技術(shù)與信息化,2022,47(11):108-111.
[8] SNEHA K,MALLE G M. Research on software testing techniques and software automation testing tools [C]// 2017 International Conference on Energy,Communication,Data Analytics and Soft Computing(ICECDS). [S.l.]:[s.n.],2017:
77-81.
[9]王廷永,黃松.測試用例自動生成技術(shù)綜述[J].電子技術(shù)與軟件工程,2021,10(18):51-53.
[10]許蕾,徐寶文.一種Web應(yīng)用測試結(jié)果分析比較技術(shù)[J].計算機科學(xué),2006,33(10):269-271.
[11] LI J,JING X,HE T. An automatic execution system for web functional test base on modelling user's behaviour [C]// 2008 International Symposium on Information Science and Engineering. [S.l.]:[s.n.],2008:263-267.
[12]楊麗波.軟件自動化測試方法的發(fā)展現(xiàn)狀分析[J].無線互聯(lián)科技,2017,14(4):49-50.
[13]楊曉峰,錢斐斐,劉國靖.關(guān)于軟件自動化測試的方法分析[J].中國新通信,2021,23(10):77-78.
[14]胡湘菲. 軟件自動化測試框架研究與實現(xiàn)[D].杭州:杭州電子科技大學(xué),2018.
[15]彭新宇. 基于Selenium的Web自動化測試框架研究與實現(xiàn)[D].廊坊:北華航天工業(yè)學(xué)院,2021.
[16]莊文龍,陳惠娟.基于Selenium2的自動化測試應(yīng)用[J].福建電
腦,2019,35(8):89-91.
[17]蘆盟. 基于Selenium的Web自動化測試系統(tǒng)的設(shè)計與實現(xiàn)[D].北京:北京交通大學(xué),2020.
[18]程洋洋. 基于Appium的移動端UI自動化測試平臺的設(shè)計與實現(xiàn)[D].西安:西安電子科技大學(xué),2021.
[19]張佳慧.基于Appium的移動設(shè)備自動化軟件測試的研究與實現(xiàn)[J].信息與電腦(理論版),2022,34(2):102-107.
[20]孫婧鑫.基于Selenium的Web功能自動化測試框架的設(shè)計與實現(xiàn)[D].西安:西安石油大學(xué),2021.
[21]羊鈴霞.基于模型驅(qū)動的Web自動化測試平臺研究與應(yīng)用[D].綿陽:西南科技大學(xué),2022.
收稿日期:2023-08-27 修回日期:2023-09-28
作者簡介:米旭日(1999—),男,碩士在讀,研究方向為計算機技術(shù)。
楊麗娟(1981—),女,工學(xué)碩士,副教授,研究方向為計算機技術(shù)。
劉益瑋(2000—),男,碩士在讀,研究方向為計算機技術(shù)。