×

LCTD:LLVM上C程序的测试指导证明。 (英语) Zbl 1392.68149号

摘要:最近,人们对结合基于欠近似和过近似的软件验证方法产生了很大兴趣。这种技术由虚线该算法最初是由微软开发的,它会生成测试,以逐步提高被测程序欠近似的准确性。同时,使用从测试生成中收集的信息来细化程序的过于近似的抽象。
我们介绍了LCTD,一个开源工具,它实现了虚线用于验证在LLVM编译器框架上编译的C程序的算法。我们的实现是动态符号执行工具LCT的扩展。我们还详细描述了构造最弱的基于前提的精化算子的方法虚线有关LLVM内部表示的说明。我们的构造处理指针和数组索引。
维护具体执行和抽象之间的映射虚线需要根据测试执行期间访问的具体状态评估谓词。简单的实现可以存储每个已执行测试的完整具体状态,也可以使用昂贵的重新执行来恢复具体状态。我们提出了一种技术,它只允许存储指针变量的具体值,而不需要重新执行。
最后,我们给出了一个案例研究,以说明我们的工具的可行性。我们还为虚线开发不可满足区域并评估其效果。

MSC公司:

68号30 软件工程的数学方面(规范、验证、度量、需求等)
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] Godefroid,P。;莱文,M.Y。;Molnar,D.A.,SAGE:安全测试的白盒模糊化,ACM Queue,10,1,20-27(2012)
[2] Rushby,J.,飞机软件认证的新挑战,(第九届ACM嵌入式软件国际会议论文集(EMSOFT 2011)(2011),ACM),211-218
[3] Leveson,N.G.,《软件在航天器事故中的作用》,美国国际航空航天局J.航天器火箭,41564-575(2004)
[4] 莱弗森,N.G.,从过去学习面对今天的风险,Commun。ACM,56,6,38-42(2013)
[5] Valmari,A.,状态爆炸问题,(Reisig,W.;Rozenberg,G.,关于Petri网的讲座I:基本模型。关于Petri网的讲座I:基本模型,计算机科学讲义,第1491卷(1996年),Springer),429-528
[6] Godefroid,P。;Klarlund,N。;Sen,K.,DART:定向自动随机测试(ACM SIGPLAN 2005编程语言设计与实现会议论文集(PLDI 2005)(2005),ACM),213-223
[7] Sen,K。;Agha,G.,CUTE和jCUTE:协调单元测试和显式路径模型检查工具,(Ball,T.;Jones,R.B.,《第18届计算机辅助验证国际会议论文集》(CAV 2006)。第十八届计算机辅助验证国际会议记录(CAV 2006),计算机科学讲稿,第4144卷(2006),斯普林格),419-423
[8] Sen,K.,《动态程序分析的可伸缩自动化方法》(2006),伊利诺伊大学博士论文
[9] 卡达尔,C。;Ganesh,V.公司。;Pawlowski,P.M。;Dill,D.L。;Engler,D.R.,EXE:自动生成死亡输入,ACM Trans。信息系统。安全。,12, 2, 322-335 (2008)
[10] Godefroid,P。;莱文,M.Y。;Molnar,D.A.,《自动白盒模糊测试》,(第十五届网络与分布式系统安全研讨会论文集(NDSS 2008)(2008),互联网协会),151-166
[11] 格拉芙,S。;Saídi,H.,用PVS构造抽象状态图,(Grumberg,O.,《第九届计算机辅助验证国际会议论文集》(CAV 1997)。第九届计算机辅助验证国际会议记录(CAV 1997),计算机科学讲稿,第1254卷(1997),施普林格出版社,72-83
[12] 克拉克,E.M。;格伦伯格,O。;Jha,S。;卢,Y。;Veith,H.,《反例引导的抽象精化》(Emerson,E.A.;Sistla,A.P.,《第十二届计算机辅助验证国际会议论文集》(CAV 2000)。第12届计算机辅助验证国际会议论文集(CAV 2000),《计算机科学讲义》,第1855卷(2000年),施普林格出版社,154-169·Zbl 0974.68517号
[13] 球,T。;马朱姆达尔,R。;Millstein,T。;Rajamani,S.K.,C程序的自动谓词抽象,(ACM SIGPLAN 2001年编程语言设计与实现会议论文集(PLDI 2001)(2001),ACM),203-213
[14] Chaki,S。;克拉克,E.M。;Groce,A。;Jha,S。;Veith,H.,C中软件组件的模块化验证,IEEE Trans。柔和。工程,30,6,388-402(2004)
[15] Henzinger,T.A。;贾拉(Jhala,R.)。;马朱姆达尔,R。;Sutre,G.,Lazy abstration,(第29届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集(POPL 2002)(2002),ACM),58-70·Zbl 1323.68374号
[16] Kroening,D。;Groce,A。;Clarke,E.M.,通过程序执行进行反例引导的抽象求精,(Davies,J.;Schulte,W.;Barnett,M.,《第六届形式工程方法国际会议论文集》(ICFEM 2004)。《第六届形式工程方法国际会议论文集》(ICFEM 2004),计算机科学讲义,第3308卷(2004),施普林格出版社,224-238
[17] Gulavani,B.S。;Henzinger,T.A。;Kannan,Y。;Nori,A.V。;Rajamani,S.K.,SYNERGY:一种新的属性检查算法,(第14届ACM SIGSOFT国际软件工程基础研讨会论文集(FSE 2006)(2006),ACM),117-127
[18] 北欧贝克曼。;Nori,A.V。;Rajamani,S.K。;西蒙斯·R·J。;特塔利,S.D。;Thakur,A.V.,测试证明,IEEE Trans。柔和。工程师,36,4,495-508(2010)
[19] Kähkönen,K.,连续Java程序的自动动态测试生成(2008),赫尔辛基理工大学信息与计算机科学系,硕士论文
[20] Kähkönen,K。;Launiainen,T。;萨里基维,O。;J.Kauttio。;Heljanko,K。;Niemelä,I.,LCT:Java程序的开放源码混合测试工具,(字节码语义、验证、分析和转换第六次研讨会论文集(Bytecode 2011)(2011)),75-80
[21] Kähkönen,K.,软件组件自动测试生成(2009),赫尔辛基理工大学信息与计算机科学系,技术报告TKK-ICS-R26
[22] Kähkönen,K。;萨里基维,O。;Heljanko,K.,LCT:多线程Java程序的并行分布式测试工具,Electron。注释Theor。计算。科学。,296, 253-259 (2013)
[23] 拉特纳,C。;Adve,V.S.,LLVM:终身程序分析和转换的编译框架,(第二届IEEE/ACM代码生成和优化国际研讨会论文集(CGO 2004)(2004),IEEE计算机学会),75-88
[24] 拉特纳,C。;Adve,V.,LLVM汇编语言参考手册(2014)
[25] 球,T。;Rajamani,S.K.,《自动验证接口的时间安全属性》(Dwyer,M.B.,第八届软件模型检查国际SPIN研讨会论文集(SPIN 2001)。第八届软件模型检查国际SPIN研讨会论文集(SPIN 2001),《计算机科学讲义》,第2057卷(2001),施普林格出版社,103-122·Zbl 0985.68641号
[26] Dijkstra,E.W.,《保护命令,程序的不确定性和形式推导》,Commun。ACM,18,8,453-457(1975)·Zbl 0308.68017号
[27] Stump,A。;巴雷特,C.W。;Dill,D.L。;Levitt,J.,阵列扩展理论的决策程序,(第16届IEEE计算机科学逻辑研讨会论文集(LICS 2001)(2001),IEEE计算机学会),29-37
[28] Saarikivi,O.,《LLVM上C程序的测试指导证明》,阿尔托大学科学院(2013),硕士论文·兹比尔1392.68149
[29] Nori,A.V。;Rajamani,S.K.,《YOGI中优化的实证研究》,(第32届ACM/IEEE国际软件工程会议论文集-第1卷(ICSE 2010)(2010),ACM),355-364
[30] 赵,J。;南卡罗来纳加尔各答。;Martin,M.M.K。;Zdancewic,S.,《验证程序转换的LLVM中间表示形式化》,(第39届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集(POPL 2012)(2012),ACM),427-440·Zbl 1321.68207号
[31] 布鲁迈耶,R。;Biere,A.,Boolector:位向量和阵列的高效SMT求解器(Kowalewski,S.;Philippou,A.),《第十五届系统构建和分析工具和算法国际会议论文集》(TACAS 2009)。《第十五届系统构造和分析工具和算法国际会议论文集》(TACAS 2009),《计算机科学讲义》,第5505卷(2009),斯普林格出版社),174-177
[32] De Moura,L。;Björner,N.,Z3:高效SMT求解器,(Ramakrishnan,C.R.;Rehof,J.,《第14届系统构建与分析工具和算法国际会议论文集》(TACAS 2008)。《第十四届系统构建和分析工具和算法国际会议论文集》(TACAS 2008),《计算机科学讲义》,第4963卷(2008),斯普林格出版社,337-340
[33] Beyer,D.,《软件验证和可验证证人》(SV-COMP 2015报告),(Baier,C.;Tinelli,C.,《第21届国际分析系统构建和分析工具与算法会议论文集》(TACAS 2015)。《第21届国际分析系统构建和分析工具与算法会议论文集》(TACAS 2015),《计算机科学讲义》,第9035卷(2015),斯普林格出版社,401-416
[34] Cordeiro,L。;费舍尔,B。;Marques-Silva,J.,嵌入式ANSI-C软件基于SMT的有界模型检查,(第24届IEEE/ACM自动化软件工程国际会议论文集(ASE 2009)(2009),IEEE计算机学会),137-148
[35] Beyer,D。;Keremoglu,M.E.,CPACHECKER:可配置软件验证工具,(Gopalakrishnan,G.;Qadeer,S.,《第23届计算机辅助验证国际会议论文集》(CAV 2011)。第23届计算机辅助验证国际会议记录(CAV 2011),计算机科学讲稿,第6806卷(2011),施普林格出版社,184-190
[36] Dudka,K。;佩林格,P。;Vojnar,T.,《捕食者:使用分离逻辑检查动态数据结构操作的实用工具》(Gopalakrishnan,G.;Qadeer,S.,《第23届计算机辅助验证国际会议论文集》(CAV 2011)。第23届计算机辅助验证国际会议记录(CAV 2011),计算机科学讲稿,第6806卷(2011),施普林格出版社,372-378
[37] 贾拉(Jhala,R.)。;Majumdar,R.,软件模型检查,ACM计算机。调查。,41, 4, 21:1-21:54 (2009) ·Zbl 1507.68188号
[38] Godefroid,P。;Klarlund,N.,《软件模型检查:搜索抽象或具体的计算》,(Romijn,J.;Smith,G.;van de Pol,J.,《第五届综合形式方法国际会议论文集》(IFM 2005)。《第五届综合形式方法国际会议论文集》(IFM 2005),计算机科学讲稿,第3771卷(2005),施普林格出版社,20-32·Zbl 1137.68435号
[39] 约什,G。;球,T。;Sagiv,M.,测试,抽象,定理证明:更好地结合!,(《ACM/SIGSOFT软件测试与分析国际研讨会论文集》(ISSTA 2006)(2006),ACM),145-156
[40] Nori,A.V。;Rajamani,S.K。;Tetali,S.公司。;Thakur,A.V.,YOGI项目:通过静态分析和测试进行软件属性检查,(Kowalewski,S.;Philippou,A.,第15届系统构建和分析工具和算法国际会议论文集(TACAS 2009)。《第十五届系统构造与分析工具与算法国际会议论文集》(TACAS 2009),《计算机科学讲义》,第5505卷(2009),施普林格出版社),178-181
[41] 代表,T。;Lim,J。;Thakur,A。;巴拉克里希南,G。;Lal,A.,底部有足够的空间:分析和验证机器代码,(Touili,T.;Cook,B.;Jackson,P.,《第22届国际计算机辅助验证会议论文集》(CAV 2010)。第22届计算机辅助验证国际会议记录(CAV 2010),计算机科学讲稿,第6174卷(2010),施普林格出版社,41-56
[42] 海兹曼,M。;Hoenicke,J。;Podelski,A.,《热爱自动机的人的软件模型检查》(Sharygina,N.;Veith,H.,《第25届计算机辅助验证国际会议论文集》(CAV 2013)。第25届计算机辅助验证国际会议记录(CAV 2013),计算机科学讲稿,第8044卷(2013),施普林格出版社,36-52
[43] Henzinger,T.A。;贾拉(Jhala,R.)。;马朱姆达尔,R。;Qadeer,S.,《线程-模块抽象求精》(Hunt,W.A.J.;Somenzi,F.,《第十五届计算机辅助验证国际会议论文集》(CAV 2003)。第十五届计算机辅助验证国际会议记录(CAV 2003),计算机科学讲稿,第2725卷(2003),施普林格出版社,262-274·Zbl 1278.68175号
[44] 弗拉纳根,C。;Qadeer,S.,《线程-模块模型检查》(Ball,T.;Rajamani,S.K.,《第十届模型检查软件国际会议论文集》(SPIN 2003)。《第十届模型检验软件国际会议论文集》(SPIN 2003),《计算机科学讲义》,第2648卷(2003),施普林格出版社,213-224·Zbl 1023.68529号
[45] 古普塔,A。;波皮亚,C。;Rybalchenko,A.,《线程:多线程程序的基于约束的验证器》(Gopalakrishnan,G.;Qadeer,S.,《第23届计算机辅助验证国际会议论文集》(CAV 2011)。第23届计算机辅助验证国际会议记录(CAV 2011),计算机科学讲稿,第6806卷(2011),施普林格出版社,412-417
[46] 弗拉纳根,C。;卡迪尔,S。;Seshia,S.,《多线程程序的模块化检查器》(Brinksma,E.;Larsen,K.G.,《第14届计算机辅助验证国际会议论文集》(CAV 2002)。第十四届计算机辅助验证国际会议记录(CAV 2002),计算机科学讲稿,第2404卷(2002),施普林格出版社,180-194·Zbl 1010.68501号
[47] A.唐纳森。;Kaiser,A。;Kroening,D。;Wahl,T.,共享变量并发程序的对称感知谓词抽象,(Gopalakrishnan,G.;Qadeer,S.,《第23届计算机辅助验证国际会议论文集》(CAV 2011)。第23届计算机辅助验证国际会议记录(CAV 2011),计算机科学讲稿,第6806卷(2011),施普林格出版社,356-371
[48] Kroening,D。;北卡罗来纳州Sharygina。;托内塔,S。;Tsitovich,A。;Wintersteiger,C.M.,使用状态和转换不变量的循环摘要,Form.Methods Syst。设计。,42, 3, 221-261 (2013) ·Zbl 1291.68262号
[49] 克拉克,E。;Kroening,D。;Lerda,F.,《检查ANSI-C程序的工具》(Jensen,K.;Podelski,A.,《第十届系统构建和分析工具和算法国际会议论文集》(TACAS 2004)。《第十届系统构造和分析工具和算法国际会议论文集》(TACAS 2004),《计算机科学讲义》,第2988卷(2004),斯普林格出版社),168-176·Zbl 1126.68470号
[50] Bradley,A.R.,基于SAT的无展开模型检查,(Jhala,R.;Schmidt,D.,《第十二届国际验证、模型检查和抽象解释会议论文集》(VMCAI 2011)。第十二届国际验证、模型检验和抽象解释会议记录(VMCAI 2011),计算机科学讲稿,第6538卷(2011),斯普林格出版社,70-87·Zbl 1317.68109号
[51] Cimatti,A。;Griggio,A.,《通过IC3进行软件模型检查》(Madhusudan,P.;Seshia,S.A.,《第24届计算机辅助验证国际会议论文集》(CAV 2012)。第24届计算机辅助验证国际会议记录(CAV 2012),《计算机科学讲义》,第7358卷(2012),施普林格出版社,277-293
[52] 拉卡马里奇,Z。;Emmi,M.,SMACK:从验证器实现中分离源语言细节,(Biere,A.;Bloem,R.,《第26届计算机辅助验证国际会议论文集》(CAV 2014)。第26届计算机辅助验证国际会议记录(CAV 2014),《计算机科学讲义》,第8559卷(2014),斯普林格出版社,106-113
[53] DeLine,R。;Leino,K.R.M.,BoogiePL:一种检查面向对象程序的类型化过程语言(2005),微软研究院,技术代表MSR-TR-2005-70
[54] 卡达尔,C。;邓巴博士。;Engler,D.,KLEE:为复杂系统程序自动生成高覆盖率测试,(第八届USENIX操作系统设计与实现会议论文集(OSDI 2008),USENIX协会(2008)),209-224
[55] Huima,A.,Implementing conformiq qtronic,(Petrenko,A.;Veanes,M.;Tretmans,J.;Grieskamp,W.,《第19届IFIP TC6/WG6.1国际会议和第7届软件和通信系统测试国际会议论文集》(TESTCOM/FATES 2007)。第19届IFIP TC6/WG6.1国际会议和第7届软件和通信系统测试国际会议记录(TESTCOM/FATES 2007),《计算机科学讲义》,第4581卷(2007),施普林格),1-12
[56] 格里斯坎普,W。;曲,X。;魏,X。;Kicillof,N。;Cohen,M.B.,交互覆盖通过SMT约束求解满足路径覆盖,(Nüñez,M.;Baker,P.;Merayo,M.G.,《第21届IFIP WG 6.1软件和通信系统测试国际会议暨第九届国际命运研讨会论文集》(TESTCOM/FATES 2009)。第21届IFIP WG 6.1软件和通信系统测试国际会议和第9届国际命运研讨会会议记录(TESTCOM/FATES 2009),计算机科学讲义,第5826卷(2009),施普林格),97-112
[57] Jéron,T。;韦恩斯,M。;Wolff,B.,《测试中的符号方法》(Dagstuhl研讨会13021),Dagstuhel Rep.,3,1,1-29(2013)
[58] Henzinger,T.A。;贾拉(Jhala,R.)。;马朱姆达尔,R。;McMillan,K.L.,从证明中提取,(第31届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集(POPL 2004)(2004),ACM),232-244·Zbl 1325.68147号
[59] 萨里基维,O。;Kähkönen,K。;Heljanko,K.,《改进协调测试的动态部分降阶》,(第十二届系统设计并行应用国际会议论文集(ACSD 2012)(2012),IEEE),132-141
[60] Kähkönen,K。;萨里基维,O。;Heljanko,K.,《在多线程程序的自动测试中使用展开》,(第27届IEEE/ACM自动化软件工程国际会议论文集(ASE 2012)(2012),ACM),150-159
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。