Unit Testing and Component Testing
A software unit represents a small unit of software functionality. A unit typically is the work of one programmer.
Unit Testing focuses on the programming logic within the unit, while ignoring the interaction with other components.
Called components are replaced with stubs, simulators, or trusted components and calling components are replaced with
drivers or trusted super-components.
A software component is the integration of one or more software units. It performs one or many meaningful tasks.
Component testing is similar to unit testing but the interaction is with other components not stubs or simulators.
Unit and component testing are usually performed by software developers. If the development of a component involves
one developer, unit testing and component testing are combined.
Integration Testing Integration testing examines the interactions between various
software components. The test usually go through several real-word business scenarios to see whether the system can successfully
complete workflow tasks. The test is usually conducted by software quality assurance team by following a comprehensive testing plan.
Integration testing generally follow three common strategies - top-down approach, bottom-up approach or middle-out approach.
The top-down approach to integration testing requires the highest-level modules be test and integrated first. The bottom-up approach
tests and integrates the lowest-level units first. The Middle-out or umbrella approach performs testing along functional data and
control-flow paths. First, the inputs for functions are integrated in the bottom-up pattern, then the outputs for each function are
integrated in the top-down manner.
Regression Testing Whenever you modify a unit or component of a software program
and it interact with other components, you should do regression testing by rerunning existing tests against the modified
code to determine whether the changes break existing functions. Comprehensive testing of existing system is a common mistake
and waste of time. It may fail to detect the bugs because the lack of detailed testing on the problematic pieces. Regression
testing should focus the component midfield and the components that interact with the modified.
System Testing System testing specifically goes after behaviors and bugs that are
properties of the entire system as distinct from properties attributable to components. System testing examines
performance, throughput, security, recovery, resource loss transaction synchronization and etc.
User Acceptance Testing User acceptance testing tests usability of the system.
Even end users or their representatives should be part of software project team, and requirements or product management team
interacts with end users regularly, it is the first upon the completion of development that end users can take a holistic
view of the software system . End users will continuously provide feedback on system enhancements, which drives the cycle of
Java Application Servers for Web Development
Development Processes and Technical Environments
Software Configuration Management - Version Control, Build, Release Management and Process Control
Software Testing Procedures
Component Based Application Development