首页 > 最新文献

Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis最新文献

英文 中文
TestMig: migrating GUI test cases from iOS to Android TestMig:将GUI测试用例从iOS迁移到Android
Xue Qin, Hao Zhong, Xiaoyin Wang
Nowadays, Apple iOS and Android are two most popular platforms for mobile applications. To attract more users, many software companies and organizations are migrating their applications from one platform to the other, and besides source files, they also need to migrate their GUI tests. The migration of GUI tests is tedious and difficult to be automated, since two platforms have subtle differences and there are often few or even no migrated GUI tests for learning. To address the problem, in this paper, we propose a novel approach, TestMig, that migrates GUI tests from iOS to Android, without any migrated code samples. Specifically, TestMig first executes the GUI tests of the iOS version, and records their GUI event sequences. Guided by the iOS GUI events, TestMig explores the Android version of the application to generate the corresponding Android event sequences. We conducted an evaluation on five well known mobile applications: 2048, SimpleNote, Wire, Wikipedia, and WordPress. The results show that, on average, TestMig correctly converts 80.2% of recorded iOS UI events to Android UI events and have them successfully executed, and our migrated Android test cases achieve similar statement coverage compared with the original iOS test cases (59.7% vs 60.4%).
如今,苹果iOS和安卓是两个最流行的移动应用平台。为了吸引更多的用户,许多软件公司和组织正在将他们的应用程序从一个平台迁移到另一个平台,除了源文件之外,他们还需要迁移他们的GUI测试。GUI测试的迁移是乏味且难以自动化的,因为两个平台有细微的差异,并且通常很少甚至没有迁移的GUI测试可供学习。为了解决这个问题,在本文中,我们提出了一种新颖的方法,TestMig,它可以将GUI测试从iOS迁移到Android,而不需要迁移任何代码样本。具体来说,TestMig首先执行iOS版本的GUI测试,并记录其GUI事件序列。在iOS GUI事件的指导下,TestMig探索应用程序的Android版本以生成相应的Android事件序列。我们对五个知名的移动应用程序进行了评估:2048、SimpleNote、Wire、Wikipedia和WordPress。结果表明,平均而言,TestMig正确地将80.2%记录的iOS UI事件转换为Android UI事件,并使它们成功执行,我们迁移的Android测试用例与原始iOS测试用例相比实现了相似的语句覆盖率(59.7% vs 60.4%)。
{"title":"TestMig: migrating GUI test cases from iOS to Android","authors":"Xue Qin, Hao Zhong, Xiaoyin Wang","doi":"10.1145/3293882.3330575","DOIUrl":"https://doi.org/10.1145/3293882.3330575","url":null,"abstract":"Nowadays, Apple iOS and Android are two most popular platforms for mobile applications. To attract more users, many software companies and organizations are migrating their applications from one platform to the other, and besides source files, they also need to migrate their GUI tests. The migration of GUI tests is tedious and difficult to be automated, since two platforms have subtle differences and there are often few or even no migrated GUI tests for learning. To address the problem, in this paper, we propose a novel approach, TestMig, that migrates GUI tests from iOS to Android, without any migrated code samples. Specifically, TestMig first executes the GUI tests of the iOS version, and records their GUI event sequences. Guided by the iOS GUI events, TestMig explores the Android version of the application to generate the corresponding Android event sequences. We conducted an evaluation on five well known mobile applications: 2048, SimpleNote, Wire, Wikipedia, and WordPress. The results show that, on average, TestMig correctly converts 80.2% of recorded iOS UI events to Android UI events and have them successfully executed, and our migrated Android test cases achieve similar statement coverage compared with the original iOS test cases (59.7% vs 60.4%).","PeriodicalId":20624,"journal":{"name":"Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":"10 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2019-07-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"86532013","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 31
QADroid: regression event selection for Android applications QADroid: Android应用的回归事件选择
Aman Sharma, R. Nasre
Popular Android applications undergo frequent releases. Ensuring functional testing of the new features, as well as regression testing of the previous functionality, are time-consuming and error-prone. Thus, there is a need for a tool that eases the testing efforts as well as saves the overall time of the product release cycle. In this work, we present QADroid, the first activity- and event-aware regression selection tool for Android apps. Salient features of QADroid are: (i) a richer change-set analyzer that covers code as well as non-code components for regression, (ii) it presents a pictorial representation of the app’s functioning, and (iii) it displays the regression points in the app as a mapping between activities to user-elements to events. Features (ii) and (iii) help the testers in understanding the technical findings better. We evaluated QADroid on 1105 releases of 50 open source Android projects. The results show that QADroid reduced the activity selection by 58% and event selection by 74% compared to the traditional way of exhaustive testing of all activities and events, thereby significantly reducing the manual testing efforts.
流行的Android应用程序频繁发布。确保对新特性进行功能测试,以及对以前的功能进行回归测试,既耗时又容易出错。因此,需要一种工具来简化测试工作,并节省产品发布周期的总时间。在这项工作中,我们提出了QADroid,这是Android应用程序的第一个活动和事件感知回归选择工具。QADroid的显著特点是:(i)一个更丰富的变更集分析器,涵盖代码以及用于回归的非代码组件,(ii)它呈现应用程序功能的图形表示,(iii)它将应用程序中的回归点显示为活动到用户元素到事件之间的映射。特性(ii)和(iii)帮助测试人员更好地理解技术发现。我们在50个开源Android项目的1105个版本中评估了QADroid。结果表明,与对所有活动和事件进行穷举测试的传统方式相比,QADroid减少了58%的活动选择和74%的事件选择,从而大大减少了人工测试的工作量。
{"title":"QADroid: regression event selection for Android applications","authors":"Aman Sharma, R. Nasre","doi":"10.1145/3293882.3330550","DOIUrl":"https://doi.org/10.1145/3293882.3330550","url":null,"abstract":"Popular Android applications undergo frequent releases. Ensuring functional testing of the new features, as well as regression testing of the previous functionality, are time-consuming and error-prone. Thus, there is a need for a tool that eases the testing efforts as well as saves the overall time of the product release cycle. In this work, we present QADroid, the first activity- and event-aware regression selection tool for Android apps. Salient features of QADroid are: (i) a richer change-set analyzer that covers code as well as non-code components for regression, (ii) it presents a pictorial representation of the app’s functioning, and (iii) it displays the regression points in the app as a mapping between activities to user-elements to events. Features (ii) and (iii) help the testers in understanding the technical findings better. We evaluated QADroid on 1105 releases of 50 open source Android projects. The results show that QADroid reduced the activity selection by 58% and event selection by 74% compared to the traditional way of exhaustive testing of all activities and events, thereby significantly reducing the manual testing efforts.","PeriodicalId":20624,"journal":{"name":"Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":"1 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2019-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"80582231","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 10
SAFEVM: a safety verifier for Ethereum smart contracts SAFEVM:以太坊智能合约的安全验证器
E. Albert, J. Fernández, Pablo Gordillo, G. Román-Díez, A. Rubio
Ethereum smart contracts are public, immutable and distributed and, as such, they are prone to vulnerabilities sourcing from programming mistakes of developers. This paper presents SAFEVM, a verification tool for Ethereum smart contracts that makes use of state-of-the-art verification engines for C programs. SAFEVM takes as input an Ethereum smart contract (provided either in Solidity source code, or in compiled EVM bytecode), optionally with assert and require verification annotations, and produces in the output a report with the verification results. Besides general safety annotations, SAFEVM handles the verification of array accesses: it automatically generates SV-COMP verification assertions such that C verification engines can prove safety of array accesses. Our experimental evaluation has been undertaken on all contracts pulled from etherscan.io (more than 24,000) by using as back-end verifiers CPAchecker, SeaHorn and VeryMax.
以太坊智能合约是公开的、不可变的和分布式的,因此,它们很容易因开发人员的编程错误而产生漏洞。本文介绍了SAFEVM,这是一种以太坊智能合约的验证工具,它使用最先进的C程序验证引擎。SAFEVM将以太坊智能合约(在Solidity源代码中提供,或在编译的EVM字节码中提供)作为输入,可选地使用assert和require验证注释,并在输出中生成包含验证结果的报告。除了一般的安全注释,SAFEVM还处理数组访问的验证:它自动生成SV-COMP验证断言,以便C验证引擎可以证明数组访问的安全性。我们已经对所有从etherscan中提取的合同进行了实验评估。使用CPAchecker、SeaHorn和VeryMax作为后端验证器。
{"title":"SAFEVM: a safety verifier for Ethereum smart contracts","authors":"E. Albert, J. Fernández, Pablo Gordillo, G. Román-Díez, A. Rubio","doi":"10.1145/3293882.3338999","DOIUrl":"https://doi.org/10.1145/3293882.3338999","url":null,"abstract":"Ethereum smart contracts are public, immutable and distributed and, as such, they are prone to vulnerabilities sourcing from programming mistakes of developers. This paper presents SAFEVM, a verification tool for Ethereum smart contracts that makes use of state-of-the-art verification engines for C programs. SAFEVM takes as input an Ethereum smart contract (provided either in Solidity source code, or in compiled EVM bytecode), optionally with assert and require verification annotations, and produces in the output a report with the verification results. Besides general safety annotations, SAFEVM handles the verification of array accesses: it automatically generates SV-COMP verification assertions such that C verification engines can prove safety of array accesses. Our experimental evaluation has been undertaken on all contracts pulled from etherscan.io (more than 24,000) by using as back-end verifiers CPAchecker, SeaHorn and VeryMax.","PeriodicalId":20624,"journal":{"name":"Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":"18 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2019-06-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"88837631","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 25
TBar: revisiting template-based automated program repair TBar:重访基于模板的自动程序修复
Kui Liu, Anil Koyuncu, Dongsun Kim, Tegawendé F. Bissyandé
We revisit the performance of template-based APR to build comprehensive knowledge about the effectiveness of fix patterns, and to highlight the importance of complementary steps such as fault localization or donor code retrieval. To that end, we first investigate the literature to collect, summarize and label recurrently-used fix patterns. Based on the investigation, we build TBar, a straightforward APR tool that systematically attempts to apply these fix patterns to program bugs. We thoroughly evaluate TBar on the Defects4J benchmark. In particular, we assess the actual qualitative and quantitative diversity of fix patterns, as well as their effectiveness in yielding plausible or correct patches. Eventually, we find that, assuming a perfect fault localization, TBar correctly/plausibly fixes 74/101 bugs. Replicating a standard and practical pipeline of APR assessment, we demonstrate that TBar correctly fixes 43 bugs from Defects4J, an unprecedented performance in the literature (including all approaches, i.e., template-based, stochastic mutation-based or synthesis-based APR).
我们将重新讨论基于模板的APR的性能,以构建关于修复模式有效性的全面知识,并强调诸如错误定位或供体代码检索等补充步骤的重要性。为此,我们首先调查文献来收集、总结和标记经常使用的固定模式。基于调查,我们构建了TBar,这是一个简单的APR工具,它系统地尝试将这些修复模式应用于程序错误。我们在缺陷4j基准上彻底评估TBar。特别是,我们评估了固定模式的实际定性和定量多样性,以及它们在产生合理或正确的补丁方面的有效性。最终,我们发现,假设一个完美的错误定位,TBar正确/合理地修复了74/101个错误。通过复制一个标准和实用的APR评估管道,我们证明TBar正确地修复了缺陷4j中的43个错误,这是文献中前所未有的性能(包括所有方法,即基于模板的、基于随机突变的或基于合成的APR)。
{"title":"TBar: revisiting template-based automated program repair","authors":"Kui Liu, Anil Koyuncu, Dongsun Kim, Tegawendé F. Bissyandé","doi":"10.1145/3293882.3330577","DOIUrl":"https://doi.org/10.1145/3293882.3330577","url":null,"abstract":"We revisit the performance of template-based APR to build comprehensive knowledge about the effectiveness of fix patterns, and to highlight the importance of complementary steps such as fault localization or donor code retrieval. To that end, we first investigate the literature to collect, summarize and label recurrently-used fix patterns. Based on the investigation, we build TBar, a straightforward APR tool that systematically attempts to apply these fix patterns to program bugs. We thoroughly evaluate TBar on the Defects4J benchmark. In particular, we assess the actual qualitative and quantitative diversity of fix patterns, as well as their effectiveness in yielding plausible or correct patches. Eventually, we find that, assuming a perfect fault localization, TBar correctly/plausibly fixes 74/101 bugs. Replicating a standard and practical pipeline of APR assessment, we demonstrate that TBar correctly fixes 43 bugs from Defects4J, an unprecedented performance in the literature (including all approaches, i.e., template-based, stochastic mutation-based or synthesis-based APR).","PeriodicalId":20624,"journal":{"name":"Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":"1998 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2019-03-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"88207330","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 195
Differentially testing soundness and precision of program analyzers 差分测试程序分析仪的可靠性和精度
Christian Klinger, M. Christakis, Valentin Wüstholz
In the last decades, numerous program analyzers have been developed both in academia and industry. Despite their abundance however, there is currently no systematic way of comparing the effectiveness of different analyzers on arbitrary code. In this paper, we present the first automated technique for differentially testing soundness and precision of program analyzers. We used our technique to compare six mature, state-of-the art analyzers on tens of thousands of automatically generated benchmarks. Our technique detected soundness and precision issues in most analyzers, and we evaluated the implications of these issues to both designers and users of program analyzers.
在过去的几十年里,学术界和工业界都开发了许多程序分析器。尽管它们很丰富,但是目前还没有系统的方法来比较不同的分析程序对任意代码的有效性。在本文中,我们提出了第一个自动化的方法来差分测试程序分析仪的可靠性和精度。我们使用我们的技术在成千上万个自动生成的基准测试上比较了六个成熟的、最先进的分析器。我们的技术检测了大多数分析器中的稳健性和精度问题,并且我们评估了这些问题对程序分析器的设计者和用户的影响。
{"title":"Differentially testing soundness and precision of program analyzers","authors":"Christian Klinger, M. Christakis, Valentin Wüstholz","doi":"10.1145/3293882.3330553","DOIUrl":"https://doi.org/10.1145/3293882.3330553","url":null,"abstract":"In the last decades, numerous program analyzers have been developed both in academia and industry. Despite their abundance however, there is currently no systematic way of comparing the effectiveness of different analyzers on arbitrary code. In this paper, we present the first automated technique for differentially testing soundness and precision of program analyzers. We used our technique to compare six mature, state-of-the art analyzers on tens of thousands of automatically generated benchmarks. Our technique detected soundness and precision issues in most analyzers, and we evaluated the implications of these issues to both designers and users of program analyzers.","PeriodicalId":20624,"journal":{"name":"Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":"262 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2018-12-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"91326708","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 27
Semantic fuzzing with zest 充满激情的语义模糊
Rohan Padhye, Caroline Lemieux, Koushik Sen, Mike Papadakis, Yves Le Traon
Programs expecting structured inputs often consist of both a syntactic analysis stage, which parses raw input, and a semantic analysis stage, which conducts checks on the parsed input and executes the core logic of the program. Generator-based testing tools in the lineage of QuickCheck are a promising way to generate random syntactically valid test inputs for these programs. We present Zest, a technique which automatically guides QuickCheck-like random input generators to better explore the semantic analysis stage of test programs. Zest converts random-input generators into deterministic parametric input generators. We present the key insight that mutations in the untyped parameter domain map to structural mutations in the input domain. Zest leverages program feedback in the form of code coverage and input validity to perform feedback-directed parameter search. We evaluate Zest against AFL and QuickCheck on five Java programs: Maven, Ant, BCEL, Closure, and Rhino. Zest covers 1.03x-2.81x as many branches within the benchmarks' semantic analysis stages as baseline techniques. Further, we find 10 new bugs in the semantic analysis stages of these benchmarks. Zest is the most effective technique in finding these bugs reliably and quickly, requiring at most 10 minutes on average to find each bug.
期望结构化输入的程序通常包括语法分析阶段(解析原始输入)和语义分析阶段(对解析后的输入进行检查并执行程序的核心逻辑)。QuickCheck系列中基于生成器的测试工具是为这些程序生成随机语法上有效的测试输入的一种很有前途的方法。我们提出了Zest,一种自动引导类似quickcheck的随机输入生成器来更好地探索测试程序的语义分析阶段的技术。Zest将随机输入生成器转换为确定性参数输入生成器。我们提出了关键的见解,即未类型化参数域的突变映射到输入域的结构突变。Zest利用代码覆盖率和输入有效性形式的程序反馈来执行反馈导向的参数搜索。我们将Zest与AFL和QuickCheck在五个Java程序上进行了比较:Maven、Ant、BCEL、Closure和Rhino。Zest在基准测试的语义分析阶段涵盖的分支是基线技术的1.03 -2.81倍。此外,我们在这些基准测试的语义分析阶段发现了10个新bug。Zest是可靠而快速地找到这些bug的最有效的技术,平均最多需要10分钟来找到每个bug。
{"title":"Semantic fuzzing with zest","authors":"Rohan Padhye, Caroline Lemieux, Koushik Sen, Mike Papadakis, Yves Le Traon","doi":"10.1145/3293882.3330576","DOIUrl":"https://doi.org/10.1145/3293882.3330576","url":null,"abstract":"Programs expecting structured inputs often consist of both a syntactic analysis stage, which parses raw input, and a semantic analysis stage, which conducts checks on the parsed input and executes the core logic of the program. Generator-based testing tools in the lineage of QuickCheck are a promising way to generate random syntactically valid test inputs for these programs. We present Zest, a technique which automatically guides QuickCheck-like random input generators to better explore the semantic analysis stage of test programs. Zest converts random-input generators into deterministic parametric input generators. We present the key insight that mutations in the untyped parameter domain map to structural mutations in the input domain. Zest leverages program feedback in the form of code coverage and input validity to perform feedback-directed parameter search. We evaluate Zest against AFL and QuickCheck on five Java programs: Maven, Ant, BCEL, Closure, and Rhino. Zest covers 1.03x-2.81x as many branches within the benchmarks' semantic analysis stages as baseline techniques. Further, we find 10 new bugs in the semantic analysis stages of these benchmarks. Zest is the most effective technique in finding these bugs reliably and quickly, requiring at most 10 minutes on average to find each bug.","PeriodicalId":20624,"journal":{"name":"Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":"50 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2018-11-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"81095163","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 127
Exploiting the laws of order in smart contracts 利用智能合约中的秩序法则
Aashish Kolluri, I. Nikolic, Ilya Sergey, Aquinas Hobor, P. Saxena
We investigate a family of bugs in blockchain-based smart contracts, which we dub event-ordering (or EO) bugs. These bugs are intimately related to the dynamic ordering of contract events, i.e. calls of its functions, and enable potential exploits of millions of USD worth of crypto-coins. Previous techniques to detect EO bugs have been restricted to those bugs that involve just one or two event orderings. Our work provides a new formulation of the general class of EO bugs arising in long permutations of such events by using techniques from concurrent program analysis. The technical challenge in detecting EO bugs in blockchain contracts is the inherent combinatorial blowup in path and state space analysis, even for simple contracts. We propose the first use of partial-order reduction techniques, using automatically extracted happens-before relations along with several dynamic symbolic execution optimizations. We build EthRacer, an automatic analysis tool that runs directly on Ethereum bytecode and requires no hints from users. It flags 8% of over 10, 000 contracts analyzed, providing compact event traces (witnesses) that human analysts can examine in only a few minutes per contract. More than half of the flagged contracts are likely to have unintended behaviour.
我们研究了基于区块链的智能合约中的一系列错误,我们称之为事件排序(或EO)错误。这些漏洞与合约事件的动态排序密切相关,即调用其函数,并可能利用价值数百万美元的加密货币。以前检测EO错误的技术仅限于那些只涉及一个或两个事件顺序的错误。通过使用并发程序分析的技术,我们的工作提供了在此类事件的长排列中产生的一般类型的EO错误的新公式。在区块链合约中检测EO漏洞的技术挑战是路径和状态空间分析中固有的组合爆炸,即使对于简单的合约也是如此。我们建议首先使用部分阶约简技术,使用自动提取的happens-before关系以及几个动态符号执行优化。我们构建了EthRacer,这是一个直接运行在以太坊字节码上的自动分析工具,不需要用户的提示。它标记了所分析的10,000多个合约中的8%,提供紧凑的事件痕迹(证人),人类分析师可以在几分钟内检查每个合约。被标记的合同中,有一半以上可能存在意想不到的行为。
{"title":"Exploiting the laws of order in smart contracts","authors":"Aashish Kolluri, I. Nikolic, Ilya Sergey, Aquinas Hobor, P. Saxena","doi":"10.1145/3293882.3330560","DOIUrl":"https://doi.org/10.1145/3293882.3330560","url":null,"abstract":"We investigate a family of bugs in blockchain-based smart contracts, which we dub event-ordering (or EO) bugs. These bugs are intimately related to the dynamic ordering of contract events, i.e. calls of its functions, and enable potential exploits of millions of USD worth of crypto-coins. Previous techniques to detect EO bugs have been restricted to those bugs that involve just one or two event orderings. Our work provides a new formulation of the general class of EO bugs arising in long permutations of such events by using techniques from concurrent program analysis. The technical challenge in detecting EO bugs in blockchain contracts is the inherent combinatorial blowup in path and state space analysis, even for simple contracts. We propose the first use of partial-order reduction techniques, using automatically extracted happens-before relations along with several dynamic symbolic execution optimizations. We build EthRacer, an automatic analysis tool that runs directly on Ethereum bytecode and requires no hints from users. It flags 8% of over 10, 000 contracts analyzed, providing compact event traces (witnesses) that human analysts can examine in only a few minutes per contract. More than half of the flagged contracts are likely to have unintended behaviour.","PeriodicalId":20624,"journal":{"name":"Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":"6 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2018-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"83801358","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 88
Practical program repair via bytecode mutation 实用程序修复通过字节码突变
Ali Ghanbari, Lingming Zhang
Automated Program Repair (APR) is one of the most recent advances in automated debugging, and can directly fix buggy programs with minimal human intervention. Although various advanced APR techniques (including search-based or semantic-based ones) have been proposed, they mainly work at the source-code level and it is not clear how bytecode-level APR performs in practice. Also, empirical studies of the existing techniques on bugs beyond what has been reported in the original papers are rather limited. In this paper, we implement the first practical bytecode-level APR technique, PraPR, and present the first extensive study on fixing real-world bugs (e.g., Defects4J bugs) using JVM bytecode mutation. The experimental results show that surprisingly even PraPR with only the basic traditional mutators can produce genuine fixes for 17 bugs; with simple additional commonly used APR mutators, PraPR is able to produce genuine fixes for 43 bugs, significantly outperforming state-of-the-art APR, while being over 10X faster. Furthermore, we performed an extensive study of PraPR and other recent APR tools on a large number of additional real-world bugs, and demonstrated the overfitting problem of recent advanced APR tools for the first time. Lastly, PraPR has also successfully fixed bugs for other JVM languages (e.g., for the popular Kotlin language), indicating PraPR can greatly complement existing source-code-level APR.
自动程序修复(APR)是自动调试的最新进展之一,它可以在最少的人工干预下直接修复有缺陷的程序。尽管已经提出了各种先进的APR技术(包括基于搜索或基于语义的技术),但它们主要工作在源代码级别,并且还不清楚字节码级别的APR在实践中如何执行。此外,除了在原始论文中报道的内容之外,对现有技术的实证研究也相当有限。在本文中,我们实现了第一个实用的字节码级APR技术,PraPR,并展示了第一个关于使用JVM字节码突变修复现实世界错误(例如,缺陷4j错误)的广泛研究。实验结果表明,令人惊讶的是,即使只有基本的传统突变体的PraPR也能对17个错误产生真正的修复;使用简单的额外常用的APR突变器,PraPR能够为43个错误生成真正的修复,显着优于最先进的APR,同时速度超过10倍。此外,我们对PraPR和其他最近的APR工具进行了广泛的研究,并对大量其他现实世界的错误进行了研究,并首次展示了最近的高级APR工具的过拟合问题。最后,PraPR还成功地修复了其他JVM语言(例如流行的Kotlin语言)的错误,这表明PraPR可以极大地补充现有的源代码级APR。
{"title":"Practical program repair via bytecode mutation","authors":"Ali Ghanbari, Lingming Zhang","doi":"10.1145/3293882.3330559","DOIUrl":"https://doi.org/10.1145/3293882.3330559","url":null,"abstract":"Automated Program Repair (APR) is one of the most recent advances in automated debugging, and can directly fix buggy programs with minimal human intervention. Although various advanced APR techniques (including search-based or semantic-based ones) have been proposed, they mainly work at the source-code level and it is not clear how bytecode-level APR performs in practice. Also, empirical studies of the existing techniques on bugs beyond what has been reported in the original papers are rather limited. In this paper, we implement the first practical bytecode-level APR technique, PraPR, and present the first extensive study on fixing real-world bugs (e.g., Defects4J bugs) using JVM bytecode mutation. The experimental results show that surprisingly even PraPR with only the basic traditional mutators can produce genuine fixes for 17 bugs; with simple additional commonly used APR mutators, PraPR is able to produce genuine fixes for 43 bugs, significantly outperforming state-of-the-art APR, while being over 10X faster. Furthermore, we performed an extensive study of PraPR and other recent APR tools on a large number of additional real-world bugs, and demonstrated the overfitting problem of recent advanced APR tools for the first time. Lastly, PraPR has also successfully fixed bugs for other JVM languages (e.g., for the popular Kotlin language), indicating PraPR can greatly complement existing source-code-level APR.","PeriodicalId":20624,"journal":{"name":"Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":"7 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2018-07-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"78646411","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 133
Data flow oriented UI testing: exploiting data flows and UI elements to test Android applications 面向数据流的UI测试:利用数据流和UI元素来测试Android应用程序
N. P. Borges
Testing user interfaces (UIs) is a challenging task. Ideally, every sequence of UI elements should be tested to guarantee that the application works correctly. This is, however, unfeasible due to the number of UI elements in an application. A better approach is to limit the evaluation to UI elements that affect a specific functionality. In this paper I present a novel technique to identify the relation between UI elements using the statically extracted data flows. I also present a method to refine these relations using dynamic analysis, in order to ensure that relations extracted from unreachable data flows are removed. Using these relations it is possible to more efficiently test a functionality. Finally, I present an approach to evaluate how these UI-aware data flows can be used as an heuristic to measure test coverage.
测试用户界面是一项具有挑战性的任务。理想情况下,应该测试每个UI元素序列,以确保应用程序正确工作。然而,由于应用程序中UI元素的数量,这是不可行的。更好的方法是将评估限制在影响特定功能的UI元素上。在本文中,我提出了一种使用静态提取的数据流来识别UI元素之间关系的新技术。我还提出了一种使用动态分析来改进这些关系的方法,以确保从不可达的数据流中提取的关系被删除。使用这些关系,可以更有效地测试功能。最后,我提出了一种方法来评估如何将这些可感知ui的数据流用作衡量测试覆盖率的启发式方法。
{"title":"Data flow oriented UI testing: exploiting data flows and UI elements to test Android applications","authors":"N. P. Borges","doi":"10.1145/3092703.3098234","DOIUrl":"https://doi.org/10.1145/3092703.3098234","url":null,"abstract":"Testing user interfaces (UIs) is a challenging task. Ideally, every sequence of UI elements should be tested to guarantee that the application works correctly. This is, however, unfeasible due to the number of UI elements in an application. A better approach is to limit the evaluation to UI elements that affect a specific functionality. In this paper I present a novel technique to identify the relation between UI elements using the statically extracted data flows. I also present a method to refine these relations using dynamic analysis, in order to ensure that relations extracted from unreachable data flows are removed. Using these relations it is possible to more efficiently test a functionality. Finally, I present an approach to evaluate how these UI-aware data flows can be used as an heuristic to measure test coverage.","PeriodicalId":20624,"journal":{"name":"Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":"42 1","pages":"432-435"},"PeriodicalIF":0.0,"publicationDate":"2017-07-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"90393894","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 7
SunCat: helping developers understand and predict performance problems in smartphone applications SunCat:帮助开发人员了解和预测智能手机应用程序中的性能问题
Adrian Nistor, Lenin Ravindranath
The number of smartphones shipped in 2014 will be four times larger than the number of PCs. Compared to PCs, smartphones have limited computing resources, and smartphone applications are more prone to performance problems. Traditionally, developers use profilers to detect performance problems by running applications with relatively large inputs. Unfortunately, for smartphone applications, the developer cannot easily control the input, because smartphone applications interact heavily with the environment. Given a run on a small input, how can a developer detect performance problems that would occur for a run with large input? We present SUNCAT, a novel technique that helps developers understand and predict performance problems in smartphone applications. The developer runs the application using a common input, typically small, and SUNCAT presents a prioritized list of repetition patterns that summarize the current run plus additional information to help the developer understand how these patterns may grow in the future runs with large inputs. We implemented SUNCAT for Windows Phone systems and used it to understand the performance characteristics of 29 usage scenarios in 5 popular applications. We found one performance problem that was confirmed and fixed, four problems that were confirmed, one confirmed problem that was a duplicate of an older report, and three more potential performance problems that developers agree may be improved.
2014年,智能手机的出货量将是个人电脑出货量的四倍。与pc相比,智能手机的计算资源有限,智能手机应用程序更容易出现性能问题。传统上,开发人员使用分析器通过运行具有相对较大输入的应用程序来检测性能问题。不幸的是,对于智能手机应用程序,开发人员不能轻易地控制输入,因为智能手机应用程序与环境有很大的交互。给定一个小输入的运行,开发人员如何检测在大输入的运行中可能出现的性能问题?我们提出SUNCAT,一种帮助开发人员理解和预测智能手机应用程序中的性能问题的新技术。开发人员使用公共输入(通常是小输入)运行应用程序,SUNCAT提供了一个重复模式的优先级列表,该列表总结了当前运行和附加信息,以帮助开发人员了解这些模式如何在将来使用大输入运行时增长。我们为Windows Phone系统实现了SUNCAT,并使用它来了解5个流行应用程序中29个使用场景的性能特征。我们发现了一个已确认并修复的性能问题,四个已确认的问题,一个已确认的问题是旧报告的重复,以及另外三个开发人员认为可以改进的潜在性能问题。
{"title":"SunCat: helping developers understand and predict performance problems in smartphone applications","authors":"Adrian Nistor, Lenin Ravindranath","doi":"10.1145/2610384.2610410","DOIUrl":"https://doi.org/10.1145/2610384.2610410","url":null,"abstract":"The number of smartphones shipped in 2014 will be four times larger than the number of PCs. Compared to PCs, smartphones have limited computing resources, and smartphone applications are more prone to performance problems. Traditionally, developers use profilers to detect performance problems by running applications with relatively large inputs. Unfortunately, for smartphone applications, the developer cannot easily control the input, because smartphone applications interact heavily with the environment. \u0000 Given a run on a small input, how can a developer detect performance problems that would occur for a run with large input? We present SUNCAT, a novel technique that helps developers understand and predict performance problems in smartphone applications. The developer runs the application using a common input, typically small, and SUNCAT presents a prioritized list of repetition patterns that summarize the current run plus additional information to help the developer understand how these patterns may grow in the future runs with large inputs. We implemented SUNCAT for Windows Phone systems and used it to understand the performance characteristics of 29 usage scenarios in 5 popular applications. We found one performance problem that was confirmed and fixed, four problems that were confirmed, one confirmed problem that was a duplicate of an older report, and three more potential performance problems that developers agree may be improved.","PeriodicalId":20624,"journal":{"name":"Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":"78 1","pages":"282-292"},"PeriodicalIF":0.0,"publicationDate":"2014-07-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"81629227","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 34
期刊
Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1