Quilt Glossary

For more Extreme Programming acronyms, see the Xp Glossary . A few of the explanations there are fanciful, though.

word definition
Ant A utility for managing Java builds, probably the most widely used in the world. See ant.apache.org .
bcel The Byte Code Engineering Library is an Apache project, software for manipulating Java at the bytecode level. Bcel is used extensively in Quilt.
bytecode The 'machine language' interpreted by the JVM.
coverage A measure of the extent to which test programs exercise the software under test, usually expressed as a percentage (this being, for example, the number of lines of code that were executed during the test vs the total number of lines of code).
Extreme Programming Or XP . A lightweight programming methodology. For more information see, for example, Ron Jeffries' XProgramming.com Web site.
hit count The number of times a unit of code has been executed.
instrumentation Bytecode, variables, and methods inserted into a Java class to collect information on or modify program behavior. Coverage is usually measured by instrumenting methods with bytecode that collects hit counts.
integration test A test that software modules work together as expected. JUnit was designed specifically for unit testing, but can be used in integration testing, as can Quilt.
JUnit A unit testing program for Java, probably the most widely used. See www.junit.org .
JVM The Java Virtual Machine, a program which executes bytecode . The JVM is a simple stack machine with a limited instruction set.
Maven A Java project management tool integrating many other open-source Java tools. Maven can be used to manage builds, automatically generating and running Ant build.xml files, but is most commonly used for generating project Web sites.
mock objects An object that has the same interface as a production class, but whose functionality is limited to (a) verifying that parameters supplied are correct and (b) faking the normal responses of the object being mocked to the degree necessary to allow it to be substituted for it. In a JUnit testing environment, a mock object will throw an exception when input verification fails.

There is a surprising degree of disagreement about the exact definition of this term. For one set of opinions see www.mockobjects.com
q$$q One of a number of Quilt-reserved names.

public static int[] q$$q is the hit count array generated by Quilt-instrumented classes as run time.

public static int q$$qID is a run-unique ID assigned to a Quilt-instrumented class.

public static int q$$qVer is the Quilt file format, currently 0, construed as 0.0 (16-bit major value, 16-bit minor value).
regression test A test or set of tests that verifies that software still behaves correctly after being changed. Normally, the suite of unit tests and integration tests developed with the software are accumulated and used for regression testing in code maintainance or further software development.
spy A class or method that mimics an object under test, but whose only function is to report on values observed. So a spy is a somewhat elaborated stub or degenerate mock object.
stub A class or method that has the same interface as the class/method under test, but in effect no functionality at all. A class consisting of empty methods, or a method that does nothing if void or otherwise just returns a fixed value. A stub might be considered a degenerate mock object.
test-driven development An incremental approach to software development in which writing tests precedes writing the software being tested. See this article for a brief introduction.
transformation In most discussions involving Quilt, this is a sense-preserving transformation, a change to Java-related software which has no effect on its normal functionality. Usually the change involves adding instrumentation to the software which allows side effects (measurements such as hit counts ) to be collected at runtime.
unit test A test of software at the lowest level of modularity; a test of an individual class or method as opposed to a test of a system consisting of many interacting classes. Software development methodologies such as Extreme Programming (XP) and Test-Driven Development emphasize the development of software and unit tests as one process, or go even further, encouraging programmers to write tests before writing the software.
XP See Extreme Programming.

This material is copyright 2003 by James David Dixon ("Jim Dixon") and is made available under the Artistic License .