首页 > 最新文献

Proceedings of the 5th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering最新文献

英文 中文
Invited Talk: JML framed! 邀请演讲:JML框架!
Gary T. Leavens
This talk will try to frame JML in two senses. The first is the sense of placing JML in the context of other specification languages and tools. This context will be provided by giving a brief introduction to JML, with small examples. The different tools that work with JML also help provide context for the language design in a different way. Another aspect of this context is provided by comparing JML with other design by contract languages, such as Eiffel.The second sense of framing in JML is the more technical one of frame axioms, also known as "modifies clauses". Such frame axioms are critical for reasoning, and are difficult to check at runtime; hence static analysis is a crucial need. We will discuss the semantics of JML's frame axioms, including datagroups, both in a naive sense and with the experimental Universe type system. Both problems in the semantics and checking, as well as some recent work will be presented. Note that some of the recent work on frame axioms in JML, especially extensions with the Universe type system, is joint work with Peter Müller (of ETH Zürich) and Arnd Poetzsch-Heffter of (U. Kaiserslautern). At Iowa State, the development of JML was partially funded by the (US) National Science Foundation under grants CCR-9503168, CCR-9803843, CCR-0097907, and CCR-0113181.
本演讲将尝试从两种意义上构建JML。第一种感觉是将JML置于其他规范语言和工具的上下文中。我们将通过对JML的简要介绍和一些小示例来提供这个上下文。使用JML的不同工具还有助于以不同的方式为语言设计提供上下文。通过比较JML与其他契约式语言(如Eiffel)的设计,提供了该上下文的另一个方面。在JML中,第二种意义上的框架是一种更为技术性的框架公理,也称为“修饰子句”。这样的框架公理对于推理是至关重要的,并且很难在运行时检查;因此,静态分析是一个至关重要的需求。我们将讨论JML框架公理的语义,包括原始意义上的数据组和实验性的Universe类型系统。本文将介绍语义和检查方面的问题,以及最近的一些工作。请注意,JML中最近关于框架公理的一些工作,特别是与宇宙类型系统的扩展,是与ETH z的Peter m ller和U. Kaiserslautern的Arnd Poetzsch-Heffter共同完成的。在爱荷华州立大学,JML的发展部分由(美国)国家科学基金会资助CCR-9503168, CCR-9803843, CCR-0097907和CCR-0113181。
{"title":"Invited Talk: JML framed!","authors":"Gary T. Leavens","doi":"10.1145/996821.996822","DOIUrl":"https://doi.org/10.1145/996821.996822","url":null,"abstract":"This talk will try to frame JML in two senses. The first is the sense of placing JML in the context of other specification languages and tools. This context will be provided by giving a brief introduction to JML, with small examples. The different tools that work with JML also help provide context for the language design in a different way. Another aspect of this context is provided by comparing JML with other design by contract languages, such as Eiffel.The second sense of framing in JML is the more technical one of frame axioms, also known as \"modifies clauses\". Such frame axioms are critical for reasoning, and are difficult to check at runtime; hence static analysis is a crucial need. We will discuss the semantics of JML's frame axioms, including datagroups, both in a naive sense and with the experimental Universe type system. Both problems in the semantics and checking, as well as some recent work will be presented. Note that some of the recent work on frame axioms in JML, especially extensions with the Universe type system, is joint work with Peter Müller (of ETH Zürich) and Arnd Poetzsch-Heffter of (U. Kaiserslautern). At Iowa State, the development of JML was partially funded by the (US) National Science Foundation under grants CCR-9503168, CCR-9803843, CCR-0097907, and CCR-0113181.","PeriodicalId":318802,"journal":{"name":"Proceedings of the 5th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering","volume":"36 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124425098","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
Validation of assembler programs for DSPs: a static analyzer dsp汇编程序的验证:一个静态分析器
M. Martel
Digital Signal Processors are widely used in critical embedded systems to pilot low-level, often critical functionalities. We describe a static analyzer based on abstract interpretation and designed to validate industrial assembler programs for a DSP. The validation consists of guaranteeing the absence of runtime errors such as incorrect memory accesses and of tracking the sources of inaccuracies introduced by floating-point computations. Our first contribution is a new static analysis for relocatable assembler programs able to cope with dynamically computed branching addresses. Our second contribution is the analyzer itself and its graphical interface which helps the user to understand the numerical inaccuracies.
数字信号处理器广泛应用于关键的嵌入式系统中,以引导低级的、通常是关键的功能。我们描述了一个基于抽象解释的静态分析器,并设计用于验证DSP的工业汇编程序。验证包括保证没有运行时错误,例如不正确的内存访问,以及跟踪浮点计算引入的不准确性的来源。我们的第一个贡献是对能够处理动态计算分支地址的可重定位汇编程序的新的静态分析。我们的第二个贡献是分析仪本身及其图形界面,它可以帮助用户理解数值的不准确性。
{"title":"Validation of assembler programs for DSPs: a static analyzer","authors":"M. Martel","doi":"10.1145/996821.996827","DOIUrl":"https://doi.org/10.1145/996821.996827","url":null,"abstract":"Digital Signal Processors are widely used in critical embedded systems to pilot low-level, often critical functionalities. We describe a static analyzer based on abstract interpretation and designed to validate industrial assembler programs for a DSP. The validation consists of guaranteeing the absence of runtime errors such as incorrect memory accesses and of tracking the sources of inaccuracies introduced by floating-point computations. Our first contribution is a new static analysis for relocatable assembler programs able to cope with dynamically computed branching addresses. Our second contribution is the analyzer itself and its graphical interface which helps the user to understand the numerical inaccuracies.","PeriodicalId":318802,"journal":{"name":"Proceedings of the 5th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129977540","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}
引用次数: 9
Elided conditionals 省略条件
Manos Renieris, Sébastien Chan-Tin, S. Reiss
Many software testing and automated debugging tools rely on structural coverage techniques. Such tools implicitly assume a relation between individual control-flow choices made in conditional statements during a program run and the outcome of the run. In this paper, we develop the notion of elided choices that, viewed in isolation, have no impact on the outcome of the program. We call the conditionals that make such choices elided conditionals. We develop an experimental framework for discovering elided conditionals. From looking at three programs of varying complexity under this framework, we discovered that elided conditionals do occur, sometimes with alarming frequency. We discuss the impact of elided conditionals on various forms of dynamic analysis and suggest future work that would extend elision to general expressions.
许多软件测试和自动调试工具依赖于结构覆盖技术。这些工具隐式地假定在程序运行期间条件语句中所做的各个控制流选择与运行结果之间存在关系。在这篇论文中,我们发展了被忽略的选择的概念,孤立地看,对程序的结果没有影响。我们称做出这种选择的条件句为省略条件句。我们开发了一个发现被省略条件的实验框架。通过在这个框架下观察三个复杂程度不同的程序,我们发现被忽略的条件确实会发生,有时频率惊人。我们讨论了省略条件对各种形式的动态分析的影响,并建议将省略扩展到一般表达式的未来工作。
{"title":"Elided conditionals","authors":"Manos Renieris, Sébastien Chan-Tin, S. Reiss","doi":"10.1145/996821.996839","DOIUrl":"https://doi.org/10.1145/996821.996839","url":null,"abstract":"Many software testing and automated debugging tools rely on structural coverage techniques. Such tools implicitly assume a relation between individual control-flow choices made in conditional statements during a program run and the outcome of the run. In this paper, we develop the notion of elided choices that, viewed in isolation, have no impact on the outcome of the program. We call the conditionals that make such choices elided conditionals. We develop an experimental framework for discovering elided conditionals. From looking at three programs of varying complexity under this framework, we discovered that elided conditionals do occur, sometimes with alarming frequency. We discuss the impact of elided conditionals on various forms of dynamic analysis and suggest future work that would extend elision to general expressions.","PeriodicalId":318802,"journal":{"name":"Proceedings of the 5th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering","volume":"725 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115128787","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
Invited Talk Static and dynamic analysis: synergy and duality 静态与动态分析:协同与双重性
Michael D. Ernst
This talk presents two sets of observations relating static and dynamic analysis. The first concerns synergies between static and dynamic analysis. Wherever one is utilized, the other may also be applied, often in a complementary way, and existing analyses should inspire different approaches to the same problem. Furthermore, existing static and dynamic analyses often have very similar structure and technical approaches. The second observation is that some static and dynamic approaches are similar in that each focuses on, and generalizes from, a subset of all possible executions.The talk concludes with a challenge to researchers to develop new analyses that complement existing ones. More importantly, researchers need to erase the boundaries between static and dynamic analysis and create unified analyses that can operate in either mode, or in a mode that blends the strengths of both approaches.
这次演讲介绍了两组关于静态和动态分析的观察结果。第一个是关于静态和动态分析之间的协同作用。只要利用一种方法,另一种方法也可以加以应用,而且往往是相辅相成的,现有的分析应激发对同一问题采取不同的方法。此外,现有的静态和动态分析通常具有非常相似的结构和技术方法。第二个观察结果是,一些静态方法和动态方法是相似的,因为它们都关注所有可能执行的子集,并从中进行推广。演讲最后向研究人员提出了一个挑战,要求他们开发新的分析来补充现有的分析。更重要的是,研究人员需要消除静态和动态分析之间的界限,并创建可以在任何一种模式下运行的统一分析,或者在混合两种方法优势的模式下运行。
{"title":"Invited Talk Static and dynamic analysis: synergy and duality","authors":"Michael D. Ernst","doi":"10.1145/996821.996823","DOIUrl":"https://doi.org/10.1145/996821.996823","url":null,"abstract":"This talk presents two sets of observations relating static and dynamic analysis. The first concerns synergies between static and dynamic analysis. Wherever one is utilized, the other may also be applied, often in a complementary way, and existing analyses should inspire different approaches to the same problem. Furthermore, existing static and dynamic analyses often have very similar structure and technical approaches. The second observation is that some static and dynamic approaches are similar in that each focuses on, and generalizes from, a subset of all possible executions.The talk concludes with a challenge to researchers to develop new analyses that complement existing ones. More importantly, researchers need to erase the boundaries between static and dynamic analysis and create unified analyses that can operate in either mode, or in a mode that blends the strengths of both approaches.","PeriodicalId":318802,"journal":{"name":"Proceedings of the 5th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering","volume":"17 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133719756","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}
引用次数: 37
Invited Talk: "Model checking" software with VeriSoft 特邀演讲:VeriSoft“模型检查”软件
Patrice Godefroid
VeriSoft is a tool for systematically testing concurrent reactive software systems. It explores the state space (dynamic behavior) of a system by driving and observing the execution of its components using a run-time scheduler, and by reinitializing their execution. This systematic state-space exploration is performed using model-checking algorithms and makes heavy use of so-called "partial-order reduction" techniques. By default, VeriSoft searches state spaces for violations of user-specified assertions and coordination problems (deadlocks, crashes, etc.) between concurrent components. With its first prototype developed in 1996 (published at POPL'97), VeriSoft is the first software model checker for general-purpose programming languages like C and C++.Since made publicly available in 1999, VeriSoft has been licensed to hundreds of users in industry and academia. Inside Lucent Technologies, it was applied successfully to analyze several software products in various business units and application domains (switch maintenance, call processing, network management, etc.). Because VeriSoft can automatically generate, execute and evaluate thousands of tests per minute, it can quickly reveal behaviors that are virtually impossible to detect using conventional testing techniques.In this talk, I will present VeriSoft, what it does, how it works, industrial applications, strengths and limitations, technology-transfer issues, and discuss the current status of this project as well as related work and future work.
VeriSoft是一个用于系统地测试并发响应式软件系统的工具。它通过使用运行时调度器驱动和观察其组件的执行,并通过重新初始化它们的执行,来探索系统的状态空间(动态行为)。这种系统的状态空间探索使用模型检查算法执行,并大量使用所谓的“部分阶约简”技术。默认情况下,VeriSoft在状态空间中搜索违反用户指定的断言和并发组件之间的协调问题(死锁、崩溃等)。随着1996年开发的第一个原型(在POPL'97上发布),VeriSoft是第一个通用编程语言(如C和c++)的软件模型检查器。自1999年公开发布以来,VeriSoft已被授权给工业界和学术界的数百名用户。在朗讯科技内部,它被成功地应用于分析不同业务部门和应用领域(交换机维护、呼叫处理、网络管理等)的几个软件产品。由于VeriSoft每分钟可以自动生成、执行和评估数千个测试,因此它可以快速揭示使用传统测试技术几乎不可能检测到的行为。在这次演讲中,我将介绍VeriSoft,它是做什么的,它是如何工作的,工业应用,优势和局限性,技术转移问题,并讨论这个项目的现状以及相关工作和未来的工作。
{"title":"Invited Talk: \"Model checking\" software with VeriSoft","authors":"Patrice Godefroid","doi":"10.1145/996821.996824","DOIUrl":"https://doi.org/10.1145/996821.996824","url":null,"abstract":"VeriSoft is a tool for systematically testing concurrent reactive software systems. It explores the state space (dynamic behavior) of a system by driving and observing the execution of its components using a run-time scheduler, and by reinitializing their execution. This systematic state-space exploration is performed using model-checking algorithms and makes heavy use of so-called \"partial-order reduction\" techniques. By default, VeriSoft searches state spaces for violations of user-specified assertions and coordination problems (deadlocks, crashes, etc.) between concurrent components. With its first prototype developed in 1996 (published at POPL'97), VeriSoft is the first software model checker for general-purpose programming languages like C and C++.Since made publicly available in 1999, VeriSoft has been licensed to hundreds of users in industry and academia. Inside Lucent Technologies, it was applied successfully to analyze several software products in various business units and application domains (switch maintenance, call processing, network management, etc.). Because VeriSoft can automatically generate, execute and evaluate thousands of tests per minute, it can quickly reveal behaviors that are virtually impossible to detect using conventional testing techniques.In this talk, I will present VeriSoft, what it does, how it works, industrial applications, strengths and limitations, technology-transfer issues, and discuss the current status of this project as well as related work and future work.","PeriodicalId":318802,"journal":{"name":"Proceedings of the 5th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering","volume":"322 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122784839","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
Importance of heap specialization in pointer analysis 堆专门化在指针分析中的重要性
E. Nystrom, Hong-Seok Kim, Wen-mei W. Hwu
Specialization of heap objects is critical for pointer analysis to effectively analyze complex memory activity. This paper discusses heap specialization with respect to call chains. Due to the sheer number of distinct call chains, exhaustive specialization can be cumbersome. On the other hand, insufficient specialization can miss valuable opportunities to prevent spurious data flow, which results in not only reduced accuracy but also increased overhead.In determining whether further specialization will be fruitful, an object's escape information can be exploited. From empirical study, we found that restriction based on escape information is often, but not always, sufficient at prohibiting the explosive nature of specialization.For in-depth case study, four representative benchmarks are selected. For each benchmark, we vary the degree of heap specialization and examine its impact on analysis results and time. To provide better visibility into the impact, we present the points-to set and pointed-to-by set sizes in the form of histograms.
堆对象的专门化是指针分析有效分析复杂内存活动的关键。本文讨论了调用链方面的堆专门化。由于有大量不同的调用链,详尽的专门化可能会很麻烦。另一方面,不充分的专门化可能会错过防止虚假数据流的宝贵机会,这不仅会降低准确性,还会增加开销。在确定进一步专门化是否有效时,可以利用对象的转义信息。从实证研究中我们发现,基于逃逸信息的限制往往(但并不总是)足以阻止专业化的爆炸性。为了进行深入的案例研究,我们选择了四个具有代表性的基准。对于每个基准测试,我们改变堆专门化的程度,并检查其对分析结果和时间的影响。为了更好地了解影响,我们以直方图的形式呈现了指向集和指向集的大小。
{"title":"Importance of heap specialization in pointer analysis","authors":"E. Nystrom, Hong-Seok Kim, Wen-mei W. Hwu","doi":"10.1145/996821.996836","DOIUrl":"https://doi.org/10.1145/996821.996836","url":null,"abstract":"Specialization of heap objects is critical for pointer analysis to effectively analyze complex memory activity. This paper discusses heap specialization with respect to call chains. Due to the sheer number of distinct call chains, exhaustive specialization can be cumbersome. On the other hand, insufficient specialization can miss valuable opportunities to prevent spurious data flow, which results in not only reduced accuracy but also increased overhead.In determining whether further specialization will be fruitful, an object's escape information can be exploited. From empirical study, we found that restriction based on escape information is often, but not always, sufficient at prohibiting the explosive nature of specialization.For in-depth case study, four representative benchmarks are selected. For each benchmark, we vary the degree of heap specialization and examine its impact on analysis results and time. To provide better visibility into the impact, we present the points-to set and pointed-to-by set sizes in the form of histograms.","PeriodicalId":318802,"journal":{"name":"Proceedings of the 5th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering","volume":"337 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130669058","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}
引用次数: 50
An improved slicer for Java 改进的Java切片器
Christian Hammer, G. Snelting
We present an improved slicing algorithm for Java. The best algorithm known so far, first presented in [11], is not always precise if nested objects are used as actual parameters. The new algorithm presented in this paper always generates correct and precise slices, but is more expensive in general.We describe the algorithms and their treatment of objects as parameters. In particular, we present a new, safe criterion for termination of unfolding nested parameter objects. We then compare the two algorithms by providing measurements for a benchmark of Java and JavaCard programs.
提出了一种改进的Java切片算法。目前已知的最好的算法,首先在[11]中提出,如果使用嵌套对象作为实际参数,则并不总是精确的。本文提出的新算法总是能生成正确和精确的切片,但通常成本较高。我们描述了这些算法及其对对象作为参数的处理。特别地,我们提出了一个新的、安全的终止展开嵌套参数对象的准则。然后,我们通过为Java和JavaCard程序的基准测试提供度量来比较这两种算法。
{"title":"An improved slicer for Java","authors":"Christian Hammer, G. Snelting","doi":"10.1145/996821.996830","DOIUrl":"https://doi.org/10.1145/996821.996830","url":null,"abstract":"We present an improved slicing algorithm for Java. The best algorithm known so far, first presented in [11], is not always precise if nested objects are used as actual parameters. The new algorithm presented in this paper always generates correct and precise slices, but is more expensive in general.We describe the algorithms and their treatment of objects as parameters. In particular, we present a new, safe criterion for termination of unfolding nested parameter objects. We then compare the two algorithms by providing measurements for a benchmark of Java and JavaCard programs.","PeriodicalId":318802,"journal":{"name":"Proceedings of the 5th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering","volume":"242 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121787620","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}
引用次数: 59
Mock object creation for test factoring 为测试分解创建模拟对象
David Saff, Michael D. Ernst
Test factoring creates fast, focused unit tests from slow system-wide tests; each new unit test exercises only a subset of the functionality exercised by the system tests. Augmenting a test suite with factored unit tests, and prioritizing the tests, should catch errors earlier in a test run.One way to factor a test is to introduce mock objects. If a test exercises a component A, which is designed to issue queries against or mutate another component B, the implementation of B can be replaced by a mock. The mock has two purposes: it checks that A's calls to B are as expected, and it simulates B's behavior in response. Given a system test for A and B, and a record of A's and B's behavior when the system test is run, we would like to automatically generate unit tests for A in which B is mocked. The factored tests can isolate bugs in A from bugs in B and, if B is slow or expensive, improve test performance or cost.This paper motivates test factoring with an illustrative example, proposes a simple procedure for automatically generating mock objects for factored tests, and gives examples of how the procedure can be extended to produce more robust factored tests.
测试分解从缓慢的系统范围测试中创建快速、集中的单元测试;每个新的单元测试只执行系统测试所执行的功能的一个子集。使用分解单元测试来扩充测试套件,并对测试进行优先级排序,应该可以在测试运行中更早地捕获错误。分解测试的一种方法是引入模拟对象。如果测试执行组件a,而组件a的设计目的是对另一个组件B发出查询或改变其他组件B,则B的实现可以用模拟代替。模拟有两个目的:检查A对B的调用是否符合预期,并模拟B的响应行为。给定a和B的系统测试,以及在系统测试运行时a和B的行为记录,我们想要自动为a生成单元测试,其中B是模拟的。因子测试可以将A中的错误与B中的错误隔离开来,如果B速度慢或成本高,则可以提高测试性能或成本。本文通过一个说明性示例来激励测试分解,提出了一个自动为分解测试生成模拟对象的简单过程,并给出了如何扩展该过程以生成更健壮的分解测试的示例。
{"title":"Mock object creation for test factoring","authors":"David Saff, Michael D. Ernst","doi":"10.1145/996821.996838","DOIUrl":"https://doi.org/10.1145/996821.996838","url":null,"abstract":"Test factoring creates fast, focused unit tests from slow system-wide tests; each new unit test exercises only a subset of the functionality exercised by the system tests. Augmenting a test suite with factored unit tests, and prioritizing the tests, should catch errors earlier in a test run.One way to factor a test is to introduce mock objects. If a test exercises a component A, which is designed to issue queries against or mutate another component B, the implementation of B can be replaced by a mock. The mock has two purposes: it checks that A's calls to B are as expected, and it simulates B's behavior in response. Given a system test for A and B, and a record of A's and B's behavior when the system test is run, we would like to automatically generate unit tests for A in which B is mocked. The factored tests can isolate bugs in A from bugs in B and, if B is slow or expensive, improve test performance or cost.This paper motivates test factoring with an illustrative example, proposes a simple procedure for automatically generating mock objects for factored tests, and gives examples of how the procedure can be extended to produce more robust factored tests.","PeriodicalId":318802,"journal":{"name":"Proceedings of the 5th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering","volume":"54 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131694370","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}
引用次数: 36
Efficient field-sensitive pointer analysis for C 高效的字段敏感指针分析
David J. Pearce, P. Kelly, C. Hankin
The subject of this paper is flow- and context-insensitive pointer analysis. We present a novel approach for precisely modelling struct variables and indirect function calls. Our method emphasises efficiency and simplicity and extends the language of set-constraints. We experimentally evaluate the precision cost trade-off using a benchmark suite of 7 common C programs between 5,000 to 150,000 lines of code. Our results indicate the field-sensitive analysis is more expensive to compute, but yields significantly better precision.
本文的主题是流程和上下文不敏感的指针分析。我们提出了一种精确建模结构变量和间接函数调用的新方法。我们的方法强调效率和简单性,并扩展了集合约束的语言。我们用一个由7个常见C程序组成的基准测试套件,在5000到150000行代码之间,对精度成本进行了实验评估。我们的结果表明,场敏感分析的计算成本更高,但产生的精度明显更好。
{"title":"Efficient field-sensitive pointer analysis for C","authors":"David J. Pearce, P. Kelly, C. Hankin","doi":"10.1145/996821.996835","DOIUrl":"https://doi.org/10.1145/996821.996835","url":null,"abstract":"The subject of this paper is flow- and context-insensitive pointer analysis. We present a novel approach for precisely modelling struct variables and indirect function calls. Our method emphasises efficiency and simplicity and extends the language of set-constraints. We experimentally evaluate the precision cost trade-off using a benchmark suite of 7 common C programs between 5,000 to 150,000 lines of code. Our results indicate the field-sensitive analysis is more expensive to compute, but yields significantly better precision.","PeriodicalId":318802,"journal":{"name":"Proceedings of the 5th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering","volume":"93 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130646012","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}
引用次数: 38
Evaluating the imprecision of static analysis 评估静态分析的不精确性
A. Rountev, S. Kagan, Michael Gibas
This work discusses two non-traditional approaches for evaluating the imprecision of static analysis. The approaches are based on proofs of feasibility or infeasibility that are constructed manually by the experimenters. We also describe our initial experience with these techniques.
这项工作讨论了评估静态分析不精确性的两种非传统方法。这些方法是基于可行性或不可行性的证明,这些证明是由实验者手工构建的。我们还描述了我们使用这些技术的初步经验。
{"title":"Evaluating the imprecision of static analysis","authors":"A. Rountev, S. Kagan, Michael Gibas","doi":"10.1145/996821.996829","DOIUrl":"https://doi.org/10.1145/996821.996829","url":null,"abstract":"This work discusses two non-traditional approaches for evaluating the imprecision of static analysis. The approaches are based on proofs of feasibility or infeasibility that are constructed manually by the experimenters. We also describe our initial experience with these techniques.","PeriodicalId":318802,"journal":{"name":"Proceedings of the 5th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125987948","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
期刊
Proceedings of the 5th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
全部 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