Transcript Java Software Quality Assurance Tools
Java Software Quality Assurance Tools
Michael Slattery Indianapolis Java Users Group Meeting April 24, 2002
Overview
Limited Concepts – Only those that increase quality, efficiency, and schedule predictability – Supported nearly entirely by a 100% Java tool Open Source Tools – Inexpensive (i.e. free) – Accessible – Modifiable Statistics and Usefulness
Typical Testing
Many bugs won't be found until customers start using product Subtle errors that can be missed or conditions that aren't seen Quality is unknown until testing begins Buggy code must be reimplemented User might not like what how the UI works Release date becomes unpredictable and continually slips QA/Testing is seen as the part of development overhead A pre-set delivery date cuts off testing before enough bugs are found
Benefits of a good QA process
Far less chance of users experiencing problems Find and fix bugs early Write more code in less time Schedule predictability Known and controlled quality at all stages of development Keep more of your hair
Points
As important as other aspects of development such as language, design, technology, even PM The closest thing to a silver bullet Most of this stuff is easy to implement and does not add significant overhead The earlier you implement in a project the better Common quotes – Test early, test often – Code a little, Test a little.
Related Concepts
Design Project Management Requirements Configuration Management Programming
QA Components
Configuration Management Defensive Coding Runtime Analysis Testing
Configuration Management
Change Management Source Control – jCvs, SourceJammer Tracking – Scarab, IssueZilla Standard Working Environment – IDE, Editor, Compiler, JRE Build and Test Scripts – Ant
Defensive Coding
Design Tools – ArgoUML Assertions – Kopi, by-hand, JDK 1.4
Design by Contract – iContract, JContract, Kopi Style Checking – StyleCheck w/Ant, Sun's style, Scott Ambler, InfoSpheres Generics – Pizza, GJC, Kopi
Runtime Analysis
Debuggers – IDEs, Sun's Debugger Logging – Log4J, JDK 1.4
– Exception emails Runtime Data Checkers – JTidy, DTD/XSchema
Testing
Unit Testing – Manual, JUnit System Testing Static Analysis – JLint, Compaq/ESC Code Analysis Regression Testing – JUnit, JavaTest, HttpUnit, HTTP play/record Coverage Analysis – Quilt
Various Techniques
Code Inspections – JEdit + JDiff Continuous Integration Metrics - production, bugs, quality eXtreme Programming QA Specialist Statistics / Metrics Task Check-in Process
Task Check-In Process
Report a task (bug or feature) Design - UI, technical, test plan Design Reviews - UI by project manager, tech by Lead, test plan by QA Prototype UI - approved by customer Write some unit tests (as described in the test plan) Code Unit test Peer Review Static Analysis, Source standards check Check in Update task report Initial verification by another programmer Final verification (System testing) when in alpha Code Review (weekly)
Daily Smoke Test
Build – Ant Full source check – SourceCheck Regression tests – Junit, HttpUnit Full static checking – Java/ESC Coverage Analysis – Quilt
Evaluation of Tools/Techniques
Cost Effectiveness Single/Team Ease of integration – Into an existing process