Eiffel: the language
Software testing based on formal specifications: a theory and a tool
Software Engineering Journal
Specification and testing of abstract data types
Computer Languages
Test template framework: a specification-based testing case study
ISSTA '93 Proceedings of the 1993 ACM SIGSOFT international symposium on Software testing and analysis
ADL—an interface definition language for specifying and testing software
IDL '94 Proceedings of the workshop on Interface definition languages
Generating a test oracle from program documentation: work in progress
ISSTA '94 Proceedings of the 1994 ACM SIGSOFT international symposium on Software testing and analysis
TAOS: Testing with Analysis and Oracle Support
ISSTA '94 Proceedings of the 1994 ACM SIGSOFT international symposium on Software testing and analysis
A Practical Approach to Programming With Assertions
IEEE Transactions on Software Engineering
Structural specification-based testing with ADL
ISSTA '96 Proceedings of the 1996 ACM SIGSOFT international symposium on Software testing and analysis
Issues in the full scale use of formal methods for automated testing
ISSTA '96 Proceedings of the 1996 ACM SIGSOFT international symposium on Software testing and analysis
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Automated regression test generation
Proceedings of the 1998 ACM SIGSOFT international symposium on Software testing and analysis
Extreme programming explained: embrace change
Extreme programming explained: embrace change
Computer
IEEE Transactions on Software Engineering
A Logic for the Java Modeling Language JML
FASE '01 Proceedings of the 4th International Conference on Fundamental Approaches to Software Engineering
jContractor: A Reflective Java Library to Support Design by Contract
Reflection '99 Proceedings of the Second International Conference on Meta-Level Architectures and Reflection
Enhancing the Pre- and Postcondition Technique for More Expressive Specifications
FM '99 Proceedings of the Wold Congress on Formal Methods in the Development of Computing Systems-Volume II
iContract - The Java(tm) Design by Contract(tm) Tool
TOOLS '98 Proceedings of the Technology of Object-Oriented Languages and Systems
Contracts: From Analysis to C++ Implementation
TOOLS '99 Proceedings of the Technology of Object-Oriented Languages and Systems
Simple Support for Design by Contract in C++
TOOLS '01 Proceedings of the 39th International Conference and Exhibition on Technology of Object-Oriented Languages and Systems (TOOLS39)
The .NET Contract Wizard: Adding Design by Contract to Languages Other than Eiffel
TOOLS '01 Proceedings of the 39th International Conference and Exhibition on Technology of Object-Oriented Languages and Systems (TOOLS39)
Adding Contracts to Java with Handshake
Adding Contracts to Java with Handshake
Automatic Software Test Drivers
Computer
Testing Programs with the Aid of a Compiler
IEEE Transactions on Software Engineering
Tool-Assisted Specification and Verification of the JavaCard Platform
AMAST '02 Proceedings of the 9th International Conference on Algebraic Methodology and Software Technology
A Web user interface for an interactive software repository
AUIC '04 Proceedings of the fifth conference on Australasian user interface - Volume 28
TestEra: Specification-Based Testing of Java Programs Using SAT
Automated Software Engineering
Experiences evaluating the effectiveness of JML-JUnit testing
ACM SIGSOFT Software Engineering Notes
Rostra: A Framework for Detecting Redundant Object-Oriented Unit Tests
Proceedings of the 19th IEEE international conference on Automated software engineering
Contract-Checking Wrappers for C++ Classes
IEEE Transactions on Software Engineering
JCrasher: an automatic robustness tester for Java
Software—Practice & Experience
How the design of JML accommodates both runtime assertion checking and formal verification
Science of Computer Programming - Formal methods for components and objects pragmatic aspects and applications
Journal of Software Maintenance and Evolution: Research and Practice
A contextual interpretation of undefinedness for runtime assertion checking
Proceedings of the sixth international symposium on Automated analysis-driven debugging
Preliminary design of JML: a behavioral interface specification language for java
ACM SIGSOFT Software Engineering Notes
DSD-Crasher: a hybrid analysis tool for bug finding
Proceedings of the 2006 international symposium on Software testing and analysis
Carving differential unit test cases from system test cases
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
Designing and comparing automated test oracles for GUI-based software applications
ACM Transactions on Software Engineering and Methodology (TOSEM)
Formal techniques in a remote voting system
ACM SIGSOFT Software Engineering Notes
Design by Contract to Improve Software Vigilance
IEEE Transactions on Software Engineering
An improved component model for component based software engineering
ACM SIGSOFT Software Engineering Notes
Directed random reduction of combinatorial test suites
Proceedings of the 2nd international workshop on Random testing: co-located with the 22nd IEEE/ACM International Conference on Automated Software Engineering (ASE 2007)
Automated Software Engineering
Verification-centric realization of electronic vote counting
EVT'07 Proceedings of the USENIX Workshop on Accurate Electronic Voting Technology
Automatic Testing of Object-Oriented Software
SOFSEM '07 Proceedings of the 33rd conference on Current Trends in Theory and Practice of Computer Science
JML Runtime Assertion Checking: Improved Error Reporting and Efficiency Using Strong Validity
FM '08 Proceedings of the 15th international symposium on Formal Methods
Using Dynamic Symbolic Execution to Improve Deductive Verification
SPIN '08 Proceedings of the 15th international workshop on Model Checking Software
Bounded Verification of Voting Software
VSTTE '08 Proceedings of the 2nd international conference on Verified Software: Theories, Tools, Experiments
Using modern mathematics as an FOSD modeling language
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
On automated prepared statement generation to remove SQL injection vulnerabilities
Information and Software Technology
FASE '09 Proceedings of the 12th International Conference on Fundamental Approaches to Software Engineering: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Proceedings of the 2008 conference on Knowledge-Based Software Engineering: Proceedings of the Eighth Joint Conference on Knowledge-Based Software Engineering
Applying Evolutionary Techniques to Debug Functional Programs
IWANN '09 Proceedings of the 10th International Work-Conference on Artificial Neural Networks: Part I: Bio-Inspired Systems: Computational and Ambient Intelligence
Traditional assignment considered harmful
Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
Increasing Test Granularity by Aggregating Unit Tests
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
Teaching Program Specification and Verification Using JML and ESC/Java2
TFM '09 Proceedings of the 2nd International Conference on Teaching Formal Methods
Integrated and Tool-Supported Teaching of Testing, Debugging, and Verification
TFM '09 Proceedings of the 2nd International Conference on Teaching Formal Methods
Towards model-driven unit testing
MoDELS'06 Proceedings of the 2006 international conference on Models in software engineering
Generating unit tests from formal proofs
TAP'07 Proceedings of the 1st international conference on Tests and proofs
The KOA remote voting system: a summary of work to date
TGC'06 Proceedings of the 2nd international conference on Trustworthy global computing
Functional testing in the focal environment
TAP'08 Proceedings of the 2nd international conference on Tests and proofs
Unit testing for wireless sensor networks
Proceedings of the 2010 ICSE Workshop on Software Engineering for Sensor Network Applications
Assertion-based test oracles for home automation systems
Proceedings of the 7th International Workshop on Model-Based Methodologies for Pervasive and Embedded Software
The future of library specification
Proceedings of the FSE/SDP workshop on Future of software engineering research
Reusing a JML Specification Dedicated to Verification for Testing, and Vice-Versa: Case Studies
Journal of Automated Reasoning
FoVeOOS'10 Proceedings of the 2010 international conference on Formal verification of object-oriented software
An experimental assessment of module documentation-based testing
Information and Software Technology
Reducing the number of unit tests with design by contract
Proceedings of the 12th International Conference on Computer Systems and Technologies
Formal object-oriented development of a voting system test oracle
Innovations in Systems and Software Engineering
Praspel: a specification language for contract-based testing in PHP
ICTSS'11 Proceedings of the 23rd IFIP WG 6.1 international conference on Testing software and systems
LaTe, a non-fully deterministic testing language
TestCom'06 Proceedings of the 18th IFIP TC6/WG6.1 international conference on Testing of Communicating Systems
Jartege: a tool for random generation of unit tests for java classes
QoSA'05 Proceedings of the First international conference on Quality of Software Architectures and Software Quality, and Proceedings of the Second International conference on Software Quality
JML’s rich, inherited specifications for behavioral subtypes
ICFEM'06 Proceedings of the 8th international conference on Formal Methods and Software Engineering
Formal methods for smartcard security
Foundations of Security Analysis and Design III
Symstra: a framework for generating object-oriented unit tests using symbolic execution
TACAS'05 Proceedings of the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Repairing structurally complex data
SPIN'05 Proceedings of the 12th international conference on Model Checking Software
Limes: an aspect-oriented constraint checking language
ECMDA-FA'06 Proceedings of the Second European conference on Model Driven Architecture: foundations and Applications
Augmenting automatically generated unit-test suites with regression oracle checking
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Model-Based filtering of combinatorial test suites
FASE'12 Proceedings of the 15th international conference on Fundamental Approaches to Software Engineering
Improving the effectiveness of spectra-based fault localization using specifications
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Testing library specifications by verifying conformance tests
TAP'12 Proceedings of the 6th international conference on Tests and Proofs
Efficiently generating structurally complex inputs with thousands of objects
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
BETA: a b based testing approach
SBMF'12 Proceedings of the 15th Brazilian conference on Formal Methods: foundations and applications
Automatic generation of test models and properties from UML models with OCL constraints
Proceedings of the 12th Workshop on OCL and Textual Modelling
What good are strong specifications?
Proceedings of the 2013 International Conference on Software Engineering
A test suite for safety-critical Java using JML
Proceedings of the 11th International Workshop on Java Technologies for Real-time and Embedded Systems
Hi-index | 0.00 |
Writing unit test code is labor-intensive, hence it is often not done as an integral part of programming. However, unit testing is a practical approach to increasing the correctness and quality of software; for example, the Extreme Programming approach relies on frequent unit testing.In this paper we present a new approach that makes writing unit tests easier. It uses a formal specification language's runtime assertion checker to decide whether methods are working correctly, thus automating the writing of unit test oracles. These oracles can be easily combined with hand-written test data. Instead of writing testing code, the programmer writes formal specifications (e.g., pre- and postconditions). This makes the programmer's task easier, because specifications are more concise and abstract than the equivalent test code, and hence more readable and maintainable. Furthermore, by using specifications in testing, specification errors are quickly discovered, so the specifications are more likely to provide useful documentation and inputs to other tools. We have implemented this idea using the Java Modeling Language (JML) and the JUnit testing framework, but the approach could be easily implemented with other combinations of formal specification languages and unit test tools.