程雪梅,翟宇鵬
(四川大學(xué)計算機學(xué)院,成都 610065)
測試用例修復(fù)的方法與工具綜述
程雪梅,翟宇鵬
(四川大學(xué)計算機學(xué)院,成都 610065)
由于功能的增加、性能的優(yōu)化、錯誤的修復(fù)等原因,軟件處于不斷演化中。軟件的變化導(dǎo)致在回歸測試中部分測試用例失效,直接丟棄失效用例會降低用例集檢測錯誤的能力,減弱回歸測試的有效性,測試用例修復(fù)技術(shù)很好地解決這個問題。測試用例修復(fù)旨在通過對失效測試用例中的測試元素進行添加、修改、刪除等修復(fù)操作,使該測試用例在新版本軟件的回歸測試中執(zhí)行通過。通過系統(tǒng)文獻綜述的方法,首先對相關(guān)文獻進行檢索,然后通過EndNote、Bibexcel、RefViz工具對檢索結(jié)果進行文獻計量分析,最后完成文獻綜述。
回歸測試;測試用例修復(fù);測試用例演化;系統(tǒng)文獻綜述;文獻計量分析
科技的進步推動社會的發(fā)展,軟件系統(tǒng)逐漸應(yīng)用于社會的各個領(lǐng)域中,人們對于軟件質(zhì)量的要求也越來越高。為了保證改變過后的軟件的質(zhì)量,必須對其進行回歸測試。軟件的變化往往導(dǎo)致原有的測試用例集中的某些測試用例失效,直接丟棄失效用例會降低用例集檢測錯誤的能力,減弱回歸測試的有效性,測試用例修復(fù)(test repair)技術(shù)解決了此問題。
回歸測試是軟件測試過程的一部分,是指對改變過后的新的軟件版本進行重新測試,旨在驗證軟件的改變部分沒有引進新的不可預(yù)期的錯誤。測試用例修復(fù)指對變化后程序中不可用的測試用例執(zhí)行修復(fù)操作,使其可以在變化后的程序中順利執(zhí)行通過[1]。
本文主要針對在回歸測試中測試用例修復(fù)的問題,對歷年的文獻進行整理分析,回答下面兩個問題:
(1)回歸測試中測試用例修復(fù)有哪些方法與工具?
(2)該領(lǐng)域目前的研究熱點和未來的發(fā)展趨勢是什么?
本文使用系統(tǒng)文獻綜述方法對課題進行分析,提取出研究學(xué)者正在或已經(jīng)研究出來的方法和工具,總結(jié)目前沒有解決的難題,預(yù)測該領(lǐng)域未來的研究趨勢。為研究者做研究提供系統(tǒng)性的參考;為工業(yè)界提供決策的參考;為軟件工程教材的編寫提供有用的參考。
本文按照圖1的系統(tǒng)文獻綜述框架開展了回歸測試中測試用例修復(fù)方法和工具的系統(tǒng)文獻綜述。
1.1 作者分析
總共檢索出302篇相關(guān)文獻。利用工具Bibexcel對這302篇文獻的作者進行分析?!窘Y(jié)論】結(jié)果顯示Khurshid Safraz和Orso Alessandro出現(xiàn)的次數(shù)分別為6次和5次,發(fā)表的相關(guān)文獻較多,是較為有影響力的作者,但是整體上未能形成核心作者群,高產(chǎn)作者較少。
1.2 期刊分析
使用EndNote工具對檢索到的302篇文獻進行期刊類型分析?!窘Y(jié)論】結(jié)果顯示目前對于該課題的研究成果的主要呈現(xiàn)形式是會議記錄,其次是期刊文章,顯示出該課題在近幾年逐漸引起研究者的關(guān)注,會議中被提及的次數(shù)較多但是成熟的研究成果并不多見。
圖1 系統(tǒng)文獻綜述框架
1.3 年份分析
通過閱讀文獻的關(guān)鍵詞進行第一輪篩選,剩下84篇文獻,對這84篇文獻進行年份分析?!窘Y(jié)論】從結(jié)果可以看出從2003年開始,回歸測試用例修復(fù)問題的關(guān)注度呈上升趨勢,特別是從2009年到2010年上升幅度最明顯且在2010年達到頂峰。
1.4 關(guān)鍵詞分析
關(guān)鍵詞分析可以揭示文獻所屬領(lǐng)域和研究主題。對篩選過后剩下的84篇文獻進行關(guān)鍵詞分析,使用Bibexcel工具對其進行關(guān)鍵詞詞頻分析?!窘Y(jié)論】test、testing、testingsoftware、GUI、Web、Unit出現(xiàn)頻次相對較高。
1.5 研究熱點分析
通過RefViz工具對剩下的84篇文獻進行聚類分析。在工具中查看文獻分析的Matrix圖,圖2,圖中有顏色的小方塊的顏色越深表示詞匯共現(xiàn)頻率越高,其中execution、dynamic、flow等詞共現(xiàn)頻率較高。結(jié)合matrix圖的結(jié)果可以看出當前關(guān)于回歸測試用例修復(fù)問題的研究熱點為符號化執(zhí)行方法、動態(tài)分析方法和靜態(tài)分析方法,主要針對的程序類型為GUI和Web程序。
2.1 GUI測試用例修復(fù)
由于GUI測試用例執(zhí)行的方式,往往現(xiàn)實中對對GUI程序的構(gòu)造小小的變化都會導(dǎo)致大量的回歸測試用例不可用。
圖2 Refviz分析結(jié)果(matrix圖)
(1)基于事件流圖(EFG)的GUI測試用例修復(fù)
Memon等人在2003年提出GUI回歸測試中不可用測試用例的修復(fù)問題,起始狀態(tài)不正確、中間事件對的非法執(zhí)行順序是導(dǎo)致GUI回歸測試用例不可用的兩個原因。如果一個測試用例的起始狀態(tài)不正確,那么它不可修復(fù)。針對中間事件對的非法執(zhí)行順序的情況,他們運用GUI事件流圖建立GUI回歸測試框架。
(2)基于測試腳本維護的GUI測試用例修復(fù)
Grechanik等人在2009年提出通過測試腳本將測試過程自動化,測試腳本通過作用于GUI的對象達到測試的效果。Grechanik等人通過研究GUI對象變化及其對應(yīng)的測試腳本關(guān)系,提出一種維護黑盒測試腳本的REST[1-3]方法:確定GUI程序的哪些對象被修改了,通過此信息找出且確認測試腳本中被修改影響到的部分。
(3)動靜分析結(jié)合的GUI測試腳本修復(fù)
Daniel等人在2011年提出采用將靜態(tài)分析和動態(tài)分析相結(jié)合的白盒方法進行GUI腳本的修復(fù)。在靜態(tài)分析GUI腳本并建立狀態(tài)結(jié)果后,用動態(tài)分析方法將GUI腳本和修改結(jié)合進行測試用例修復(fù)。該方法能夠直接獲得只被GUI修改部分影響的測試用例集,在修復(fù)時不需要執(zhí)行所有的測試腳本,只修改被修改影響到的部分[1,4]。
2.2 Web測試用例修復(fù)
當代Web應(yīng)用在生活中廣泛得到使用,回歸測試對于提高Web應(yīng)用可靠性來說是一個很有建設(shè)性的方法。為了提高Web回歸測試的效率,提出了Web回歸測試用例修復(fù)的技術(shù)[5-7]。
(1)基于自動修復(fù)會話數(shù)據(jù)的Web測試用例修復(fù)
Alshahwan等人在2008年提出了基于會話數(shù)據(jù)的Web測試用例修復(fù)技術(shù),一種完全自動化的的技術(shù)。由于web應(yīng)用的變化,導(dǎo)致一些會話數(shù)據(jù)可能被淘汰,在新版本上無法正常使用。Alshahwan等人提出了一種基于會話概念的算法,當會話在新版本上不可使用時,該算法可以修復(fù)會話,是第一個基于會話數(shù)據(jù)的Web回歸測試方法。
(2)基于版本行為比較的Web測試用例修復(fù)
2011年Choudhary等人提出了一種針對下面兩種失效測試用例的自動修復(fù)方法:1)測試用例由于Web頁面的元素的期望值與實際值不一致而執(zhí)行失??;2)測試用例由于Web頁面元素移動位置或者發(fā)生改變而執(zhí)行失敗。
在小學(xué)體育學(xué)科教學(xué)中教師必須考慮到小學(xué)生的身心發(fā)展特點,從而制定出小學(xué)生喜聞樂見的教學(xué)方式方法。為此,在小學(xué)體育學(xué)科教學(xué)的實踐創(chuàng)新上應(yīng)當盡量采用游戲、比賽、情景等教學(xué)方法,激發(fā)學(xué)生的運動興趣,讓學(xué)生體驗到運動所帶來的愉悅感,從而產(chǎn)生強大、持久的內(nèi)驅(qū)力,培養(yǎng)學(xué)生的終身體育意識。由于小學(xué)生的年齡特點,興奮占優(yōu)勢,興奮抑制轉(zhuǎn)換快,好奇心重,上進心強,故適度變換教學(xué)手段會取得比較好的效果,這也是未來小學(xué)體育學(xué)科教學(xué)中實施實踐創(chuàng)新的突破口。
(3)Web測試用例修復(fù)工具
Druk等人在2013年提出ReFit工具,用于對合適的測試用例進行重構(gòu)的Eclipse插件。
ReFit的目的在于當發(fā)生重構(gòu)時通過讓產(chǎn)品代碼、測試需求和測試代碼保持一致的方式自動維護有效的測試用例。
2.3 白盒測試用例修復(fù)
在軟件系統(tǒng)的發(fā)展中測試是一項很重要的工作。白盒測試是基于源代碼的測試。白盒測試用例修復(fù)問題越來越受到人們的關(guān)注[8,9]。
(1)白盒測試用例修復(fù)方法
①基于符號執(zhí)行的測試用例修復(fù)
②針對方法聲明改變的測試用例修復(fù)
在程序演化中,由于方法聲明的改變,部分原有測試用例集可能無法使用。Mirzaaghaei等人在2010年提出了一種叫TcA(TestCareAssistant)的技術(shù),它能夠自動修改測試用例和使參數(shù)適應(yīng)改變了的方法來達到修復(fù)測試用例和保持其原來的行為的目的。TcA結(jié)合了源代碼定義和數(shù)據(jù)流分析來修復(fù)由于參數(shù)或返回值改變而沒有通過編譯的測試用例。
(2)白盒測試用例修復(fù)工具
①ReAssert工具
Daniel等人在2009年研發(fā)的輔助工具ReAssert,第一個用于單元測試的能夠自動修復(fù)不可用用例的工具。ReAssert可以作為Eclipse的插件使用,也可以通過Java library或者命令行使用,可以修復(fù)用JUnit 3.*和4.*寫的測試用例[10]。
②TestCareAssistant工具
Mirzaaghaei等人在2010年提出了TcA技術(shù),該技術(shù)解決了方法聲明改變造成測試用例編譯出錯導(dǎo)致測試用例失效的問題,在2011年他們將此技術(shù)運用于實踐,開發(fā)出了工具TestCareAssistant,TestCareAssistant是一個Eclipse插件用來自動修復(fù)失效的測試用例。
2.4 測試用例修復(fù)方法與工具總結(jié)
通過前面對回歸測試中測試用例修復(fù)目前存在的方法與工具的介紹,進行簡單的總結(jié)與比較,結(jié)果如表格1所示。
3.1 目前存在的挑戰(zhàn)
軟件系統(tǒng)的發(fā)展是處于不斷演化中的,導(dǎo)致用于回歸測試的測試用例集也處于不斷演化中,吸引了大量研究學(xué)者對于回歸測試中測試用例修復(fù)問題的關(guān)注。目前測試用例修復(fù)的研究面臨的挑戰(zhàn)包括:(1)對于測試用例是否可修復(fù)的判定,仍然沒有明確的定義;(2)現(xiàn)有的修復(fù)技術(shù)所應(yīng)用的領(lǐng)域很狹隘;(3)缺乏有效的測試用例修復(fù)工具;(4)如何提高測試用例修復(fù)技術(shù)的準確性依然是一個難題。
3.2 研究熱點和趨勢
針對本文中提出的現(xiàn)有的測試用例修復(fù)的技術(shù),并且通過RefViz工具對文獻進行分析后,目前對于該課題的研究熱點包括為符號化執(zhí)行方法、動態(tài)分析方法和靜態(tài)分析方法,主要針對的程序類型為GUI和Web程序??梢钥偨Y(jié)出關(guān)于回歸測試中測試用例修復(fù)問題在未來的發(fā)展趨勢如下:(1)符號化執(zhí)行方法在測試用例修復(fù)問題中的研究;(2)動靜態(tài)分析方法結(jié)合分析的研究;(3)如何將現(xiàn)有的測試用例修復(fù)技術(shù)應(yīng)用到其他程序中將會被越來越多的學(xué)者關(guān)注。
表1 回歸測試中測試用例修復(fù)方法與工具總結(jié)表
[1]張智軼,陳振宇,徐寶文.et al.測試用例演化研究進展.軟件學(xué)報,2013.
[2]Grechanik M,Q Xie,F Chen.Maintaining and Evolving GUI-Directed Test Scripts[C].Software Engineering,2009.ICSE 2009.IEEE 31st International Conference on.Year:408-418.
[3]Grechanik M,Q Xie,F Chen.Experimental Assessment of Manual Versus Tool-Based Maintenance of GUI-Directed Test Scripts[C]. Software Maintenance,2009.ICSM 2009.IEEE International Conference on.Year:9-18.
[4]Daniel B,Q Luo,M Mirzaaghaei.et al.Automated GUI Refactoring and Test Script Repair(Position Paper)[J].2011,
[5]Dobolyi K,W Weimer.Harnessing Web-Based Application Similarities to Aid in Regression Testing[C].Software Reliability Engineering,2009.ISSRE'09.20th International Symposium on.Year:71-80.
[6]Choudhary S R,D Zhao,H Versee.et al.Water:Web Application Test Repair[C],Year:24-29.
[7]Marin B,T Vos,G Giachetti.et al.Towards Testing Future Web Applications[C].Research Challenges in Information Science(RCIS),2011 Fifth International Conference on.Year:1-12.
[8]Daniel B,T Gvero,D Marinov.On Test Repair Usinqg Symbolic Execution[C],Year:207-218.
[9]Mirzaaghaei M,F Pastore,Pezze.et al.Automatically Repairing Test Cases for Evolving Method Declarations[C].Software Maintenance(ICSM),2010 IEEE International Conference on.Year:1-5.
[10]Daniel B,V Jagannath,D Dig.et al.ReAssert:Suggesting Repairs for Broken Unit Tests[C].Automated Software Engineering,2009. ASE'09.24th IEEE/ACM International Conference on.Year:433-444.
A Survey of Methods and Tools for Test Case Repair
CHENG Xue-mei,ZHAI Yu-peng
(College of Computer Science,Sichuan University,Chengdu 610065)
Due to the increase in function,performance optimization,the error of repair,the software is in continuous evolution.The software change lead to part of the test cases in regression testing failure,simply discard this part of the test cases will will reduce the ability to detect and weaken the effectiveness of regression testing,the test repair technology solved the problem very well.the test repair aims to repair failure test cases in the test element having repair operations such as add,modify,delete,make the test case in the new version software regression testing performed by.Through systematic literature review method,first retrieve the relevant literature,and then through endnote, bibexcel tool for retrieving results bibliometric analysis,and finally completed the literature review.
Regression Testing;Test Case Repair;Test Cases Evolution;Literature Review System;Literature Measurement Analysis
1007-1423(2017)02-0025-05
10.3969/j.issn.1007-1423.2017.02.006
程雪梅(1991-),女,重慶萬州人,碩士,研究方向為軟件工程與軟件測試
2016-11-22
2017-01-10
四川省應(yīng)用基礎(chǔ)研究項目(No.2014JY0112)
翟宇鵬(1992-),男,江蘇興化人,碩士,研究方向為嵌入式軟件開發(fā)與測試