×

使用测试输入生成的分离逻辑增强基于堆的程序的符号执行。 (英语) Zbl 1437.68044号

Chen,Yu-Fang(编辑)等,验证和分析自动化技术。2019年10月28日至31日,第17届国际研讨会,ATVA 2019,台湾台北。诉讼程序。查姆:斯普林格。莱克特。票据计算。科学。11781, 209-227 (2019).
摘要:符号执行是一种成熟的测试输入生成方法。尽管在数值域上取得了巨大的成功,但现有的基于堆的程序的符号执行技术由于缺乏对无界堆上符号值的简洁和精确描述而受到了限制。在这项工作中,我们提出了一种新的基于分离逻辑的堆程序符号执行方法。我们建议的本质是上下文敏感的延迟初始化,这是一种高效生成测试输入的新方法。我们的方法在两个方面与现有方法不同。首先,我们的方法基于分离逻辑,它允许我们精确捕获基于堆的程序的前提条件,从而避免生成无效的测试输入。其次,我们只生成完全初始化的测试输入,与那些由最先进的工具生成的部分初始化测试输入相比,这在实践中更有用。我们将我们的方法实现为一个名为JavaStarFinder的工具,并在一组具有复杂堆输入的程序上对其进行了评估。结果表明,我们的方法显著减少了无效测试输入的数量,提高了测试覆盖率。
有关整个系列,请参见[Zbl 1428.68012号].

MSC公司:

68号30 软件工程的数学方面(规范、验证、度量、需求等)
03B70号 计算机科学中的逻辑
68第05页 数据结构
PDF格式BibTeX公司 XML格式引用

参考文献:

[1] 脸书推断。https://fbenfer.com网站/
[2] 日本石油公司。https://www.eclemma.org/jacoco网站/
[3] 日本证券交易所。https://github.com/pietrobraione/jbse
[4] 先生。http://sir.unl.edu/portal/index.php
[5] 西里姆。https://code.google.com/archive/p/sireum/downloads(网址:https://code.google.com/archive/p/sireum/downloads)
[6] SUSHI实验。https://github.com/pietrobraione/sushi-terials网站
[7] Berdine,J.、Calcagno,C.、O'Hearn,P.W.:带分离逻辑的符号执行。载于:Yi,K.(编辑)APLAS 2005。LNCS,第3780卷,第52-68页。斯普林格,海德堡(2005)。https://doi.org/10.1007/11575467_5 ·Zbl 1159.68363号 ·doi:10.1007/11575467_5
[8] Braione,P.,Denaro,G.,Mattavelli,A.,Pezzè,M.:针对具有复杂堆输入的程序,将符号执行和基于搜索的测试相结合。摘自:Bultan,T.,Sen,K.(编辑)ISSTA 2017,第90-101页。ACM(2017)。https://doi.org/10.1145/3092703.3092715 ·doi:10.1145/3092703.3092715
[9] Braione,P.,Denaro,G.,Pezzè,M.:用堆输入符号执行程序。收录于:Nitto,E.D.,Harman,M.,Heymans,P.(编辑)FSE 2015,第602-613页。ACM(2015)。https://doi.org/10.1145/2786805.2786842 ·doi:10.145/2786805.2786842
[10] Braione,P.,Denaro,G.,Pezzè,M.:JBSE:具有复杂堆输入的Java程序的符号执行器。收录人:Zimmermann,T.、Cleland-Huang,J.、Su,Z.(编辑)FSE 2016,第1018-1022页。ACM(2016)。https://doi.org/10.1145/2950290.2983940 ·doi:10.1145/2950290.2983940
[11] Cadar,C.等人:软件测试实践中的符号执行:初步评估。收录人:Taylor,R.N.,Gall,H.C.,Medvidovic,N.(编辑)ICSE 2011,第1066-1071页。ACM(2011)。https://doi.org/10.1145/1985793.1985995 ·doi:10.1145/1985793.1985995
[12] Calcagno,C.,Distefano,D.,O'Hearn,P.W.,Yang,H.:通过双折法进行成分形状分析。JACM 58(6),26:1-26:66(2011)。https://doi.org/10.1145/2049697.2049700 ·Zbl 1281.68155号 ·数字对象标识代码:10.1145/2049697.2049700
[13] Chin,W.N.,David,C.,Nguyen,H.H.,Qin,S.:通过分离逻辑中用户定义的谓词自动验证形状、大小和袋子属性。科学。计算。程序。77(9), 1006-1036 (2012). https://doi.org/10.1016/j.scico.2010.07.004 ·Zbl 1243.68148号 ·doi:1006-1036&publicationyear=2012&doi=10.1016/j.scico.2010.07.004
[14] Deng,X.,Lee,J.,Robby:Bogor/Kiasan:用于检查开放系统强堆属性的K界符号执行。收录于:ASE 2006,第157-166页。IEEE计算机学会(2006)。https://doi.org/10.109/ASE.2006.26 ·doi:10.1109/ASE.2006.26
[15] Deng,X.,Robby,Hatcliff,J.:用于分析面向对象程序的强属性的情况最优符号执行算法。收录于:SEFM 2007。IEEE计算机学会(2007)。https://doi.org/10.109/SEFM.2007.43 ·doi:10.1109/SEFM.2007.43
[16] H.B.安德顿:逻辑数学导论,第二版。第67-181页。学术出版社(2001)。https://doi.org/10.1016/B978-0-08-049646-7.50008-4 ·Zbl 0992.03001号 ·doi:10.1016/B978-0-08-049646-7.50008-4
[17] Galeotti,J.P.,Rosner,N.,López Pombo,C.G.,Frias,M.F.:有效有界验证的不变量分析。收录于:Tonella,P.,Orso,A.(编辑)ISSTA 2010,第25-36页。ACM(2010)。https://doi.org/10.1145/1831708.1831712 ·数字对象标识代码:10.1145/1831708.1831712
[18] Geldenhuys,J.,Aguirre,N.,Frias,M.F.,Visser,W.:有界惰性初始化。收录人:Brat,G.、Rungta,N.、Venet,A.(编辑)NFM 2013。LNCS,第7871卷,第229-243页。斯普林格,海德堡(2013)。https://doi.org/10.1007/978-3642-38088-4_16 ·doi:10.1007/978-3-642-38088-4_16
[19] Hillery,B.,Mercer,E.,Rungta,N.,Person,S.:符号执行的精确堆摘要。收录人:Jobstmann,B.,Leino,K.R.M.(编辑)VMCAI 2016。LNCS,第9583卷,第206-225页。斯普林格,海德堡(2016)。https://doi.org/10.1007/978-3-662-49122-5_10 ·Zbl 1475.68090号 ·电话:10.1007/978-3-662-49122-5_10
[20] Ishtiaq,S.S.,O'Hearn,P.W.:BI作为可变数据结构的断言语言。摘自:Hankin,C.,Schmidt,D.(编辑)POPL 2001,第14-26页。ACM(2001)。https://doi.org/10.1145/360204.375719 ·Zbl 1323.68077号 ·数字对象标识代码:10.1145/360204.375719
[21] Khurshid,S.、PéSéreanu,C.S.、Visser,W.:模型检查和测试的广义符号执行。收录:Garavel,H.,Hatcliff,J.(编辑)TACAS 2003。LNCS,第2619卷,第553-568页。斯普林格,海德堡(2003)。https://doi.org/10.1007/3-540-36577-X_40 ·Zbl 1031.68519号 ·doi:10.1007/3-540-36577-X_40
[22] King,J.C.:符号执行和程序测试。Commun公司。ACM 19(7),385-394(1976)。https://doi.org/10.1145/360248.360252 ·Zbl 0329.68018号 ·doi:10.1145/360248.360252
[23] Le,Q.L.,Gherghina,C.,Qin,S.,Chin,W.N.:通过二阶双外推进行形状分析。摘自:Biere,A.,Bloem,R.(编辑)CAV 2014。LNCS,第8559卷,第52-68页。查姆施普林格(2014)。https://doi.org/10.1007/978-3-319-08867-9_4 ·doi:10.1007/978-3-319-08867-94
[24] Le,Q.L.,Sun,J.,Chin,W.N.:基于heap-based程序的可满足模。收录:Chaudhuri,S.,Farzan,A.(编辑)CAV 2016。LNCS,第9779卷,第382-404页。查姆施普林格(2016)。https://doi.org/10.1007/978-3-319-41528-4_21 ·Zbl 1411.68028号 ·doi:10.1007/978-3-319-41528-421
[25] Le,Q.L.,Sun,J.,Qin,S.:分离逻辑中归纳蕴涵证明的框架推理。收件人:Beyer,D.,Huisman,M.(编辑)TACAS 2018。LNCS,第10805卷,第41-60页。查姆施普林格(2018)。https://doi.org/10.1007/978-3-319-89960-2_3 ·Zbl 1423.68104号 ·doi:10.1007/978-3-319-89960-23
[26] Le,Q.L.,Tatsuta,M.,Sun,J.,Chin,W.N.:带有归纳谓词和算术的分离逻辑中的可判定片段。收录人:Majumdar,R.,Kunčak,V.(编辑)CAV 2017。LNCS,第10427卷,第495-517页。查姆施普林格(2017)。https://doi.org/10.1007/978-3-319-63390-9_26 ·Zbl 1497.03048号 ·数字对象标识代码:10.1007/978-3-319-63390-9_26
[27] Leavens,G.T.,Baker,A.L.,Ruby,C.:JML:详细设计的符号。收录于:Kilov,H.、Rumpe,B.、Simmonds,I.(编辑)《企业和系统的行为规范》,第523卷,第175-188页。斯普林格,海德堡(1999)。https://doi.org/10.1007/978-1-4615-5229-1_12 ·doi:10.1007/978-1-4615-5229-1_12
[28] Müller,P.,Schwerhoff,M.,Summers,A.J.:使用符号执行自动验证迭代分离连词。收录:Chaudhuri,S.,Farzan,A.(编辑)CAV 2016。LNCS,第9779卷,第405-425页。查姆施普林格(2016)。https://doi.org/10.1007/978-3-319-41528-4_22 ·doi:10.1007/978-3-319-41528-422
[29] Pham,L.H.,Le,Q.L.,Phan,Q.S.,Sun,J.:协和测试堆操纵程序。时间:2019年FM(2019年,待发布)
[30] Pham,L.H.,Le,Q.L.,Phan,Q.S.,Sun,J.,Qin,S.:使用Java StarFinder测试基于堆的程序。收录于:Chaudron,M.、Crnkovic,I.、Chechik,M.和Harman,M.(编辑)ICSE 2018,第268-269页。ACM(2018)。https://doi.org/10.1145/3183440.3194964 ·数字对象标识代码:10.1145/3183440.3194964
[31] Péséreanu,C.s.,Visser,W.,Bushnell,D.,Geldenhuys,J.,Mehlitz,P.,Rungta,N.:符号PathFinder:将符号执行与Java字节码分析的模型检查相结合。自动。柔和。工程20(3),391-425(2013)。https://doi.org/10.1007/s10515-013-0122-2 ·doi:10.1007/s10515-013-0122-2
[32] Reynolds,J.:分离逻辑:共享可变数据结构的逻辑。收录于:LICS 2002,第55-74页。IEEE计算机学会(2002)。https://doi.org/10.109/LICS.2002.1029817 ·doi:10.10109/LICS.2002.1029817
[33] Rosner,N.、Geldenhuys,J.、Aguirre,N.,Visser,W.、Frias,M.F.:BLISS:通过支持SAT的有界延迟初始化改进符号执行。IEEE传输。柔和。工程41(7),639-660(2015)。https://doi.org/10.109/TSE.2015.2389225 ·doi:10.1109/TSE.2015.2389225
[34] Schwartz,E.J.,Avgerinos,T.,Brumley,D.:关于动态污点分析和正向符号执行,你所想知道的一切(但可能一直害怕问)。摘自:标准普尔2010年,第317-331页。IEEE计算机学会(2010)。https://doi.org/10.109/SP.2010.26 ·doi:10.1109/SP.2010.26
[35] Tatsuta,M.,Le,Q.L.,Chin,W.N.:具有归纳定义和presburger算法的分离逻辑的决策过程。In:Igarashi,A.(编辑)APLAS 2016。LNCS,第10017卷,第423-443页。查姆施普林格(2016)。https://doi.org/10.1007/978-3-319-47958-3_22 ·Zbl 1485.03078号 ·数字对象标识代码:10.1007/978-3-319-47958-322
[36] Visser,W.,Pásáreanu,C.s.,Khurshid,s.:使用Java PathFinder测试输入生成。摘自:Avrunin,G.S.,Rothermel,G.(编辑)ISSTA 2004,第97-107页。ACM(2004)。https://doi.org/10.1145/1007512.1007526 ·doi:10.1145/1007512.1007526
[37] 郑,G。
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。