Parameterized Unit Tests. Nikolai Tillmann; Wolfram Schulte; Wolfgang Grieskamp
Parameterized unit tests extend the current industry practice of using closed unit tests defined as parameterless methods. Parameterized unit tests separate two concerns: 1) They specify the external behavior of the involved methods for all possible test arguments. 2) Test cases can be re-obtained as traditional closed unit tests by instantiating the parameterized unit tests. Symbolic execution and constraint solving can be used to automatically choose a minimal set of inputs that exercise a parameterized unit test with respect to possible code paths of the implementation. In addition, parameterized unit tests can be used as symbolic summaries which allows symbolic execution to scale for arbitrary abstraction levels. We have developed a prototype tool which computes test cases from parameterized unit tests; it is integrated into the forthcoming Visual Studio Team System product. We report on its first use to test parts of the .NET base class library.
By adding parameters the authors turn a closed unit test into a universally quantified conditional axiom that must hold for all inputs under specified assumptions. Adding parameters improves the expressiveness of unit cases, at the expense of not providing concrete test cases. Symbolic execution is used to automatically find the set of parameters that have to be tested.
This seems like an interesting approach to unifying unit testing and algebraic specifications.
Metaphor is a strongly-typed, multi-stage, object-oriented programming language. Metaphor is based on a subset of C# and is extended with multi-stage programming constructs in the style of MetaML or MetaOCaml. Metaphor is implemented as a compiler on the .NET CLR.
A lot of language theory goes past here on Lambda the Ultimate, but we rarely see that theory directly impacting commercial programmers.
We discussed Hibernate, and O/R mapping in general, a couple of times so I thought this might be of interest.
An critique of OOP. The article is about OOP as a SE/design approach and doesn't directly attack the issue from a PL angle, but it might still interest LtU readers.
From a PL point of view, I would have chnaged the title to: OOP Is Much Better in Theory Than in Practice, (And the Theory Isn't too Good anyway).
Polyglot is a compiler front end framework for building Java language extensions that doesn't seem to have been mentioned here.
Amongst the extensions is an implementation of nested inheritance which, I admit, I don't completely get. There's a discussion (moderately critical) of the paper in the context of OCaml that starts here.
This caught my eye while scanning the latest Caml Weekly News - a useful summary of the (rather high volume) (O)Caml list.
Grady Booch's contribution to the discussion on UML vs. DSLs.
Along the way we learn about UML specialization mechanisms, UML profiles, and Grady's opinions as regards tool vs. language issues.
Practical Common Lisp by Peter Seibel was mentioned here in the past, but not on the home page if I am not mistaken.
You can download all but three chapters from the website, and seeing as Lisp is an important and somewhat unique language, you might want to do just that.
The chapters I read were well written and funny at times. What's not to like?
The OO chapters offer a nice intro to CLOS, which might interest those with OO experience seeing as CLOS doesn't resemble your average OOPL.
I must say that it's nice to see "practical" how-to books written for non-mainstream languages.
OO Programming Styles in ML, Bernard Berthomieu.
It is shown that the essential OO concepts and idioms, including inheritance and dynamic dispatch, can be encoded in this well understood framework, without requiring any operational or typing extensions of ML...
This isn't new (it is dated March 2000), but seems interesting.
The ML module language put to good use!
Jon Udell's interview with Ward Cunningham and Jack Greenfield might help understand Microsoft's methodology of software factories and DSLs.
The interview is available as a 54 minute MP3 file. The notion of language as abstraction mechanism and explanation of the part played by DSLs appear towards the second half of the conversation.
Active forum topics
New forum topics