TestLint is a tool to automatically detect design flaws in the test-code a.k.a TestSmells: "what is good, what is bad"
- All-inclusive Squeak-Image (Testing-xxxx-xx-xx.zip). Everything inside this image is supposed to be working, but sources are probably not up-to-date.
- Public MC packages on SqueakSource (SR): "TestSmells"
- Dynamic analysis requires ByteSurgeon to be installed.
Overview about TestSmells
Features of the current prototype:
Rules for static and dynamic Analysis
- Approx. 20 very well-working rules
- Many more rules, yet unstable or too unprecise, ...
Very small, flexible and extendable kernel/model
Several browsers to access/browse the smelling nodes
(beta) Visualizations using Mondrian
Annotation of false-positives (not like in Lint yet)
- Slow, redundant, fuzzy, unstable rules
- Bad/slow Cache
- inconsistent rules (some return a reason, others don't, ...)
Planned for future versions:
Pragmas for annotations - like in Lint
Enhancing the runtime - scope/context aware
- Duplication / Multiplication —> port Smalldude from VW to Squeak
- Behavior block detection
- Eager tests
- Test coupling
Notifications / Event System
- (1) My Master Thesis :)
- (2) Gerard Meszaros - "xUnit Test Patterns, Refactoring Test Code"
- (3) Bart Van Rompaey, Bart Du Bois and Serge Demeyer - "Characterizing the Relative Significance of a Test Smell"
- (4) Magiel Bruntink, Arie van Deursen - "Predicting Class Testability using Object-Oriented Metrics"
- (5) Arie van Deusen, Leon Moonen, Alex van de Bergh, Gerard Kok - "Refactoring Test Code"
- (6) Radu Marinescu - "Detection Strategies: Metrics-Based Rules for Detecting Design Flaws"
- (7) Michael D. Ernst - "Static and dynamic analysis: synergy and duality"