Results 1 - 10
of
10
An Orchestrated Survey on Automated Software Test Case Generation
, 2013
"... Test case generation is among the most labour-intensive tasks in software testing and also one that has a strong impact on the effectiveness and efficiency of software testing. For these reasons, it has also been one of the most active topics in the research on software testing for several decades, ..."
Abstract
-
Cited by 21 (2 self)
- Add to MetaCart
Test case generation is among the most labour-intensive tasks in software testing and also one that has a strong impact on the effectiveness and efficiency of software testing. For these reasons, it has also been one of the most active topics in the research on software testing for several decades, resulting in many different approaches and tools. This paper presents an orchestrated survey of the most prominent techniques for automatic generation of software test cases, reviewed in self-standing sections. The techniques presented include: (a) structural testing using symbolic execution, (b) model-based testing, (c) combinatorial testing, (d) random testing and its variant of adaptive random testing, and (e) search-based testing. Each section is contributed by world-renowned active researchers on the technique, and briefly covers the basic ideas underlying the technique, the current state of art, a discussion of the open research problems, and a perspective of the future development in the approach. As a whole, the paper aims at giving an introductory, up-to-date and (relatively) short overview of research in automatic test case generation, while ensuring comprehensiveness and authoritativeness.
Data-Driven Equivalence Checking
"... We present a data driven algorithm for equivalence checking of two loops. The algorithm infers simulation relations using data from test runs. Once a candidate simulation relation has been obtained, off-the-shelf SMT solvers are used to check whether the simulation relation actually holds. The algor ..."
Abstract
-
Cited by 6 (3 self)
- Add to MetaCart
(Show Context)
We present a data driven algorithm for equivalence checking of two loops. The algorithm infers simulation relations using data from test runs. Once a candidate simulation relation has been obtained, off-the-shelf SMT solvers are used to check whether the simulation relation actually holds. The algorithm is sound: insufficient data will cause the proof to fail. We demonstrate a prototype implementation, called DDEC, of our algorithm, which is the first sound equivalence checker for loops written in x86 assembly. 1.
Calibrating Research in Program Synthesis Using 72,000 Hours of Programmer Time
"... After the initial enthusiasm of the ’70s and ’80s abated, the topic of program synthesis is now being researched with renewed inter-est. Recent advances can be explained in large part by significant strides made in automated theorem proving technologies, partic-ularly in the development of satisfiab ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
(Show Context)
After the initial enthusiasm of the ’70s and ’80s abated, the topic of program synthesis is now being researched with renewed inter-est. Recent advances can be explained in large part by significant strides made in automated theorem proving technologies, partic-ularly in the development of satisfiability solvers. In an effort to understand the scalability of program synthesis, we ran a three-day programming contest featuring thousands of expert programmers. The results of the contest were astounding: the winning teams pro-duced program synthesizers that scaled several orders of magnitude beyond the current state of the art in the research literature. In one sense, this is a “reality check ” for program synthesis researchers. In another, this is cause for great optimism—program synthesis has the potential to scale well beyond what we thought was possible, if only we are willing to fine tune and employ strategies that were previously thought infeasible. A note from the authors: The first six authors are all members of “Unagi—The Synthesis”, the team that won the ICFP program-ming contest 2013—we refer to them collectively as “Unagi”. The last two authors organized the contest and prepared this report, based, in part, on communications with Unagi.
Measurement-based modeling of the cache replacement policy
- in 19th IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS
, 2013
"... Abstract—Modern microarchitectures employ memory hier-archies involving one or more levels of cache memory to hide the large latency gap between the processor and main memory. Cycle-accurate simulators, self-optimizing software systems, and platform-aware compilers need accurate models of the memory ..."
Abstract
-
Cited by 4 (1 self)
- Add to MetaCart
(Show Context)
Abstract—Modern microarchitectures employ memory hier-archies involving one or more levels of cache memory to hide the large latency gap between the processor and main memory. Cycle-accurate simulators, self-optimizing software systems, and platform-aware compilers need accurate models of the memory hierarchy to produce useful results. Similarly, worst-case execu-tion time analyzers require faithful models, both for soundness and precision. Unfortunately, sufficiently precise documentation of the logical organization of the memory hierarchy is seldom available publicly. In this paper, we propose an algorithm to automatically model the cache replacement policy by measurements on the actual hardware. We have implemented and applied this algorithm to various popular microarchitectures, uncovering a previously undocumented cache replacement policy in the Intel Atom D525. I.
Combining Model Checking and Testing
"... Abstract Model checking and testing have a lot in common. Over the last two decades, significant progress has been made on how to broaden the scope of model checking from finite-state abstractions to actual software implementations. One way to do this consists of adapting model checking into a form ..."
Abstract
- Add to MetaCart
(Show Context)
Abstract Model checking and testing have a lot in common. Over the last two decades, significant progress has been made on how to broaden the scope of model checking from finite-state abstractions to actual software implementations. One way to do this consists of adapting model checking into a form of systematic testing that is applicable to industrial-size software. This chapter presents an overview of this strand of software model checking.
Research Statement
"... I am broadly interested in the applications of programming language theory, logic and formal methods to various real-world problems pertaining to web security, system security and verification. My research employs a two-pronged approach: (i) mathematically modeling real-world systems in order to rig ..."
Abstract
- Add to MetaCart
(Show Context)
I am broadly interested in the applications of programming language theory, logic and formal methods to various real-world problems pertaining to web security, system security and verification. My research employs a two-pronged approach: (i) mathematically modeling real-world systems in order to rigorously formulate properties of interest in them, and (ii) developing analysis techniques for proving and disproving these properties. For instance, in [7], in order to verify that a JavaScript API confines security-critical resources, I rigorously formulated the confinement problem as a points-to analysis problem and then solved it by adapting off-theshelf program analysis techniques. For many problems where classical techniques are insufficient, I have also developed new principled techniques. For instance, in order to verify safety properties of polynomial continuous dynamical systems, I developed a novel provably sound and complete deductive verification rule, as all existing rules were either unsound or incomplete. 1 Research Accomplishments Over the last four years, I have worked on applying programming language techniques for improving the security of JavaScript web applications (thesis research), developing deductive verification techniques for hybrid and continuous dynamical systems, and developing constraint-solving techniques for synthesizing symbolic instruction encodings for processor instruction sets. What follows is a brief summary of my research in these areas.
Gauging Research in Program Synthesis with a Massive Open Online Contest
"... Program synthesis from input/output examples has received much attention in the recent literature. Its success can be explained in large part by significant strides made in automated theorem prov-ing technologies, particularly in the development of satisfiability solvers. In an effort to understand ..."
Abstract
- Add to MetaCart
(Show Context)
Program synthesis from input/output examples has received much attention in the recent literature. Its success can be explained in large part by significant strides made in automated theorem prov-ing technologies, particularly in the development of satisfiability solvers. In an effort to understand the scalability of this style of program synthesis, we ran a three-day programming contest fea-turing thousands of expert programmers. The results of the contest were astounding: the winning teams produced program synthesiz-ers that exceeded the performance of synthesis techniques reported in several recent research papers. In one sense, this is a “reality check ” for program synthesis researchers. In another, this is cause for great optimism—program synthesis from examples has the po-tential to scale well beyond what we thought was possible, if only we are willing to fine tune and employ strategies that were previ-ously thought infeasible. A note from the authors: The first six authors are all members of “Unagi—The Synthesis”, the team that won the ICFP program-ming contest 2013. When describing their role in the contest, we refer to them collectively as “Unagi”. The last two authors orga-nized the contest and are referred to using the first-person plural. All the authors stand by the content of this report. 1.
unknown title
"... In recent years, many program analysis tools have been proposed, with several promising results, e.g., using abstract interpretation [4] or symbolic execution [9] to find bugs in software systems [2, 3]. Despite a diversity of techniques on which those tools rely, almost ..."
Abstract
- Add to MetaCart
(Show Context)
In recent years, many program analysis tools have been proposed, with several promising results, e.g., using abstract interpretation [4] or symbolic execution [9] to find bugs in software systems [2, 3]. Despite a diversity of techniques on which those tools rely, almost
Optimizing Database-Backed Applications with Query Synthesis
"... Object-relational mapping libraries are a popular way for applica-tions to interact with databases because they provide transparent access to the database using the same language as the application. Unfortunately, using such frameworks often leads to poor perfor-mance, as modularity concerns encoura ..."
Abstract
- Add to MetaCart
Object-relational mapping libraries are a popular way for applica-tions to interact with databases because they provide transparent access to the database using the same language as the application. Unfortunately, using such frameworks often leads to poor perfor-mance, as modularity concerns encourage developers to implement relational operations in application code. Such application code does not take advantage of the optimized relational implementa-tions that database systems provide, such as efficient implementa-tions of joins or push down of selection predicates. In this paper we present QBS, a system that automatically trans-forms fragments of application logic into SQL queries. QBS dif-fers from traditional compiler optimizations as it relies on synthe-sis technology to generate invariants and postconditions for a code fragment. The postconditions and invariants are expressed using a new theory of ordered relations that allows us to reason precisely about both the contents and order of the records produced complex code fragments that compute joins and aggregates. The theory is close in expressiveness to SQL, so the synthesized postconditions can be readily translated to SQL queries. Using 75 code fragments automatically extracted from over 120k lines of open-source code written using the Java Hibernate ORM, we demonstrate that our approach can convert a variety of imperative constructs into rela-tional specifications and significantly improve application perfor-mance asymptotically by orders of magnitude.