首页 > 最新文献

2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)最新文献

英文 中文
Automatically assessing code understandability: How far are we? 自动评估代码的可理解性:我们走了多远?
Simone Scalabrino, G. Bavota, Christopher Vendome, M. Vásquez, D. Poshyvanyk, R. Oliveto
Program understanding plays a pivotal role in software maintenance and evolution: a deep understanding of code is the stepping stone for most software-related activities, such as bug fixing or testing. Being able to measure the understandability of a piece of code might help in estimating the effort required for a maintenance activity, in comparing the quality of alternative implementations, or even in predicting bugs. Unfortunately, there are no existing metrics specifically designed to assess the understandability of a given code snippet. In this paper, we perform a first step in this direction, by studying the extent to which several types of metrics computed on code, documentation, and developers correlate with code understandability. To perform such an investigation we ran a study with 46 participants who were asked to understand eight code snippets each. We collected a total of 324 evaluations aiming at assessing the perceived understandability, the actual level of understanding, and the time needed to understand a code snippet. Our results demonstrate that none of the (existing and new) metrics we considered is able to capture code understandability, not even the ones assumed to assess quality attributes strongly related with it, such as code readability and complexity.
程序理解在软件维护和发展中扮演着关键的角色:对代码的深刻理解是大多数软件相关活动(如bug修复或测试)的垫脚石。能够度量一段代码的可理解性可能有助于估计维护活动所需的工作量,比较可选实现的质量,甚至预测bug。不幸的是,目前还没有专门设计的指标来评估给定代码段的可理解性。在本文中,我们向这个方向迈出了第一步,通过研究在代码、文档和开发人员上计算的几种度量类型与代码可理解性的关联程度。为了进行这样的调查,我们对46名参与者进行了一项研究,要求他们每人理解8个代码片段。我们总共收集了324个评估,旨在评估感知的可理解性、实际的理解水平和理解代码段所需的时间。我们的结果表明,我们所考虑的(现有的和新的)度量标准都不能捕获代码的可理解性,甚至不能评估与之密切相关的质量属性,比如代码的可读性和复杂性。
{"title":"Automatically assessing code understandability: How far are we?","authors":"Simone Scalabrino, G. Bavota, Christopher Vendome, M. Vásquez, D. Poshyvanyk, R. Oliveto","doi":"10.1109/ASE.2017.8115654","DOIUrl":"https://doi.org/10.1109/ASE.2017.8115654","url":null,"abstract":"Program understanding plays a pivotal role in software maintenance and evolution: a deep understanding of code is the stepping stone for most software-related activities, such as bug fixing or testing. Being able to measure the understandability of a piece of code might help in estimating the effort required for a maintenance activity, in comparing the quality of alternative implementations, or even in predicting bugs. Unfortunately, there are no existing metrics specifically designed to assess the understandability of a given code snippet. In this paper, we perform a first step in this direction, by studying the extent to which several types of metrics computed on code, documentation, and developers correlate with code understandability. To perform such an investigation we ran a study with 46 participants who were asked to understand eight code snippets each. We collected a total of 324 evaluations aiming at assessing the perceived understandability, the actual level of understanding, and the time needed to understand a code snippet. Our results demonstrate that none of the (existing and new) metrics we considered is able to capture code understandability, not even the ones assumed to assess quality attributes strongly related with it, such as code readability and complexity.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132883731","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}
引用次数: 75
Elixir: Effective object-oriented program repair 灵丹妙药:有效的面向对象程序修复
Ripon K. Saha, Yingjun Lyu, H. Yoshida, M. Prasad
This work is motivated by the pervasive use of method invocations in object-oriented (OO) programs, and indeed their prevalence in patches of OO-program bugs. We propose a generate-and-validate repair technique, called ELIXIR designed to be able to generate such patches. ELIXIR aggressively uses method calls, on par with local variables, fields, or constants, to construct more expressive repair-expressions, that go into synthesizing patches. The ensuing enlargement of the repair space, on account of the wider use of method calls, is effectively tackled by using a machine-learnt model to rank concrete repairs. The machine-learnt model relies on four features derived from the program context, i.e., the code surrounding the potential repair location, and the bug report. We implement ELIXIR and evaluate it on two datasets, the popular Defects4J dataset and a new dataset Bugs.jar created by us, and against 2 baseline versions of our technique, and 5 other techniques representing the state of the art in program repair. Our evaluation shows that ELIXIR is able to increase the number of correctly repaired bugs in Defects4J by 85% (from 14 to 26) and by 57% in Bugs.jar (from 14 to 22), while also significantly out-performing other state-of-the-art repair techniques including ACS, HD-Repair, NOPOL, PAR, and jGenProg.
这项工作的动机是面向对象(OO)程序中方法调用的普遍使用,以及它们在面向对象程序错误补丁中的普遍存在。我们提出了一种生成并验证修复技术,称为ELIXIR,旨在能够生成此类补丁。ELIXIR积极地使用方法调用(与局部变量、字段或常量一样)来构建更具表现力的修复表达式,用于合成补丁。由于更广泛地使用方法调用,随后的修复空间扩大,通过使用机器学习模型对具体修复进行排名,可以有效地解决这一问题。机器学习模型依赖于来自程序上下文的四个特征,即围绕潜在修复位置的代码和错误报告。我们实现ELIXIR并在两个数据集上对其进行评估,这两个数据集是流行的Defects4J数据集和我们创建的新数据集Bugs.jar,并对我们技术的2个基线版本和5个代表程序修复技术最新状态的其他技术进行了评估。我们的评估表明,ELIXIR能够将缺陷4j中正确修复的错误数量增加85%(从14个增加到26个),将bug .jar中的错误数量增加57%(从14个增加到22个),同时还显著优于其他最先进的修复技术,包括ACS、HD-Repair、NOPOL、PAR和jGenProg。
{"title":"Elixir: Effective object-oriented program repair","authors":"Ripon K. Saha, Yingjun Lyu, H. Yoshida, M. Prasad","doi":"10.1109/ASE.2017.8115675","DOIUrl":"https://doi.org/10.1109/ASE.2017.8115675","url":null,"abstract":"This work is motivated by the pervasive use of method invocations in object-oriented (OO) programs, and indeed their prevalence in patches of OO-program bugs. We propose a generate-and-validate repair technique, called ELIXIR designed to be able to generate such patches. ELIXIR aggressively uses method calls, on par with local variables, fields, or constants, to construct more expressive repair-expressions, that go into synthesizing patches. The ensuing enlargement of the repair space, on account of the wider use of method calls, is effectively tackled by using a machine-learnt model to rank concrete repairs. The machine-learnt model relies on four features derived from the program context, i.e., the code surrounding the potential repair location, and the bug report. We implement ELIXIR and evaluate it on two datasets, the popular Defects4J dataset and a new dataset Bugs.jar created by us, and against 2 baseline versions of our technique, and 5 other techniques representing the state of the art in program repair. Our evaluation shows that ELIXIR is able to increase the number of correctly repaired bugs in Defects4J by 85% (from 14 to 26) and by 57% in Bugs.jar (from 14 to 22), while also significantly out-performing other state-of-the-art repair techniques including ACS, HD-Repair, NOPOL, PAR, and jGenProg.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"96 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133933757","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}
引用次数: 180
Improved query reformulation for concept location using CodeRank and document structures 使用CodeRank和文档结构改进了概念位置的查询重构
Pub Date : 2017-10-30 DOI: 10.7287/peerj.preprints.3186v2
M. M. Rahman, C. Roy
During software maintenance, developers usually deal with a significant number of software change requests. As a part of this, they often formulate an initial query from the request texts, and then attempt to map the concepts discussed in the request to relevant source code locations in the software system (a.k.a., concept location). Unfortunately, studies suggest that they often perform poorly in choosing the right search terms for a change task. In this paper, we propose a novel technique-ACER-that takes an initial query, identifies appropriate search terms from the source code using a novel term weight-CodeRank, and then suggests effective reformulation to the initial query by exploiting the source document structures, query quality analysis and machine learning. Experiments with 1,675 baseline queries from eight subject systems report that our technique can improve 71% of the baseline queries which is highly promising. Comparison with five closely related existing techniques in query reformulation not only validates our empirical findings but also demonstrates the superiority of our technique.
在软件维护期间,开发人员通常要处理大量的软件变更请求。作为其中的一部分,他们经常从请求文本形成一个初始查询,然后尝试将请求中讨论的概念映射到软件系统中的相关源代码位置(也就是概念位置)。不幸的是,研究表明,他们在为变更任务选择正确的搜索词时往往表现不佳。在本文中,我们提出了一种新的技术- acer,该技术采用初始查询,使用新的术语权重coderank从源代码中识别合适的搜索词,然后通过利用源文档结构,查询质量分析和机器学习对初始查询提出有效的重构建议。对来自8个主题系统的1,675个基线查询进行的实验表明,我们的技术可以提高71%的基线查询,这是非常有前途的。与现有的五种密切相关的查询重构技术进行比较,不仅验证了我们的实证研究结果,而且证明了我们的技术的优越性。
{"title":"Improved query reformulation for concept location using CodeRank and document structures","authors":"M. M. Rahman, C. Roy","doi":"10.7287/peerj.preprints.3186v2","DOIUrl":"https://doi.org/10.7287/peerj.preprints.3186v2","url":null,"abstract":"During software maintenance, developers usually deal with a significant number of software change requests. As a part of this, they often formulate an initial query from the request texts, and then attempt to map the concepts discussed in the request to relevant source code locations in the software system (a.k.a., concept location). Unfortunately, studies suggest that they often perform poorly in choosing the right search terms for a change task. In this paper, we propose a novel technique-ACER-that takes an initial query, identifies appropriate search terms from the source code using a novel term weight-CodeRank, and then suggests effective reformulation to the initial query by exploiting the source document structures, query quality analysis and machine learning. Experiments with 1,675 baseline queries from eight subject systems report that our technique can improve 71% of the baseline queries which is highly promising. Comparison with five closely related existing techniques in query reformulation not only validates our empirical findings but also demonstrates the superiority of our technique.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"18 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114786992","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}
引用次数: 22
Leveraging syntax-related code for automated program repair 利用与语法相关的代码进行自动程序修复
Qi Xin, S. Reiss
We present our automated program repair technique ssFix which leverages existing code (from a code database) that is syntax-related to the context of a bug to produce patches for its repair. Given a faulty program and a fault-exposing test suite, ssFix does fault localization to identify suspicious statements that are likely to be faulty. For each such statement, ssFix identifies a code chunk (or target chunk) including the statement and its local context. ssFix works on the target chunk to produce patches. To do so, it first performs syntactic code search to find candidate code chunks that are syntax-related, i.e., structurally similar and conceptually related, to the target chunk from a code database (or codebase) consisting of the local faulty program and an external code repository. ssFix assumes the correct fix to be contained in the candidate chunks, and it leverages each candidate chunk to produce patches for the target chunk. To do so, ssFix translates the candidate chunk by unifying the names used in the candidate chunk with those in the target chunk; matches the chunk components (expressions and statements) between the translated candidate chunk and the target chunk; and produces patches for the target chunk based on the syntactic differences that exist between the matched components and in the unmatched components. ssFix finally validates the patched programs generated against the test suite and reports the first one that passes the test suite. We evaluated ssFix on 357 bugs in the Defects4J bug dataset. Our results show that ssFix successfully repaired 20 bugs with valid patches generated and that it outperformed five other repair techniques for Java.
我们介绍了我们的自动程序修复技术ssFix,它利用与错误上下文语法相关的现有代码(来自代码数据库)来生成修复补丁。给定一个有错误的程序和一个暴露错误的测试套件,ssFix会进行错误定位,以识别可能有错误的可疑语句。对于每个这样的语句,ssFix标识一个代码块(或目标块),包括语句及其本地上下文。ssFix在目标块上工作以生成补丁。为此,它首先执行语法代码搜索,从由本地错误程序和外部代码存储库组成的代码数据库(或代码库)中找到与语法相关的候选代码块,即与目标块结构相似且概念相关的候选代码块。ssFix假定候选块中包含正确的修复,并利用每个候选块为目标块生成补丁。为此,ssFix通过统一候选数据块中使用的名称和目标数据块中的名称来翻译候选数据块;在翻译后的候选数据块和目标数据块之间匹配数据块组件(表达式和语句);并根据匹配组件之间和不匹配组件中存在的语法差异为目标块生成补丁。ssFix最后根据测试套件验证生成的补丁程序,并报告通过测试套件的第一个补丁程序。我们对缺陷4j错误数据集中的357个错误评估了ssFix。我们的结果表明,ssFix成功地修复了20个错误,并生成了有效的补丁,并且它的性能优于其他五种Java修复技术。
{"title":"Leveraging syntax-related code for automated program repair","authors":"Qi Xin, S. Reiss","doi":"10.1109/ASE.2017.8115676","DOIUrl":"https://doi.org/10.1109/ASE.2017.8115676","url":null,"abstract":"We present our automated program repair technique ssFix which leverages existing code (from a code database) that is syntax-related to the context of a bug to produce patches for its repair. Given a faulty program and a fault-exposing test suite, ssFix does fault localization to identify suspicious statements that are likely to be faulty. For each such statement, ssFix identifies a code chunk (or target chunk) including the statement and its local context. ssFix works on the target chunk to produce patches. To do so, it first performs syntactic code search to find candidate code chunks that are syntax-related, i.e., structurally similar and conceptually related, to the target chunk from a code database (or codebase) consisting of the local faulty program and an external code repository. ssFix assumes the correct fix to be contained in the candidate chunks, and it leverages each candidate chunk to produce patches for the target chunk. To do so, ssFix translates the candidate chunk by unifying the names used in the candidate chunk with those in the target chunk; matches the chunk components (expressions and statements) between the translated candidate chunk and the target chunk; and produces patches for the target chunk based on the syntactic differences that exist between the matched components and in the unmatched components. ssFix finally validates the patched programs generated against the test suite and reports the first one that passes the test suite. We evaluated ssFix on 357 bugs in the Defects4J bug dataset. Our results show that ssFix successfully repaired 20 bugs with valid patches generated and that it outperformed five other repair techniques for Java.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"13 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125346755","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}
引用次数: 158
Software performance self-adaptation through efficient model predictive control 通过有效的模型预测控制实现软件性能自适应
Emilio Incerto, M. Tribastone, Catia Trubiani
A key challenge in software systems that are exposed to runtime variabilities, such as workload fluctuations and service degradation, is to continuously meet performance requirements. In this paper we present an approach that allows performance self-adaptation using a system model based on queuing networks (QNs), a well-assessed formalism for software performance engineering. Software engineers can select the adaptation knobs of a QN (routing probabilities, service rates, and concurrency level) and we automatically derive a Model Predictive Control (MPC) formulation suitable to continuously configure the selected knobs and track the desired performance requirements. Previous MPC approaches have two main limitations: i) high computational cost of the optimization, due to nonlinearity of the models; ii) focus on long-run performance metrics only, due to the lack of tractable representations of the QN's time-course evolution. As a consequence, these limitations allow adaptations with coarse time granularities, neglecting the system's transient behavior. Our MPC adaptation strategy is efficient since it is based on mixed integer programming, which uses a compact representation of a QN with ordinary differential equations. An extensive evaluation on an implementation of a load balancer demonstrates the effectiveness of the adaptation and compares it with traditional methods based on probabilistic model checking.
在暴露于运行时可变性(如工作负载波动和服务降级)的软件系统中,一个关键挑战是持续满足性能需求。在本文中,我们提出了一种允许性能自适应的方法,该方法使用基于排队网络(QNs)的系统模型,这是软件性能工程的一种良好评估的形式化方法。软件工程师可以选择QN的自适应旋钮(路由概率、服务速率和并发级别),我们自动推导出适合于连续配置所选旋钮并跟踪所需性能要求的模型预测控制(MPC)公式。以前的MPC方法有两个主要的局限性:1)由于模型的非线性,优化的计算成本高;ii)仅关注长期性能指标,因为缺乏QN的时间过程演变的可处理表示。因此,这些限制允许适应粗时间粒度,而忽略了系统的瞬态行为。我们的MPC自适应策略是有效的,因为它是基于混合整数规划的,它使用一个具有常微分方程的QN的紧凑表示。对负载均衡器的实现进行了广泛的评估,证明了自适应的有效性,并将其与基于概率模型检查的传统方法进行了比较。
{"title":"Software performance self-adaptation through efficient model predictive control","authors":"Emilio Incerto, M. Tribastone, Catia Trubiani","doi":"10.1109/ASE.2017.8115660","DOIUrl":"https://doi.org/10.1109/ASE.2017.8115660","url":null,"abstract":"A key challenge in software systems that are exposed to runtime variabilities, such as workload fluctuations and service degradation, is to continuously meet performance requirements. In this paper we present an approach that allows performance self-adaptation using a system model based on queuing networks (QNs), a well-assessed formalism for software performance engineering. Software engineers can select the adaptation knobs of a QN (routing probabilities, service rates, and concurrency level) and we automatically derive a Model Predictive Control (MPC) formulation suitable to continuously configure the selected knobs and track the desired performance requirements. Previous MPC approaches have two main limitations: i) high computational cost of the optimization, due to nonlinearity of the models; ii) focus on long-run performance metrics only, due to the lack of tractable representations of the QN's time-course evolution. As a consequence, these limitations allow adaptations with coarse time granularities, neglecting the system's transient behavior. Our MPC adaptation strategy is efficient since it is based on mixed integer programming, which uses a compact representation of a QN with ordinary differential equations. An extensive evaluation on an implementation of a load balancer demonstrates the effectiveness of the adaptation and compares it with traditional methods based on probabilistic model checking.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"30 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114474903","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
Towards a software vulnerability prediction model using traceable code patterns and software metrics 基于可跟踪代码模式和软件度量的软件漏洞预测模型
Kazi Zakia Sultana
Software security is an important aspect of ensuring software quality. The goal of this study is to help developers evaluate software security using traceable patterns and software metrics during development. The concept of traceable patterns is similar to design patterns but they can be automatically recognized and extracted from source code. If these patterns can better predict vulnerable code compared to traditional software metrics, they can be used in developing a vulnerability prediction model to classify code as vulnerable or not. By analyzing and comparing the performance of traceable patterns with metrics, we propose a vulnerability prediction model. This study explores the performance of some code patterns in vulnerability prediction and compares them with traditional software metrics. We use the findings to build an effective vulnerability prediction model. We evaluate security vulnerabilities reported for Apache Tomcat, Apache CXF and three stand-alone Java web applications. We use machine learning and statistical techniques for predicting vulnerabilities using traceable patterns and metrics as features. We found that patterns have a lower false negative rate and higher recall in detecting vulnerable code than the traditional software metrics.
软件安全是保证软件质量的一个重要方面。本研究的目标是帮助开发人员在开发过程中使用可跟踪的模式和软件度量来评估软件安全性。可跟踪模式的概念类似于设计模式,但它们可以被自动识别并从源代码中提取出来。如果与传统的软件度量相比,这些模式可以更好地预测易受攻击的代码,那么它们就可以用于开发一个漏洞预测模型,对代码进行易受攻击或不受攻击的分类。通过分析和比较可跟踪模式与度量的性能,提出了一种漏洞预测模型。本研究探讨了一些代码模式在漏洞预测中的性能,并将其与传统的软件度量进行了比较。利用这些发现建立了一个有效的脆弱性预测模型。我们评估了Apache Tomcat、Apache CXF和三个独立Java web应用程序报告的安全漏洞。我们使用机器学习和统计技术来预测漏洞,使用可跟踪的模式和指标作为特征。我们发现,与传统的软件度量相比,模式在检测脆弱代码方面具有更低的假阴性率和更高的召回率。
{"title":"Towards a software vulnerability prediction model using traceable code patterns and software metrics","authors":"Kazi Zakia Sultana","doi":"10.1109/ASE.2017.8115724","DOIUrl":"https://doi.org/10.1109/ASE.2017.8115724","url":null,"abstract":"Software security is an important aspect of ensuring software quality. The goal of this study is to help developers evaluate software security using traceable patterns and software metrics during development. The concept of traceable patterns is similar to design patterns but they can be automatically recognized and extracted from source code. If these patterns can better predict vulnerable code compared to traditional software metrics, they can be used in developing a vulnerability prediction model to classify code as vulnerable or not. By analyzing and comparing the performance of traceable patterns with metrics, we propose a vulnerability prediction model. This study explores the performance of some code patterns in vulnerability prediction and compares them with traditional software metrics. We use the findings to build an effective vulnerability prediction model. We evaluate security vulnerabilities reported for Apache Tomcat, Apache CXF and three stand-alone Java web applications. We use machine learning and statistical techniques for predicting vulnerabilities using traceable patterns and metrics as features. We found that patterns have a lower false negative rate and higher recall in detecting vulnerable code than the traditional software metrics.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"39 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124449191","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}
引用次数: 16
Testing intermediate representations for binary analysis 检验二元分析的中间表示
Soomin Kim, Markus Faerevaag, Minkyu Jung, S. Jung, DongYeop Oh, Jonghyup Lee, S. Cha
Binary lifting, which is to translate a binary executable to a high-level intermediate representation, is a primary step in binary analysis. Despite its importance, there are only few existing approaches to testing the correctness of binary lifters. Furthermore, the existing approaches suffer from low test coverage, because they largely depend on random test case generation. In this paper, we present the design and implementation of the first systematic approach to testing binary lifters. We have evaluated the proposed system on 3 state-of-the-art binary lifters, and found 24 previously unknown semantic bugs. Our result demonstrates that writing a precise binary lifter is extremely difficult even for those heavily tested projects.
二进制提升,即将二进制可执行文件转换为高级中间表示,是二进制分析的主要步骤。尽管它很重要,但只有很少的现有方法来测试二进制提升器的正确性。此外,现有方法的测试覆盖率很低,因为它们很大程度上依赖于随机的测试用例生成。在本文中,我们提出的设计和实现的第一个系统的方法来测试二元升降机。我们在3个最先进的二进制提升器上评估了提议的系统,发现了24个以前未知的语义错误。我们的结果表明,即使对于那些经过大量测试的项目,编写精确的二进制提升器也是极其困难的。
{"title":"Testing intermediate representations for binary analysis","authors":"Soomin Kim, Markus Faerevaag, Minkyu Jung, S. Jung, DongYeop Oh, Jonghyup Lee, S. Cha","doi":"10.1109/ASE.2017.8115648","DOIUrl":"https://doi.org/10.1109/ASE.2017.8115648","url":null,"abstract":"Binary lifting, which is to translate a binary executable to a high-level intermediate representation, is a primary step in binary analysis. Despite its importance, there are only few existing approaches to testing the correctness of binary lifters. Furthermore, the existing approaches suffer from low test coverage, because they largely depend on random test case generation. In this paper, we present the design and implementation of the first systematic approach to testing binary lifters. We have evaluated the proposed system on 3 state-of-the-art binary lifters, and found 24 previously unknown semantic bugs. Our result demonstrates that writing a precise binary lifter is extremely difficult even for those heavily tested projects.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"117 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117297993","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}
引用次数: 53
EventFlowSlicer: A tool for generating realistic goal-driven GUI tests EventFlowSlicer:一个生成现实目标驱动GUI测试的工具
Jonathan A. Saddler, Myra B. Cohen
Most automated testing techniques for graphical user interfaces (GUIs) produce test cases that are only concerned with covering the elements (widgets, menus, etc.) on the interface, or the underlying program code, with little consideration of test case semantics. This is effective for functional testing where the aim is to find as many faults as possible. However, when one wants to mimic a real user for evaluating usability, or when it is necessary to extensively test important end-user tasks of a system, or to generate examples of how to use an interface, this generation approach fails. Capture and replay techniques can be used, however there are often multiple ways to achieve a particular goal, and capturing all of these is usually too time consuming and unrealistic. Prior work on human performance regression testing introduced a constraint based method to filter test cases created by a functional test case generator, however that work did not capture the specifications, or directly generate only the required tests and considered only a single type of test goal. In this paper we present EventFlowSlicer, a tool that allows the GUI tester to specify and generate all realistic test cases relevant to achieve a stated goal. The user first captures relevant events on the interface, then adds constraints to provide restrictions on the task. An event flow graph is extracted containing only the widgets of interest for that goal. Next all test cases are generated for edges in the graph which respect the constraints. The test cases can then be replayed using a modified version of GUITAR. A video demonstration of EventFlowSlicer can be found at https://youtu.be/hw7WYz8WYVU.
大多数用于图形用户界面(gui)的自动化测试技术产生的测试用例只涉及覆盖界面上的元素(小部件、菜单等)或底层程序代码,很少考虑测试用例语义。这对于功能测试是有效的,因为功能测试的目的是找到尽可能多的错误。然而,当一个人想要模拟一个真实的用户来评估可用性,或者当有必要广泛测试系统的重要最终用户任务,或者生成如何使用界面的示例时,这种生成方法就失败了。可以使用捕获和重放技术,但是通常有多种方法来实现特定目标,并且捕获所有这些通常太耗时且不现实。先前关于人类性能回归测试的工作引入了一种基于约束的方法来过滤由功能测试用例生成器创建的测试用例,然而,该工作没有捕获规范,或者直接生成所需的测试,并且只考虑单一类型的测试目标。在本文中,我们介绍了EventFlowSlicer,一个允许GUI测试人员指定并生成所有与实现既定目标相关的实际测试用例的工具。用户首先捕获界面上的相关事件,然后添加约束以提供对任务的限制。提取的事件流图只包含与该目标相关的小部件。接下来,所有的测试用例都是为图中尊重约束的边生成的。然后可以使用修改后的GUITAR版本重放测试用例。EventFlowSlicer的视频演示可以在https://youtu.be/hw7WYz8WYVU上找到。
{"title":"EventFlowSlicer: A tool for generating realistic goal-driven GUI tests","authors":"Jonathan A. Saddler, Myra B. Cohen","doi":"10.1109/ASE.2017.8115711","DOIUrl":"https://doi.org/10.1109/ASE.2017.8115711","url":null,"abstract":"Most automated testing techniques for graphical user interfaces (GUIs) produce test cases that are only concerned with covering the elements (widgets, menus, etc.) on the interface, or the underlying program code, with little consideration of test case semantics. This is effective for functional testing where the aim is to find as many faults as possible. However, when one wants to mimic a real user for evaluating usability, or when it is necessary to extensively test important end-user tasks of a system, or to generate examples of how to use an interface, this generation approach fails. Capture and replay techniques can be used, however there are often multiple ways to achieve a particular goal, and capturing all of these is usually too time consuming and unrealistic. Prior work on human performance regression testing introduced a constraint based method to filter test cases created by a functional test case generator, however that work did not capture the specifications, or directly generate only the required tests and considered only a single type of test goal. In this paper we present EventFlowSlicer, a tool that allows the GUI tester to specify and generate all realistic test cases relevant to achieve a stated goal. The user first captures relevant events on the interface, then adds constraints to provide restrictions on the task. An event flow graph is extracted containing only the widgets of interest for that goal. Next all test cases are generated for edges in the graph which respect the constraints. The test cases can then be replayed using a modified version of GUITAR. A video demonstration of EventFlowSlicer can be found at https://youtu.be/hw7WYz8WYVU.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130232337","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
TrEKer: Tracing error propagation in operating system kernels 在操作系统内核中跟踪错误传播
Nicolas Coppik, Oliver Schwahn, Stefan Winter, N. Suri
Modern operating systems (OSs) consist of numerous interacting components, many of which are developed and maintained independently of one another. In monolithic systems, the boundaries of and interfaces between such components are not strictly enforced at runtime. Therefore, faults in individual components may directly affect other parts of the system in various ways. Software fault injection (SFI) is a testing technique to assess the resilience of a software system in the presence of faulty components. Unfortunately, SFI tests of OSs are inconclusive if they do not lead to observable failures, as corruptions of the internal software state may not be visible at its interfaces and, yet, affect the subsequent execution of the OS beyond the duration of the test. In this paper we present TREKER, a fully automated approach for identifying how faulty OS components affect other parts of the system. TREKER combines static and dynamic analyses to achieve efficient tracing on the granularity of memory accesses. We demonstrate TrEKer's ability to support SFI oracles by accurately tracing the effects of faults injected into three widely used Linux kernel modules.
现代操作系统(os)由许多相互作用的组件组成,其中许多组件是彼此独立开发和维护的。在单片系统中,这些组件之间的边界和接口在运行时没有严格执行。因此,单个部件的故障可能会以各种方式直接影响到系统的其他部件。软件故障注入(SFI)是一种在存在故障组件的情况下评估软件系统弹性的测试技术。不幸的是,如果操作系统的SFI测试没有导致可观察到的故障,则它们是不确定的,因为内部软件状态的损坏可能在其接口上不可见,并且在测试持续时间之外影响操作系统的后续执行。在本文中,我们介绍TREKER,这是一种全自动方法,用于识别故障操作系统组件如何影响系统的其他部分。TREKER结合了静态和动态分析,以实现对内存访问粒度的有效跟踪。我们通过精确跟踪注入到三个广泛使用的Linux内核模块中的错误的影响来展示TrEKer支持SFI oracle的能力。
{"title":"TrEKer: Tracing error propagation in operating system kernels","authors":"Nicolas Coppik, Oliver Schwahn, Stefan Winter, N. Suri","doi":"10.1109/ASE.2017.8115650","DOIUrl":"https://doi.org/10.1109/ASE.2017.8115650","url":null,"abstract":"Modern operating systems (OSs) consist of numerous interacting components, many of which are developed and maintained independently of one another. In monolithic systems, the boundaries of and interfaces between such components are not strictly enforced at runtime. Therefore, faults in individual components may directly affect other parts of the system in various ways. Software fault injection (SFI) is a testing technique to assess the resilience of a software system in the presence of faulty components. Unfortunately, SFI tests of OSs are inconclusive if they do not lead to observable failures, as corruptions of the internal software state may not be visible at its interfaces and, yet, affect the subsequent execution of the OS beyond the duration of the test. In this paper we present TREKER, a fully automated approach for identifying how faulty OS components affect other parts of the system. TREKER combines static and dynamic analyses to achieve efficient tracing on the granularity of memory accesses. We demonstrate TrEKer's ability to support SFI oracles by accurately tracing the effects of faults injected into three widely used Linux kernel modules.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"30 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128196341","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}
引用次数: 11
UI driven Android application reduction UI驱动的Android应用程序减少
Jianjun Huang, Yousra Aafer, D. Perry, X. Zhang, Chen Tian
While smartphone« and mobile apps have been an integral part of our life, modern mobile apps tend to contain a lot of rarely used functionalities. For example, applications contain advertisements and offer extra features such as recommended news stories in weather apps. While these functionalities are not essential to an app, they nonetheless consume power, CPU cycles and bandwidth. In this paper, we design a UI driven approach that allows customizing an Android app by removing its unwanted functionalities. In particular, our technique displays the UI and allows the user to select elements denoting functionalities that she wants to remove. Using this information, our technique automatically removes all the code elements related to the selected functionalities, including all the relevant background tasks. The underlying analysis is a type system, in which each code element is tagged with a type indicating if it should be removed. From the UI hints, our technique infers types for all other code elements and reduces the app accordingly. We implement a prototype and evaluate it on 10 real-world Android apps. The results show that our approach can accurately discover the removable code elements and lead to substantial resource savings in the reduced apps.
虽然智能手机和移动应用已经成为我们生活中不可或缺的一部分,但现代移动应用往往包含许多很少使用的功能。例如,应用程序包含广告,并提供额外的功能,如天气应用程序中的新闻故事推荐。虽然这些功能对应用程序来说并不是必不可少的,但它们仍然会消耗能量、CPU周期和带宽。在本文中,我们设计了一个UI驱动的方法,允许通过删除其不需要的功能来定制Android应用程序。特别是,我们的技术显示UI并允许用户选择表示她想要删除的功能的元素。使用这些信息,我们的技术自动删除与所选功能相关的所有代码元素,包括所有相关的后台任务。底层分析是一个类型系统,其中每个代码元素都用类型标记,指示是否应该删除它。从UI提示中,我们的技术推断出所有其他代码元素的类型,并相应地减少应用程序。我们执行了一个原型,并在10个真实的Android应用上进行了评估。结果表明,我们的方法可以准确地发现可移除的代码元素,并在减少的应用程序中节省大量资源。
{"title":"UI driven Android application reduction","authors":"Jianjun Huang, Yousra Aafer, D. Perry, X. Zhang, Chen Tian","doi":"10.1109/ASE.2017.8115642","DOIUrl":"https://doi.org/10.1109/ASE.2017.8115642","url":null,"abstract":"While smartphone« and mobile apps have been an integral part of our life, modern mobile apps tend to contain a lot of rarely used functionalities. For example, applications contain advertisements and offer extra features such as recommended news stories in weather apps. While these functionalities are not essential to an app, they nonetheless consume power, CPU cycles and bandwidth. In this paper, we design a UI driven approach that allows customizing an Android app by removing its unwanted functionalities. In particular, our technique displays the UI and allows the user to select elements denoting functionalities that she wants to remove. Using this information, our technique automatically removes all the code elements related to the selected functionalities, including all the relevant background tasks. The underlying analysis is a type system, in which each code element is tagged with a type indicating if it should be removed. From the UI hints, our technique infers types for all other code elements and reduces the app accordingly. We implement a prototype and evaluate it on 10 real-world Android apps. The results show that our approach can accurately discover the removable code elements and lead to substantial resource savings in the reduced apps.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"49 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124102894","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}
引用次数: 12
期刊
2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)
全部 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学术文献互助群
群 号:604180095
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1