Proceedings Article10.1109/ASE.2011.6100137
TestEra: A tool for testing Java programs using alloy specifications
Shadi Abdul Khalek,Guowei Yang,Lingming Zhang,Darko Marinov,Sarfraz Khurshid +4 more
- 06 Nov 2011
- pp 608-611
39
TL;DR: This tool paper presents an embodiment of TestEra - a framework developed in previous work for specification-based testing of Java programs that uses the method's pre-condition specification to generate test inputs and the post-condition to check correctness of outputs.
read more
Abstract: This tool paper presents an embodiment of TestEra - a framework developed in previous work for specification-based testing of Java programs. To test a Java method, TestEra uses the method's pre-condition specification to generate test inputs and the post-condition to check correctness of outputs. TestEra supports specifications written in Alloy - a first-order, declarative language based on relations - and uses the SAT-based back-end of the Alloy tool-set for systematic generation of test suites. Each test case is a JUnit test method, which performs three key steps: (1) initialization of pre-state, i.e., creation of inputs to the method under test; (2) invocation of the method; and (3) checking the correctness of post-state, i.e., checking the method output. The tool supports visualization of inputs and outputs as object graphs for graphical illustration of method behavior. TestEra is available for download to be used as a library or as an Eclipse plug-in.
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Augusto: exploiting popular functionalities for the generation of semantic GUI tests with Oracles
Leonardo Mariani,Mauro Pezzè,Daniele Zuddas +2 more
- 27 May 2018
TL;DR: Augusto is proposed, a test case generation technique that exploits a built-in knowledge of the semantics associated with popular and well-known functionalities, such as CRUD operations, to automatically generate effective test cases with automated functional oracles.
Evaluating the suitability of state-based formal methods for industrial deployment
TL;DR: The research shows that besides technical grounds (eg, modeling capabilities and supported development phases), formal methods should also be evaluated from social and industrial perspectives and it is found out that it is not possible to generate a matrix that renders the selection of the right formal method an automatic process.
35
Enhancing symbolic execution with built-in term rewriting and constrained lazy initialization
Pietro Braione,Giovanni Denaro,Mauro Pezzè +2 more
- 18 Aug 2013
TL;DR: This paper exploits rewrite rules applied within the symbolic executor, to address simplifications of inverse relationships fostered from either program-specific calculations or the logic of the verification tasks.
33
EvoSpex: An Evolutionary Algorithm for Learning Postconditions
Facundo Molina,Pablo Ponzio,Nazareno Aguirre,Marcelo F. Frias +3 more
- 22 May 2021
TL;DR: In this paper, the authors propose a technique that, given a Java method, automatically produces a specification of the method's current behavior, in the form of postcondition assertions, which is based on generating executions of a method under analysis to obtain valid pre/post state pairs, mutating these pairs to obtain (allegedly) invalid ones, and then using a genetic algorithm to produce an assertion that is satisfied by the valid pre-post pairs, while leaving out the invalid ones.
Generation of test data structures using constraint logic programming
Valerio Senni,Fabio Fioravanti +1 more
- 31 May 2012
TL;DR: This paper uses Constraint Logic Programming (CLP) to systematically develop generators of structurally complex test data and shows that these generators can be much more efficient than those built using ad-hoc filtering-based test generation tools like Korat.
References
•Book
Software Abstractions: Logic, Language, and Analysis
Daniel Jackson
- 01 Jan 2006
TL;DR: This revised edition of Software Abstractions updates the text, examples, and appendixes to be fully compatible with the latest version of Alloy, a language that captures the essence of software abstractions simply and succinctly, using a minimal toolkit of mathematical notions.
Relational analysis of algebraic datatypes
Viktor Kuncak,Daniel Jackson +1 more
- 01 Sep 2005
TL;DR: A technique that enables the use of finite model finding to check the satisfiability of certain formulas whose intended models are infinite to identify a natural syntactic class of formulas in relational logic for which reasoning about infinite structures can be reduced to reasoning about finite structures.
•Dissertation
Generating structurally complex tests from declarative constraints
Sarfraz Khurshid,Daniel Jackson +1 more
- 01 Jan 2004
TL;DR: Experiments on generating several complex structures indicate the feasibility of using off-the-shelf SAT solvers for systematic generation of nonisomorphic structures and the tool uncovered previously unknown errors in several applications including an intentional naming scheme for dynamic networks and a fault-tree analysis system developed for NASA.
30
TestEra: a novel framework for automated testing of Java programs
Darko Marinov,Sarfraz Khurshid +1 more
- 26 Nov 2001
TL;DR: The paper discusses TestEra's analyses of several case studies: methods that manipulate singly linked lists and red-black trees, a naming architecture, and a part of the Alloy Analyzer.
Test generation through programming in UDITA
Milos Gligoric,Tihomir Gvero,Vilas Jagannath,Sarfraz Khurshid,Viktor Kuncak,Darko Marinov +5 more
- 01 May 2010
TL;DR: The approach is implemented and incorporated into the official, publicly available repository of Java PathFinder (JPF), a popular tool for verifying Java programs, and shows that test generation using UDITA is faster and leads to test descriptions that are easier to write than in previous frameworks.