首页 > 最新文献

2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)最新文献

英文 中文
Lightweight Source Code Monitoring with Triggr 轻量级源代码监视与触发器
Alim Ozdemir, Ayse Tosun Misirli, H. Erdogmus, Rui Abreu
Existing tools for monitoring the quality of codebases modified by multiple developers tend to be centralized and inflexible. These tools increase the visibility of quality by producing effective reports and visualizations when a change is made to the codebase and triggering alerts when undesirable situations occur. However, their configuration is invariably both (a) centrally managed in that individual maintainers cannot define local rules to receive customized feedback when a change occurs in a specific part of the code in which they are particularly interested, and (b) coarse-grained in that analyses cannot be turned on and off below the file level. Triggr, the tool proposed in this paper, addresses these limitations by allowing distributed, customized, and fine-grained monitoring. It is a lightweight re-implementation of our previous tool, CodeAware, which adopts the same paradigm. The tool listens on a codebase's shared repository using an event-based approach, and can send alerts to subscribed developers based on rules defined locally by them. Triggr is open-source and available at https://github.com/lyzerk/Triggr. A demonstration video can be found at https://youtu.be/qQs9aDwXJjY.
用于监视由多个开发人员修改的代码库质量的现有工具往往是集中的和不灵活的。这些工具通过在对代码库进行更改时生成有效的报告和可视化,以及在出现不希望出现的情况时触发警报,提高了质量的可见性。然而,它们的配置总是(a)集中管理,因为单个维护者不能定义本地规则,以便在他们特别感兴趣的代码的特定部分发生更改时接收定制的反馈,并且(b)粗粒度,因为不能在文件级别以下打开和关闭分析。本文中提出的工具trigger通过允许分布式、自定义和细粒度的监视来解决这些限制。它是我们之前的工具CodeAware的轻量级重新实现,CodeAware采用了相同的范式。该工具使用基于事件的方法监听代码库的共享存储库,并可以根据订阅的开发人员在本地定义的规则向他们发送警报。trigger是开源的,可以在https://github.com/lyzerk/Triggr上获得。可以在https://youtu.be/qQs9aDwXJjY上找到演示视频。
{"title":"Lightweight Source Code Monitoring with Triggr","authors":"Alim Ozdemir, Ayse Tosun Misirli, H. Erdogmus, Rui Abreu","doi":"10.1145/3238147.3240486","DOIUrl":"https://doi.org/10.1145/3238147.3240486","url":null,"abstract":"Existing tools for monitoring the quality of codebases modified by multiple developers tend to be centralized and inflexible. These tools increase the visibility of quality by producing effective reports and visualizations when a change is made to the codebase and triggering alerts when undesirable situations occur. However, their configuration is invariably both (a) centrally managed in that individual maintainers cannot define local rules to receive customized feedback when a change occurs in a specific part of the code in which they are particularly interested, and (b) coarse-grained in that analyses cannot be turned on and off below the file level. Triggr, the tool proposed in this paper, addresses these limitations by allowing distributed, customized, and fine-grained monitoring. It is a lightweight re-implementation of our previous tool, CodeAware, which adopts the same paradigm. The tool listens on a codebase's shared repository using an event-based approach, and can send alerts to subscribed developers based on rules defined locally by them. Triggr is open-source and available at https://github.com/lyzerk/Triggr. A demonstration video can be found at https://youtu.be/qQs9aDwXJjY.","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"53 1","pages":"864-867"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"82706971","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}
引用次数: 1
Semantic Crash Bucketing 语义崩溃分块
R. V. Tonder, John Kotheimer, Claire Le Goues
Precise crash triage is important for automated dynamic testing tools, like fuzzers. At scale, fuzzers produce millions of crashing inputs. Fuzzers use heuristics, like stack hashes, to cut down on duplicate bug reports. These heuristics are fast, but often imprecise: even after deduplication, hundreds of uniquely reported crashes can still correspond to the same bug. Remaining crashes must be inspected manually, incurring considerable effort. In this paper we present Semantic Crash Bucketing, a generic method for precise crash bucketing using program transformation. Semantic Crash Bucketing maps crashing inputs to unique bugs as a function of changing a program (i.e., a semantic delta). We observe that a real bug fix precisely identifies crashes belonging to the same bug. Our insight is to approximate real bug fixes with lightweight program transformation to obtain the same level of precision. Our approach uses (a) patch templates and (b) semantic feedback from the program to automatically generate and apply approximate fixes for general bug classes. Our evaluation shows that approximate fixes are competitive with using true fixes for crash bucketing, and significantly outperforms built-in deduplication techniques for three state of the art fuzzers.
精确的故障分类对于自动动态测试工具(如fuzzers)非常重要。在规模上,fuzzers产生数百万个崩溃输入。Fuzzers使用像堆栈哈希这样的启发式方法来减少重复的bug报告。这些启发式方法很快,但往往不精确:即使在重复数据删除之后,数百个唯一报告的崩溃仍然可能对应于同一个错误。必须手动检查剩余的崩溃,这将产生相当大的工作量。本文提出了一种基于程序转换的精确碰撞分类的通用方法——语义碰撞分类。语义崩溃bucket将崩溃输入映射为唯一的错误,作为更改程序的函数(即语义增量)。我们观察到,真正的bug修复可以精确地识别属于同一bug的崩溃。我们的想法是用轻量级的程序转换来近似真实的bug修复,以获得相同的精度。我们的方法使用(a)补丁模板和(b)来自程序的语义反馈来自动生成和应用一般错误类的近似修复。我们的评估表明,近似修复与使用真正修复进行崩溃存储是有竞争力的,并且明显优于三种最先进的模糊器的内置重复数据删除技术。
{"title":"Semantic Crash Bucketing","authors":"R. V. Tonder, John Kotheimer, Claire Le Goues","doi":"10.1145/3238147.3238200","DOIUrl":"https://doi.org/10.1145/3238147.3238200","url":null,"abstract":"Precise crash triage is important for automated dynamic testing tools, like fuzzers. At scale, fuzzers produce millions of crashing inputs. Fuzzers use heuristics, like stack hashes, to cut down on duplicate bug reports. These heuristics are fast, but often imprecise: even after deduplication, hundreds of uniquely reported crashes can still correspond to the same bug. Remaining crashes must be inspected manually, incurring considerable effort. In this paper we present Semantic Crash Bucketing, a generic method for precise crash bucketing using program transformation. Semantic Crash Bucketing maps crashing inputs to unique bugs as a function of changing a program (i.e., a semantic delta). We observe that a real bug fix precisely identifies crashes belonging to the same bug. Our insight is to approximate real bug fixes with lightweight program transformation to obtain the same level of precision. Our approach uses (a) patch templates and (b) semantic feedback from the program to automatically generate and apply approximate fixes for general bug classes. Our evaluation shows that approximate fixes are competitive with using true fixes for crash bucketing, and significantly outperforms built-in deduplication techniques for three state of the art fuzzers.","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"12 1","pages":"612-622"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"82732018","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}
引用次数: 42
The Electrum Analyzer: Model Checking Relational First-Order Temporal Specifications 电子分析仪:模型检查关系一阶时间规范
Julien Brunel, D. Chemouil, Alcino Cunha, Nuno Macedo
This paper presents the Electrum Analyzer, a free-software tool to validate and perform model checking of Electrum specifications. Electrum is an extension of Alloy that enriches its relational logic with LTL operators, thus simplifying the specification of dynamic systems. The Analyzer supports both automatic bounded model checking, with an encoding into SAT, and unbounded model checking, with an encoding into SMV. Instance, or counter-example, traces are presented back to the user in a unified visualizer. Features to speed up model checking are offered, including a decomposed parallel solving strategy and the extraction of symbolic bounds. Source code: https://github.com/haslab/Electrum Video: https://youtu.be/FbjlpvjgMDA
本文介绍了Electrum Analyzer,这是一个免费软件工具,用于验证和执行Electrum规格的模型检查。Electrum是Alloy的扩展,它通过LTL操作符丰富了其关系逻辑,从而简化了动态系统的规范。Analyzer支持自动有界模型检查(编码为SAT)和无界模型检查(编码为SMV)。实例或反例跟踪在统一的可视化工具中显示给用户。提出了一种分解并行求解策略和提取符号边界的方法来加快模型检验速度。源代码:https://github.com/haslab/Electrum视频:https://youtu.be/FbjlpvjgMDA
{"title":"The Electrum Analyzer: Model Checking Relational First-Order Temporal Specifications","authors":"Julien Brunel, D. Chemouil, Alcino Cunha, Nuno Macedo","doi":"10.1145/3238147.3240475","DOIUrl":"https://doi.org/10.1145/3238147.3240475","url":null,"abstract":"This paper presents the Electrum Analyzer, a free-software tool to validate and perform model checking of Electrum specifications. Electrum is an extension of Alloy that enriches its relational logic with LTL operators, thus simplifying the specification of dynamic systems. The Analyzer supports both automatic bounded model checking, with an encoding into SAT, and unbounded model checking, with an encoding into SMV. Instance, or counter-example, traces are presented back to the user in a unified visualizer. Features to speed up model checking are offered, including a decomposed parallel solving strategy and the extraction of symbolic bounds. Source code: https://github.com/haslab/Electrum Video: https://youtu.be/FbjlpvjgMDA","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"23 1","pages":"884-887"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"91044227","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}
引用次数: 19
Loop Path Reduction by State Pruning 状态剪枝的环径缩减
Jianxiong Gao, S. Lumetta
Path explosion has been a problem for symbolic execution for a long time. The key to avoid path explosion is to limit the number of paths generated within loops while maintaining high code coverage. Full symbolic execution creates paths for every possible execution path. Frequently, paths within loops do not contribute to code coverage. Branches within loops may generate new states at every iteration. The path explosion problem created by loops often stops symbolic execution to reach deeper parts of the code. In this paper, we propose a new path exploration method that reduces the number of states needed to achieve high coverage. Our algorithm limits the number of new states created by first prioritizing states, and then pruning the states that do not contribute to code coverage. Our algorithm does not require loop invariant inference/loop summarization, nor does it bound the number of iterations of loop exploration. The proposed algorithm can thus handle a broader set of loops than previous approaches. In fact, our algorithm is orthogonal to loop summarization techniques and search-guide heuristics, so it complements the current methods. We have implemented our algorithm using KLEE and tested with 235 student-generated versions of a classroom assignment. Our results show that our algorithm helps to achieve the same coverage with speedup of 11.8× for 117 out of the 235 programs, while adding 15% max observed and 2% average overhead over the 50% of programs not benefiting from the technique. The maximum speedup for a single program is 52.3×.
长期以来,路径爆炸一直是符号执行的问题。避免路径爆炸的关键是在保持高代码覆盖率的同时限制循环中生成的路径数量。全符号执行为每个可能的执行路径创建路径。通常,循环中的路径对代码覆盖率没有贡献。循环中的分支可能会在每次迭代中生成新的状态。循环造成的路径爆炸问题通常会停止符号执行,以到达代码的更深部分。在本文中,我们提出了一种新的路径探索方法,该方法减少了实现高覆盖所需的状态数。我们的算法通过首先对状态进行优先级排序,然后修剪对代码覆盖率没有贡献的状态来限制新状态的创建数量。我们的算法不需要循环不变推理/循环总结,也不限制循环探索的迭代次数。因此,所提出的算法可以处理比以前的方法更广泛的循环集。实际上,我们的算法与循环总结技术和搜索引导启发式技术是正交的,因此它是对现有方法的补充。我们使用KLEE实现了我们的算法,并用235个学生生成的课堂作业版本进行了测试。我们的结果表明,我们的算法有助于在235个程序中的117个程序中以11.8倍的加速实现相同的覆盖,同时在50%未受益于该技术的程序中增加15%的最大观察开销和2%的平均开销。单个程序的最大加速是52.3倍。
{"title":"Loop Path Reduction by State Pruning","authors":"Jianxiong Gao, S. Lumetta","doi":"10.1145/3238147.3240731","DOIUrl":"https://doi.org/10.1145/3238147.3240731","url":null,"abstract":"Path explosion has been a problem for symbolic execution for a long time. The key to avoid path explosion is to limit the number of paths generated within loops while maintaining high code coverage. Full symbolic execution creates paths for every possible execution path. Frequently, paths within loops do not contribute to code coverage. Branches within loops may generate new states at every iteration. The path explosion problem created by loops often stops symbolic execution to reach deeper parts of the code. In this paper, we propose a new path exploration method that reduces the number of states needed to achieve high coverage. Our algorithm limits the number of new states created by first prioritizing states, and then pruning the states that do not contribute to code coverage. Our algorithm does not require loop invariant inference/loop summarization, nor does it bound the number of iterations of loop exploration. The proposed algorithm can thus handle a broader set of loops than previous approaches. In fact, our algorithm is orthogonal to loop summarization techniques and search-guide heuristics, so it complements the current methods. We have implemented our algorithm using KLEE and tested with 235 student-generated versions of a classroom assignment. Our results show that our algorithm helps to achieve the same coverage with speedup of 11.8× for 117 out of the 235 programs, while adding 15% max observed and 2% average overhead over the 50% of programs not benefiting from the technique. The maximum speedup for a single program is 52.3×.","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"33 1","pages":"838-843"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"91254765","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}
引用次数: 2
Automatically Testing Implementations of Numerical Abstract Domains 数值抽象域的自动测试实现
Alexandra Bugariu, Valentin Wüstholz, M. Christakis, Peter Müller
Static program analyses are routinely applied as the basis of code optimizations and to detect safety and security issues in software systems. For their results to be reliable, static analyses should be sound (i.e., should not produce false negatives) and precise (i.e., should report a low number of false positives). Even though it is possible to prove properties of the design of a static analysis, ensuring soundness and precision for its implementation is challenging. Complex algorithms and sophisticated optimizations make static analyzers difficult to implement and test. In this paper, we present an automatic technique to test, among other properties, the soundness and precision of abstract domains, the core of all static analyzers based on abstract interpretation. In order to cover a wide range of test data and input states, we construct inputs by applying sequences of abstract-domain operations to representative domain elements, and vary the operations through gray-box fuzzing. We use mathematical properties of abstract domains as test oracles. Our experimental evaluation demonstrates the effectiveness of our approach. We detected several previously unknown soundness and precision errors in widely-used abstract domains. Our experiments also show that our approach is more effective than dynamic symbolic execution and than fuzzing the test inputs directly.
静态程序分析通常用作代码优化的基础,并用于检测软件系统中的安全性和安全性问题。为了使他们的结果可靠,静态分析应该是合理的(即,不应该产生假阴性)和精确的(即,应该报告低数量的假阳性)。尽管可以证明静态分析设计的特性,但确保其实现的可靠性和准确性是具有挑战性的。复杂的算法和复杂的优化使得静态分析器难以实现和测试。在本文中,我们提出了一种自动测试抽象域的可靠性和精度的技术,而抽象域是所有基于抽象解释的静态分析器的核心。为了覆盖广泛的测试数据和输入状态,我们通过对具有代表性的域元素应用抽象域操作序列来构建输入,并通过灰盒模糊来改变操作。我们使用抽象领域的数学属性作为测试预言器。实验结果表明了该方法的有效性。我们在广泛使用的抽象领域中发现了一些以前未知的稳健性和精度错误。我们的实验还表明,我们的方法比动态符号执行和直接模糊测试输入更有效。
{"title":"Automatically Testing Implementations of Numerical Abstract Domains","authors":"Alexandra Bugariu, Valentin Wüstholz, M. Christakis, Peter Müller","doi":"10.1145/3238147.3240464","DOIUrl":"https://doi.org/10.1145/3238147.3240464","url":null,"abstract":"Static program analyses are routinely applied as the basis of code optimizations and to detect safety and security issues in software systems. For their results to be reliable, static analyses should be sound (i.e., should not produce false negatives) and precise (i.e., should report a low number of false positives). Even though it is possible to prove properties of the design of a static analysis, ensuring soundness and precision for its implementation is challenging. Complex algorithms and sophisticated optimizations make static analyzers difficult to implement and test. In this paper, we present an automatic technique to test, among other properties, the soundness and precision of abstract domains, the core of all static analyzers based on abstract interpretation. In order to cover a wide range of test data and input states, we construct inputs by applying sequences of abstract-domain operations to representative domain elements, and vary the operations through gray-box fuzzing. We use mathematical properties of abstract domains as test oracles. Our experimental evaluation demonstrates the effectiveness of our approach. We detected several previously unknown soundness and precision errors in widely-used abstract domains. Our experiments also show that our approach is more effective than dynamic symbolic execution and than fuzzing the test inputs directly.","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"9 1","pages":"768-778"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"72774259","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
Personalized Teammate Recommendation for Crowdsourced Software Developers 面向众包软件开发人员的个性化队友推荐
Luting Ye, Hailong Sun, Xu Wang, Jiaruijue Wang
Most crowdsourced software development platforms adopt contest paradigm to solicit contributions from the community. To attain competitiveness in complex tasks, crowdsourced software developers often choose to work with others collaboratively. However, existing crowdsourcing platforms generally assume independent contributions from developers and do not provide effective support for team formation. Prior studies on team recommendation aim at optimizing task outcomes by recommending the most suitable team for a task instead of finding appropriate collaborators for a specific person. In this work, we are concerned with teammate recommendation for crowdsourcing developers. First, we present the results of an empirical study of Kaggle, which shows that developers' personal teammate preferences are mainly affected by three factors. Second, we give a collaboration willingness model to characterize developers' teammate preferences and formulate the teammate recommendation problem as an optimization problem. Then we design an approximation algorithm to find suitable teammates for a developer. Finally, we have conducted a set of experiments on a Kaggle dataset to evaluate the effectiveness of our approach.
大多数众包软件开发平台都采用竞赛模式来征求社区的贡献。为了在复杂的任务中获得竞争力,众包软件开发人员经常选择与他人合作。然而,现有的众包平台普遍要求开发者独立贡献,不能为团队组建提供有效的支持。之前关于团队推荐的研究旨在通过推荐最合适的团队来优化任务结果,而不是为特定的人寻找合适的合作者。在这项工作中,我们关注众包开发人员的队友推荐。首先,本文给出了Kaggle的实证研究结果,该结果表明,开发者的个人队友偏好主要受三个因素的影响。其次,我们给出了一个协作意愿模型来表征开发人员的队友偏好,并将队友推荐问题表述为一个优化问题。然后,我们设计了一个近似算法来为开发人员找到合适的团队成员。最后,我们在Kaggle数据集上进行了一组实验,以评估我们方法的有效性。
{"title":"Personalized Teammate Recommendation for Crowdsourced Software Developers","authors":"Luting Ye, Hailong Sun, Xu Wang, Jiaruijue Wang","doi":"10.1145/3238147.3240472","DOIUrl":"https://doi.org/10.1145/3238147.3240472","url":null,"abstract":"Most crowdsourced software development platforms adopt contest paradigm to solicit contributions from the community. To attain competitiveness in complex tasks, crowdsourced software developers often choose to work with others collaboratively. However, existing crowdsourcing platforms generally assume independent contributions from developers and do not provide effective support for team formation. Prior studies on team recommendation aim at optimizing task outcomes by recommending the most suitable team for a task instead of finding appropriate collaborators for a specific person. In this work, we are concerned with teammate recommendation for crowdsourcing developers. First, we present the results of an empirical study of Kaggle, which shows that developers' personal teammate preferences are mainly affected by three factors. Second, we give a collaboration willingness model to characterize developers' teammate preferences and formulate the teammate recommendation problem as an optimization problem. Then we design an approximation algorithm to find suitable teammates for a developer. Finally, we have conducted a set of experiments on a Kaggle dataset to evaluate the effectiveness of our approach.","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"60 1","pages":"808-813"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"80865561","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}
引用次数: 17
Achieving Test Automation with Testers without Coding Skills: An Industrial Report 用没有编码技能的测试人员实现测试自动化:一份工业报告
D. Gafurov, Arne Erik Hurum, Martin Markman
We present a process driven test automation solution which enables delegating (part of) automation tasks from test automation engineer (expensive resource) to test analyst (non-developer, less expensive). In our approach, a test automation engineer implements test steps (or actions) which are executed automatically. Such automated test steps represent user actions in the system under test and specified by a natural language which is understandable by a non-technical person. Then, a test analyst with a domain knowledge organizes automated steps combined with test input to create an automated test case. It should be emphasized that the test analyst does not need to possess programming skills to create, modify or execute automated test cases. We refine benchmark test automation architecture to be better suitable for an effective separation and sharing of responsibilities between the test automation engineer (with coding skills) and test analyst (with a domain knowledge). In addition, we propose a metric to empirically estimate cooperation between test automation engineer and test analyst's works. The proposed automation solution has been defined based on our experience in the development and maintenance of Helsenorge, the national electronic health services in Norway which has had over one million of visits per month past year, and we still use it to automate the execution of regression tests.
我们提出了一个过程驱动的测试自动化解决方案,它可以将自动化任务(一部分)从测试自动化工程师(昂贵的资源)委派给测试分析师(非开发人员,较便宜)。在我们的方法中,测试自动化工程师实现自动执行的测试步骤(或操作)。这种自动化的测试步骤表示被测系统中的用户操作,并由非技术人员可以理解的自然语言指定。然后,具有领域知识的测试分析人员组织与测试输入相结合的自动化步骤,以创建自动化测试用例。应该强调的是,测试分析人员不需要具备创建、修改或执行自动化测试用例的编程技能。我们精炼基准测试自动化架构,使其更适合于测试自动化工程师(具有编码技能)和测试分析师(具有领域知识)之间的有效分离和责任共享。此外,我们提出了一个度量来经验地评估测试自动化工程师和测试分析人员的工作之间的合作。拟议的自动化解决方案是根据我们在开发和维护Helsenorge方面的经验定义的,Helsenorge是挪威的国家电子医疗服务,去年每月的访问量超过100万,我们仍然使用它来自动化执行回归测试。
{"title":"Achieving Test Automation with Testers without Coding Skills: An Industrial Report","authors":"D. Gafurov, Arne Erik Hurum, Martin Markman","doi":"10.1145/3238147.3240463","DOIUrl":"https://doi.org/10.1145/3238147.3240463","url":null,"abstract":"We present a process driven test automation solution which enables delegating (part of) automation tasks from test automation engineer (expensive resource) to test analyst (non-developer, less expensive). In our approach, a test automation engineer implements test steps (or actions) which are executed automatically. Such automated test steps represent user actions in the system under test and specified by a natural language which is understandable by a non-technical person. Then, a test analyst with a domain knowledge organizes automated steps combined with test input to create an automated test case. It should be emphasized that the test analyst does not need to possess programming skills to create, modify or execute automated test cases. We refine benchmark test automation architecture to be better suitable for an effective separation and sharing of responsibilities between the test automation engineer (with coding skills) and test analyst (with a domain knowledge). In addition, we propose a metric to empirically estimate cooperation between test automation engineer and test analyst's works. The proposed automation solution has been defined based on our experience in the development and maintenance of Helsenorge, the national electronic health services in Norway which has had over one million of visits per month past year, and we still use it to automate the execution of regression tests.","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"51 1","pages":"749-756"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"74058459","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
Automated Requirements Engineering Challenges with Examples from Small Unmanned Aerial Systems (Keynote) 基于小型无人机系统的自动化需求工程挑战(主题演讲)
J. Cleland-Huang
Requirements Engineering includes various activities aimed at discovering, analyzing, validating, evolving, and managing software and systems requirements. Many of these activities are human facing, effort intensive, and sometimes error prone. They could benefit greatly from cutting edge advances in automation. However, the software engineering community has primarily focused on automating other aspects of the development process such as testing, code analytics, and mining software respositories. As a result, advances in software analytics have had superficial impact upon advancing the state of art and practice in the field of requirements engineering. Two primary inhibitors are the lack of publicly available datasets and poorly publicized industry-relevant open requirements analytic challenges. To empower the Automated Software Engineering community to tackle open Requirements Engineering challenges, the talk will describe the rapidly evolving landscape of requirements engineering, clearly articulate open challenges, draw upon examples from an ongoing, agile, safety-critical project in the domain of Unmanned Aerial Vehicles, and introduce Dronology as a new community dataset.
需求工程包括旨在发现、分析、验证、发展和管理软件和系统需求的各种活动。这些活动中的许多都是面向人类的,需要耗费大量精力,有时还容易出错。他们可以从自动化的前沿进步中受益匪浅。然而,软件工程社区主要关注于自动化开发过程的其他方面,如测试、代码分析和挖掘软件仓库。结果,软件分析的进步对需求工程领域的技术和实践的进步产生了表面上的影响。两个主要的阻碍因素是缺乏公开可用的数据集和缺乏公开的行业相关的开放需求分析挑战。为了使自动化软件工程社区能够应对开放的需求工程挑战,该演讲将描述需求工程快速发展的前景,清楚地阐明开放的挑战,从无人驾驶飞行器领域正在进行的、敏捷的、安全关键的项目中吸取例子,并将Dronology作为一个新的社区数据集介绍给大家。
{"title":"Automated Requirements Engineering Challenges with Examples from Small Unmanned Aerial Systems (Keynote)","authors":"J. Cleland-Huang","doi":"10.1145/3238147.3241986","DOIUrl":"https://doi.org/10.1145/3238147.3241986","url":null,"abstract":"Requirements Engineering includes various activities aimed at discovering, analyzing, validating, evolving, and managing software and systems requirements. Many of these activities are human facing, effort intensive, and sometimes error prone. They could benefit greatly from cutting edge advances in automation. However, the software engineering community has primarily focused on automating other aspects of the development process such as testing, code analytics, and mining software respositories. As a result, advances in software analytics have had superficial impact upon advancing the state of art and practice in the field of requirements engineering. Two primary inhibitors are the lack of publicly available datasets and poorly publicized industry-relevant open requirements analytic challenges. To empower the Automated Software Engineering community to tackle open Requirements Engineering challenges, the talk will describe the rapidly evolving landscape of requirements engineering, clearly articulate open challenges, draw upon examples from an ongoing, agile, safety-critical project in the domain of Unmanned Aerial Vehicles, and introduce Dronology as a new community dataset.","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"376 1","pages":"3-3"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"80567936","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}
引用次数: 0
How Many of All Bugs Do We Find? A Study of Static Bug Detectors 我们发现了多少虫子?静态Bug检测器的研究
Andrew Habib, Michael Pradel
Static bug detectors are becoming increasingly popular and are widely used by professional software developers. While most work on bug detectors focuses on whether they find bugs at all, and on how many false positives they report in addition to legitimate warnings, the inverse question is often neglected: How many of all real-world bugs do static bug detectors find? This paper addresses this question by studying the results of applying three widely used static bug detectors to an extended version of the Defects4J dataset that consists of 15 Java projects with 594 known bugs. To decide which of these bugs the tools detect, we use a novel methodology that combines an automatic analysis of warnings and bugs with a manual validation of each candidate of a detected bug. The results of the study show that: (i) static bug detectors find a non-negligible amount of all bugs, (ii) different tools are mostly complementary to each other, and (iii) current bug detectors miss the large majority of the studied bugs. A detailed analysis of bugs missed by the static detectors shows that some bugs could have been found by variants of the existing detectors, while others are domain-specific problems that do not match any existing bug pattern. These findings help potential users of such tools to assess their utility, motivate and outline directions for future work on static bug detection, and provide a basis for future comparisons of static bug detection with other bug finding techniques, such as manual and automated testing.
静态错误检测器正变得越来越流行,并且被专业软件开发人员广泛使用。虽然大多数关于bug检测器的工作都关注于它们是否发现bug,以及除了合法的警告之外,它们报告了多少误报,但相反的问题经常被忽视:静态bug检测器发现了多少真实世界的bug ?本文通过研究将三种广泛使用的静态错误检测器应用于缺陷4j数据集的扩展版本的结果来解决这个问题,该数据集包含15个Java项目和594个已知错误。为了确定工具检测到哪些错误,我们使用了一种新颖的方法,该方法将警告和错误的自动分析与检测到的每个候选错误的手动验证相结合。研究结果表明:(i)静态bug检测器发现了不可忽略的所有bug数量,(ii)不同的工具大多是互补的,以及(iii)当前的bug检测器错过了大部分被研究的bug。对静态检测器遗漏的bug的详细分析表明,一些bug可以被现有检测器的变体发现,而其他一些则是特定于领域的问题,与任何现有的bug模式都不匹配。这些发现有助于这些工具的潜在用户评估它们的效用,激励和概述静态错误检测的未来工作方向,并为静态错误检测与其他错误发现技术(如手动和自动测试)的未来比较提供基础。
{"title":"How Many of All Bugs Do We Find? A Study of Static Bug Detectors","authors":"Andrew Habib, Michael Pradel","doi":"10.1145/3238147.3238213","DOIUrl":"https://doi.org/10.1145/3238147.3238213","url":null,"abstract":"Static bug detectors are becoming increasingly popular and are widely used by professional software developers. While most work on bug detectors focuses on whether they find bugs at all, and on how many false positives they report in addition to legitimate warnings, the inverse question is often neglected: How many of all real-world bugs do static bug detectors find? This paper addresses this question by studying the results of applying three widely used static bug detectors to an extended version of the Defects4J dataset that consists of 15 Java projects with 594 known bugs. To decide which of these bugs the tools detect, we use a novel methodology that combines an automatic analysis of warnings and bugs with a manual validation of each candidate of a detected bug. The results of the study show that: (i) static bug detectors find a non-negligible amount of all bugs, (ii) different tools are mostly complementary to each other, and (iii) current bug detectors miss the large majority of the studied bugs. A detailed analysis of bugs missed by the static detectors shows that some bugs could have been found by variants of the existing detectors, while others are domain-specific problems that do not match any existing bug pattern. These findings help potential users of such tools to assess their utility, motivate and outline directions for future work on static bug detection, and provide a basis for future comparisons of static bug detection with other bug finding techniques, such as manual and automated testing.","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"19 1","pages":"317-328"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"89688289","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}
引用次数: 85
Characterizing and Identifying Misexposed Activities in Android Applications 描述和识别Android应用程序中的错误暴露活动
Jiwei Yan, Xi Deng, Ping Wang, Tianyong Wu, Jun Yan, Jian Zhang
Exported Activity (EA), a kind of activities in Android apps that can be launched by external components, is one of the most important inter-component communication (ICC) mechanisms to realize the interaction and cooperation among multiple apps. Existing works have pointed out that, once exposed, an activity will be vulnerable to malicious ICC attacks, such as permission leakage attack. Unfortunately, it is observed that a considerable number of activities in commercial apps are exposed inadvertently, while few works have studied the necessity and reasonability of such exposure. This work takes the first step to systematically study the exposing behavior of EAs through analyzing 13,873 Android apps. It utilizes the EA associated call relationships extracted from byte-code via data-flow analysis, as well as the launch conditions obtained from the manifest files, to guide the study on the usage and misexposure of EAs. The empirical findings are that the EA mechanism is widely adopted in development and the activities are liable to be misexposed due to the developers' misunderstanding or carelessness. Further study on subsets of apps selected according to different criteria indicates that the misexposed EAs have specific characteristics, which are manually summarized into six typical misuse patterns. As a consequence, ten heuristics are designed to decide whether an activity should be exposed or not and are implemented into an automatic tool called Mist. Experiments on the collected apps show that around one fifth EAs are unnecessarily exposed and there are more than one third EAs whose exposure may not be suggested.
导出活动(export Activity, EA)是Android应用中一种可以由外部组件发起的活动,是实现多个应用之间交互与协作的最重要的组件间通信(ICC)机制之一。已有研究指出,活动一旦暴露,就容易受到恶意的ICC攻击,如权限泄露攻击。遗憾的是,我们观察到相当多的商业应用中的活动是在不经意间被曝光的,而很少有作品研究这种曝光的必要性和合理性。本研究通过分析13873个Android应用程序,系统地研究了ea的暴露行为。它利用通过数据流分析从字节码中提取的EA相关调用关系,以及从清单文件中获得的启动条件,来指导EA的使用和错误暴露的研究。实证结果表明,EA机制在开发中被广泛采用,由于开发人员的误解或疏忽,活动容易被错误暴露。对根据不同标准选择的应用程序子集的进一步研究表明,错误暴露的ea具有特定的特征,这些特征被人工总结为六种典型的滥用模式。因此,设计了10种启发式方法来决定是否应该公开某个活动,并将其实现到一个名为Mist的自动工具中。对收集到的应用程序进行的实验表明,大约五分之一的ea不必要地暴露,超过三分之一的ea可能不建议暴露。
{"title":"Characterizing and Identifying Misexposed Activities in Android Applications","authors":"Jiwei Yan, Xi Deng, Ping Wang, Tianyong Wu, Jun Yan, Jian Zhang","doi":"10.1145/3238147.3238164","DOIUrl":"https://doi.org/10.1145/3238147.3238164","url":null,"abstract":"Exported Activity (EA), a kind of activities in Android apps that can be launched by external components, is one of the most important inter-component communication (ICC) mechanisms to realize the interaction and cooperation among multiple apps. Existing works have pointed out that, once exposed, an activity will be vulnerable to malicious ICC attacks, such as permission leakage attack. Unfortunately, it is observed that a considerable number of activities in commercial apps are exposed inadvertently, while few works have studied the necessity and reasonability of such exposure. This work takes the first step to systematically study the exposing behavior of EAs through analyzing 13,873 Android apps. It utilizes the EA associated call relationships extracted from byte-code via data-flow analysis, as well as the launch conditions obtained from the manifest files, to guide the study on the usage and misexposure of EAs. The empirical findings are that the EA mechanism is widely adopted in development and the activities are liable to be misexposed due to the developers' misunderstanding or carelessness. Further study on subsets of apps selected according to different criteria indicates that the misexposed EAs have specific characteristics, which are manually summarized into six typical misuse patterns. As a consequence, ten heuristics are designed to decide whether an activity should be exposed or not and are implemented into an automatic tool called Mist. Experiments on the collected apps show that around one fifth EAs are unnecessarily exposed and there are more than one third EAs whose exposure may not be suggested.","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"4 1","pages":"691-701"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"89785849","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}
引用次数: 8
期刊
2018 33rd 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学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1