TestLint is a tool to automatically detect design flaws in the test-code a.k.a TestSmells: "what is good, what is bad"
Downloads
- 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)
Bugs:
- Slow, redundant, fuzzy, unstable rules
- Categorization
- Bad/slow Cache
- inconsistent rules (some return a reason, others don’t, ...)
Planned for future versions:
- Test-Framework independence
- Pragmas for annotations - like in Lint
- Enhancing the runtime - scope/context aware
- Rules
- Duplication / Multiplication —> port Smalldude from VW to Squeak
- Behavior block detection
- Eager tests
- Test coupling
- User Interface
- Notifications / Event System
References
- (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"
Web References