跳到主要内容
研究论文

Python程序错误定位的实证研究

出版:2024年6月13日 出版历史
  • 获取引文警报
  • 摘要

    尽管它作为一种编程语言广受欢迎,特别是在数据科学程序等新领域,但针对Python的故障定位研究相对较少。尽管有一些关于C/C++和Java等编程语言的研究结果(这是故障定位研究中最常见的选择)可能会被其他语言所取代,Python的动态特性以及该语言在实践中的使用方式是否会影响经典故障定位方法的功能,这仍然是有待研究的问题。本文是第一篇针对真实Python程序和故障进行故障定位的多系列大规模实证研究。使用Zou等人最近对Java中的故障定位进行的大规模实证研究(Zou等人2021)作为我们研究的基础,我们研究了有效性(即定位准确性)、效率(即运行时性能)和其他特征(如不同实体粒度)四个系列(基于谱、基于变异、谓词切换和基于堆栈跟踪)中的七种著名的错误缩放技术,针对来自13个开源Python项目的135个错误错误InPy策展收藏(Widyasari等人,2020年)。这些结果复制了Python关于Java的几个已知结果,并阐明了Pytython的特性是否会影响故障定位功能。本文附带的复制包包括有关我们实验的详细数据以及工具FauxPy公司我们为进行研究而实施的。

    工具书类

    [1]
    Abreu R、Zoeteweij P、van Gemund AJC(2007)《基于频谱的故障定位准确性》。摘自:《测试论文集:学术和工业会议实践与研究技术-突变》,第89-98页
    [2]
    Amrehin V、Greenland S和McShane B科学家反对统计显著性自然2019 567 305-307
    [3]
    B Le T-D,Lo D,Le Goues C,Grunske L(2016)使用可能不变量的基于学习到秩的故障定位方法。摘自:第25届软件测试与分析国际研讨会论文集,第177-188页。
    [4]
    Batchelder N(2023)Coverage.py。https://coverage.readthedocs.io/。[在线;2023年4月6日访问]
    [5]
    Bettenburg N、Just S、Schröter A、Weiss C、Premraj R、Zimmermann T(2008)什么是好的错误报告?摘自:第16届ACM SIGSOFT软件工程基础国际研讨会论文集,第308–318页。
    [6]
    Chen Z,Chen L,Zhou Y,Xu Z,Chu WC,Xu B(2014)《Python程序的动态切片》。2014年IEEE第38届计算机软件和应用年会,第219-228页。
    [7]
    Cleve H,Zeller A(2005)《找出程序失败的原因》。摘自:第27届国际软件工程会议记录,第342-351页。
    [8]
    宇宙射线(2019)《宇宙射线:蟒蛇的突变测试》。https://cosmic-ray.readthedocs.io网站/。[在线;访问日期:2023年4月6日]
    [9]
    丹尼尔·WW生物统计学:健康科学分析的基础1999年7月威利
    [10]
    Debroy V,Wong WE,Xu X,Choi B(2010)一种提高故障定位技术有效性的基于分组的策略。摘自:2010年第十届国际质量软件会议,第13-22页。
    [11]
    Dereziáska A,Hałas K(2014)《Python语言突变算子分析》。在:Zamojski W,Mazurkiewicz J,Sugier J,Walkowiak T,Kacprzyk J(编辑)第9届可靠性和复杂系统国际会议论文集,第155–164页
    [12]
    Do H、Elbaum S和Rothermel G支持测试技术的受控实验:基础设施及其潜在影响Empir软件工程2005 10 4 405-435
    [13]
    Eniser HF、Gerasimou S、Sen A Hähnle R和van der Aalst W DeepFault:深度神经网络的故障定位软件工程的基本方法2019年施普林格国际出版171-191
    [14]
    经验软件工程研究中的Furia CA、Robert Feldt和Richard Torkar Bayesian数据分析IEEE Trans软件工程2021 47 9 1786-1810
    [15]
    Furia CA、Torkar R、Feldt R(2022)《将贝叶斯分析指南应用于经验软件工程数据:编程语言和代码质量的案例》。ACM Trans Softw Eng Methodol公司31(3):40:1-40:38
    [16]
    Gazzola L、Micucci D和Mariani L自动软件修复:一项调查IEEE Trans软件工程2019 45 34-67
    [17]
    郭Q,谢X,李Y,张X,刘Y,李X,沈C(2020)《深度学习框架的自动化测试》。摘自:第35届IEEE/ACM自动化软件工程国际会议论文集,第486-498页。
    [18]
    Hammacher C(2008)高效Java动态切片器的设计与实现。学士学位论文
    [19]
    Humbatova N、Jahangirova G、Bavota G、Riccio V、Stocco A、Tonella P(2020)《深度学习系统中真实断层的分类》。摘自:ICSE’20:42届国际软件工程会议,韩国首尔,2020年6月27日至7月19日,第1110-1121页。ACM公司。https://doi.org/10.1145/3377811.3380395
    [20]
    Hutchins M、Foster H、Goradia T、Ostrand T(1994)《基于数据流和控制流的测试充分性标准的有效性实验》。摘自:《第16届软件工程国际会议论文集》,第191-200页。
    [21]
    Sarhan QI、Szatmári A、Tóth R、Beszédesá(2021)CharmFL:Python的故障定位工具。摘自:IEEE第21届国际源代码分析和操作工作会议(SCAM),第114-119页。
    [22]
    Islam Md J、Nguyen G、Pan R、Rajan H(2019)《深度学习错误特征的综合研究》。摘自:第27届ACM欧洲软件工程联合会议记录和软件工程基础研讨会,第510-520页。
    [23]
    Islam Md J、Pan R、Nguyen G、Rajan H(2020)《修复深层神经网络:修复模式和挑战》。摘自:ACM/IEEE第42届软件工程国际会议论文集,第1135-1146页。
    [24]
    Islam MdJ、Ahmad S、Haque F、Reaz MBI、Bhuiyan MAS和Islam MdR最小最大似然归一化在主题-变异肌电模式识别中的应用IEEE Trans Instrum测量2022 71 1-12
    [25]
    岳佳和马克·哈曼突变检测发展的分析与调查IEEE Trans软件工程2011 37 5 649-678
    [26]
    Jones JA,Harrold MJ(2005)狼蛛自动故障定位技术的经验评估。摘自:第20届IEEE/ACM自动化软件工程国际会议论文集,第273-282页。
    [27]
    Just R(2014)《主要变异框架:java的高效可扩展变异分析》。摘自:软件测试与分析国际研讨会论文集,第433-436页。
    [28]
    Just R,Jalali D,Ernst MD(2014)Defects4j:现有故障数据库,用于对java程序进行受控测试研究。摘自:软件测试与分析国际研讨会论文集,第437-440页。
    [29]
    Just R、Jalali D等人(2023年)《缺陷》4J撰稿人。缺陷4J存储库。https://github.com/rjust/defaults4j#导出-特定于版本的特性
    [30]
    Juzgado NJ,Gómez OS(2010)《软件工程实验的复制》。在:经验软件工程和验证——国际暑期学校,LASER 2008-2010,意大利埃尔巴岛,修订教程,计算机科学讲稿第7007卷,第60-88页。斯普林格。
    [31]
    Ko AJ,Myers BA(2008)《调试的革新:询问和回答关于程序行为的为什么和为什么不的问题》。摘自:Schäfer W,Dwyer MB,Gruhn V(eds)第30届国际软件工程会议(ICSE 2008),德国莱比锡,2008年5月10日至18日,第301-310页。ACM公司。https://doi.org/10.1145/1368088.1368130
    [32]
    Lam P、Bodden E、Lhoták O、Hendren L(2011)《Java程序分析的烟尘框架:回顾》。参加:Cetus用户和编译器基础设施研讨会(Cetus 2011)。https://www.bodden.de/pubs/lblh11soot.pdf
    [33]
    B.Le T-D、Thung F、Lo D(2013)理论与实践,它们匹配吗?基于频谱的故障定位案例。摘自:IEEE软件维护国际会议,第380-383页。
    [34]
    李磊,王杰,权H(2022)《手术刀:Python静态分析框架》,预印本arXiv:2202.11840
    [35]
    Li X,Zhang L(2017)为故障定位串联转换程序和测试。程序。ACM计划。Lang.,1(OOPSLA),第1-30页。复制包:https://github.com/deeprl4fl2021icse/deperl4fl-2021-icse
    [36]
    Li X、Li W、Zhang Y和Zhang L(2019)DeepFL:集成多个故障诊断维度以进行深层故障定位。摘自:第28届ACM SIGSOFT软件测试与分析国际研讨会论文集,第169-180页。
    [37]
    Li Y,Wang S,Nguyen TN(2021)使用代码覆盖表示学习进行故障定位。摘自:第43届软件工程国际会议论文集,第661-673页。
    [38]
    Lou Y,Zhu Q,Dong J,Li X,Sun Z,Hao D,Zhang L,Zhang-L(2021)通过基于图形的表示学习推进基于覆盖的故障定位。摘自:第29届ACM欧洲软件工程联合会议记录和软件工程基础研讨会,第664-676页。
    [39]
    Ma Y-S、Offutt J和Kwon YR MuJava:一个自动类变异系统软件测试验证可靠性2005 15 2 97-133
    [40]
    MacIver D,Hatfield-Dodos Z,Contributors M(2019)Hypothesis:基于属性测试的新方法。开源软件杂志4(43):1891–1893。https://doi.org/10.21105/joss.01891
    [41]
    McConnell S(2004)Code Complete,第二版。Microsoft新闻
    [42]
    Moon S,Kim Y,Kim M,Yoo S(2014)《询问变种:变异错误程序以进行错误定位》。摘自:IEEE第七届软件测试、验证和确认国际会议,第153-162页。
    [43]
    Mukherjee S,Almanza A,Rubio-González C(2021)修复Python构建再现性的依赖性错误。在:第30届ACM SIGSOFT软件测试与分析国际研讨会论文集,第439–451页。
    [44]
    Offutt AJ,Lee A,Rothermel G,Untch RH,Zapf C(1996)充分突变算子的实验测定。ACM Trans Softw Eng Methodol公司5(2):99–118。国际标准刊号1049-331X
    [45]
    Mike Papadakis和Yves Le Traon Metallaxis-fl:基于突变的故障定位软件测试验证可靠性2015 25 5–7 605-628
    [46]
    Papadakis M,Kintis M,Zhang J,Jia Y,Traon YL,Harman M(2019)第六章-突变检测进展:分析和调查。《计算机进步》第112卷,第275-378页。
    [47]
    Parnin C,Orso A(2011a)自动化调试技术真的能帮助程序员吗?摘自:2011年软件测试与分析国际研讨会论文集,第199-209页。
    [48]
    Parnin C,Orso A(2011b)自动化调试技术真的能帮助程序员吗?摘自:Dwyer MB,Tip F(eds)《第20届软件测试与分析国际研讨会论文集》,ISSTA 2011,加拿大安大略省多伦多,2011年7月17日至21日,第199-209页。ACM公司。https://doi.org/10.1145/2001420.2001445
    [49]
    Pearson S、Campos J、Just R、Fraser G、Abreu R、Ernst MD、Pang D、Keller B(2017)评估和改进故障定位。摘自:第39届国际软件工程会议记录,第609-620页。
    [50]
    Rahman F、Posnett D、Hindle A、Barr E、Devanbu P(2011)《检查漏洞:命中还是未命中?摘自:第19届ACM SIGSOFT研讨会和第13届欧洲软件工程基础会议记录,第322-331页。
    [51]
    Renieres M,Reiss SP(2003)最近邻查询的故障定位。摘自:第18届IEEE自动化软件工程国际会议论文集,第30-39页。
    [52]
    Reps T,Ball T,Das M,Larus J(1997)2000年问题应用程序的软件维护程序分析的使用。摘自:第六届欧洲软件工程会议记录,与第五届ACM SIGSOFT软件工程基础国际研讨会联合举行,第432-449页。
    [53]
    Rezaalipour M和Furia CA一种基于注释的方法,用于查找神经网络程序中的错误J系统软件2023 201
    [54]
    Romano J、Kromrey JD、Coraggio J、Skowronek J(2006),我们真的应该使用t吨-测试和科恩的d日用于评估NSSE和其他调查中的组差异?致:佛罗里达州机构研究协会年会
    [55]
    Saha RK、Lease M、Khurshid S和Perry DE(2013)使用结构化信息检索改进错误定位。参见:第28届IEEE/ACM自动化软件工程国际会议(ASE),第345–355页。
    [56]
    Salis V、Sotiropoulos T、Louridas P、Spinellis D、Mitropoulos D(2021)PyCG:Python中的实用调用图生成。在:第43届软件工程国际会议论文集,第1646–1657页。
    [57]
    Qusay Idrees Sarhan和Alpád Beszédes基于频谱的软件故障定位挑战调查IEEE接入2022 10 10618-10639
    [58]
    Schoop E,Huang F,Hartmann B(2021)Umlaut:使用程序结构和模型行为调试深度学习程序。收录:2021年CHI计算机系统人为因素会议记录。
    [59]
    Schroter A,Schröter A,Bettenburg N,Premraj R(2010)堆栈跟踪是否有助于开发人员修复错误?摘自:2010年IEEE第七届采矿软件库工作会议(MSR 2010),第118-121页。
    [60]
    Sobreira V,Durieux T,Madeiral F,Monperrus M,de Almeida Maia M(2018)缺陷数据集剖析:缺陷395个补丁的解剖4J。在:Oliveto R,Di Penta M,Shepherd DC(编辑)第25届软件分析、进化和重组国际会议,SANER 2018,意大利坎波巴索,2018年3月20日至23日,第130–140页。IEEE计算机学会,2018年。https://doi.org/10.1109/SANER.2018.8330203
    [61]
    Sohn J,Yoo S(2017)FLUCCS:使用代码和变更度量来改进故障定位。摘自:第26届ACM SIGSOFT软件测试与分析国际研讨会论文集,第273-283页。
    [62]
    Steimann F,Frenkel M,Abreu R(2013)基于覆盖率的故障定位器准确性实证评估的有效性和价值受到的威胁。摘自:软件测试与分析国际研讨会论文集,第314-324页。
    [63]
    Szatmári A、Sarhan QI、Beszédesá(2022)《Python与CharmFL的交互式故障定位》。摘自:第13届自动化测试用例设计、选择和评估国际研讨会论文集,第33-36页。
    [64]
    Vallée-Rai R,Co P,Gagnon e,Hendren LJ,Lam P,Sundaresan V(1999)Soot–Java字节码优化框架。摘自:MacKay SA,Johnson JH(eds)1999年合作研究高级研究中心会议记录,1999年11月8日至11日,加拿大安大略省米西索加,第13页。IBM。https://dl.acm.org/citation.cfm?id=782008
    [65]
    Wardat M,Le W,Rajan H(2021)深度定位:深度神经网络的故障定位。In:ICSE’21:第43届软件工程国际会议
    [66]
    Wasserstein RL,Lazar NA(2016)ASA关于-值:上下文、过程和目的。美国统计局70(2):129–133。https://www.amstat.org/asa/files/pdfs/P-价值声明.pdf
    [67]
    Widyasari R、Sim SQ、Lok C、Qi H、Phan J、Tay Q、Tan C、Wee F、Tan JE、Yieh Y、Goh B、Thung F、Kang HJ、Hoang T、Lo D、Ouh EL(2020)BugsInPy:Python程序中现有错误的数据库,用于进行受控测试和调试研究。摘自:第28届ACM欧洲软件工程联合会议记录和软件工程基础研讨会,第1556–1560页。
    [68]
    Widyasari R、Azriadi Prana GA、Haryono SA、Wang S、Lo D(2022)《真实世界项目,真实故障:评估Python项目上基于频谱的故障定位技术》。Empir Softw Eng公司27(6)。
    [69]
    Wong E,Wei T,Qi Y,Zhao L(2008)一种基于交叉表的有效故障定位统计方法。摘自:第一届软件测试、验证和确认国际会议,第42-51页。
    [70]
    Wong WE、Debroy V、Gao R和Li Y有效软件故障定位的DStar方法IEEE Trans Reliab公司2014 63 1 290-308
    [71]
    Wong WE、Gao R、Li Y、Abreu R和Wotawa F软件故障定位调查IEEE Trans软件工程2016 42 8 707-740
    [72]
    Xuan J,Monperrus M(2014)学习结合多个排名指标进行故障定位。在:2014年IEEE软件维护与演进国际会议,第191–200页。
    [73]
    Zeller A(2009)《为什么程序会失败——系统调试指南》,第2版。学术出版社。http://store.elsevier.com/product.jsp?isbn=9780123745156&pagename=搜索.国际标准图书编号978-0-12-374515-6
    [74]
    Zhang X、Gupta R和Gupta N(2006),通过自动谓词切换定位故障。在:软件工程,国际会议,第272–281页。
    [75]
    Zhang X,Zhai J,Ma S,Shen C(2021)Autotrainer:一种自动dnn训练问题检测和修复系统。收录于:2021年IEEE/ACM第43届国际软件工程会议(ICSE),第359-371页。
    [76]
    Zhang Y,Ren L,Chen L,Xiong Y,Cheung S-C,Xie T(2020)《检测神经网络架构中的数字错误》。摘自:第28届ACM欧洲软件工程联合会议记录和软件工程基础研讨会,第826-837页。
    [77]
    Zhou J,Zhang H,Lo D(2012)缺陷应该在哪里修复?基于错误报告的更准确的基于信息检索的错误定位。摘自:第34届国际软件工程会议(ICSE),第14-24页。
    [78]
    邹D、梁杰、熊Y、恩斯特医学博士和张磊。故障定位家族及其组合的实证研究IEEE Trans软件工程2021 47 2 332-347

    建议

    评论

    信息和贡献者

    问询处

    发布于

    封面图片经验软件工程
    经验软件工程 第29卷第4期
    2024年7月
    1224页
    国际标准编号:1382-3256
    期刊目录

    出版商

    Kluwer学术出版社

    美国

    出版历史

    出版:2024年6月13日
    认可的:2024年3月11日

    作者标记

    1. 故障定位
    2. 调试
    3. 蟒蛇
    4. 实证研究

    限定符

    • 研究文章

    资金来源

    • 瑞士国家债券

    贡献者

    其他指标

    文献计量学和引文

    文献计量学

    文章指标

    • 0
      引文总数
    • 0
      总下载次数
    • 下载次数(过去12个月)0
    • 下载次数(最近6周)0

    其他指标

    引文

    视图选项

    查看选项

    获取访问权限

    登录选项

    完全访问权限

    媒体

    数字

    其他

    桌子

    分享

    分享

    共享此出版物链接

    在社交媒体上分享