PowerFour Testing Tool Research and Analysis
There are various tools that focus on many aspects of the software testing and improvement spectrum. Some tools are better suited that others for the tasks needed and by extension the personal preference/reasons of the tester or organization.
The areas of focus that we agreed upon in order to realize improved/refactored code were:
Testing (Unit, Integration, System), Code Refactoring, Code Coverage Analysis, Automation, Prioritization, Regression Testing, Bug Discovery, etc.
===========================================================================================
Some of the suggestions that were incorporated into our approach were:
Memory Analyzer
FindBugs Eclipse Plugin
This tools specializes in defect detection through static Java code analysis. It searches for more than 200 bug patterns (infinite recursive loops, deadlocks, null pointer differences etc) and can identify serious defects present in large applications (1 defect per 1-2000 lines of source code).
FindBugs_Plugin_link
===========================================================================================
Some other tools that are being evaluated are:
~(1)~
AppPerfect Code Analyzer
AppPerfect DevTest4J consists of a Java code analyzer, unit tester and profiler. The Code Analyzer is used to review code and enforce good coding practices promoting application optimization.
The code is checked against more than 750 built-in coding rules, and possesses the functionality to automatically fix coding violations: over 180 auto fixes. ANT integration is also supported by this tool.
Checkstyle Plug-in
Checkstyle is a tool that aids developers in adhering to coding standards. This is implemented by inspecting and highlighting places where there is disparity from a defined set of coding rules. Problem inspection is continuously done with notifications appearing via the Eclipse Problems View and annotations of source code (similar to compiler alerts for errors or warnings).
There is a Check Configuration Editor which aids in creating and maintaining audit rule configurations. Filters and File sets can be used to define which files are checked and which are not.
Checkstyle_plugin_link
~(2)~
TestNG for Eclipse
This is a testing tool with similar functionality to JUnit in showing all tests and the particular tests that fail.
TestNG_link
AppPerfect Unit Tester (Based on the JUnit Framework)
JUnit Helper
Aids JUnit users with public, protected, and package (local methods) test case coverage (Do not have to begin writing new test cases)
~(3)~
Google WindowTester Pro
For automation Testing
~(4)~
Debug Visualization for Eclipse
This tools serves to aid developers in gaining an overview of the of the structures in memory via the Zest Framework.A better structural view in debug mode is provided by this feature using graphical visualizations of variables. This visual effectively aids in complex data structure analysis.
Features:
Graph Layout (automatic)
Hiding specific nodes
Node filtering (automatic)
Partial graph view (Drill-down)
Extension points for better functionalities.
Bytecode Visualizer (our pick)
This a visualization and debugging tool for byte code (Java).
Bytecode Viewer Features:
Field, method and class signatures shown as in java source code
Easily understood comments for instructions and their parameters
Exception handlers scope easy to follow
Local variable and line number tables as comments
Tab switching between source and byte code
Other Features:
Control Flow Graph - drawn alongside the bytecode aiding the understanding of method execution paths
Class File Outline - both synchronized with the bytecode viewer. eg. Clicking the method in the outline takes viewer to the given method.
Bytecode Debugger
Instruction level debugging -
Set breakpoints by double clicking
Single Instruction Step (unique to this tool)
Works for classes without Line Number Table
Operand Stack Viewer
Class File Compare
Class File Editor
New Feature: Debugging classes generated at run time
~(5)~
X-Ray - sotware visualization
X-Ray is a software visualization plug-in for Eclipse framework. It is open-source and provides class and package dependency views, along with system complexity views.
nWire for Java: Code Exploration for Eclipse (our pick)
nWire allows for better understanding of application components and associations through its navigator view, a quick search feature (wild card searching using Uppercase letters), and a graphical visualizer for the architecture
It is very useful when it comes to understanding code: reduces the learning code for complex applications and reduces developer costs.
~(6)~
Unnecessary Code Detector - This is a Plugin tool for Eclipse which identifies dead public java code (fields, methods or classes that have no reference). This tools makes maintenance easier while reducing the code base.
unnecessary_code_detector_link
PMD Eclipse
PMD used to locate potential Java source code problems through scanning.
Some of the problems that can be detected are:
Dead Code - local variables, private methods, and parameters (unused)
Duplicate Code - Copied code = copied bugs
Possible Bugs - empty statements (try/catch/finally/switch)
Overcomplicated Expressions - unnecessary if statements, for loops that could be while loops
Suboptimal code - inefficient String/StringBuffer usage
eclipse-pmd
Works similarly to PMD Eclipse above and where possible offers quick fixes that repair problems automatically. The fix can be used for a single problem case of extrapolated to all occurrences in the code base.
Three Testing tools provided along with some background information and links to each tools webpage. - GF