Home   About   Contact 
 Ecommerce Overview 
 Business Activities 
  Market Research 
  Online Marketing 
  Search Engine Marketing 
  Online Storefront 
  Online Payment 
  Order Fulfillment 
  Customer Support 
  Web Design 
  Application Development 
  Web Hosting 
  WebSite Monitoring 
  Internet Security 
 Business Law 

Software Testing - Unit Testing, Integration Testing, Regression Testing, System Testing and User Testing


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 systems development.

Related Topics
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


Copyright © 2003 insightin.com. All rights reserved.