QA–QC Arena – Software Testing Home for beginners and experts

Test Levels


Test Level
Details
It includes…
Component Testing (Unit/Module/Program Testing)
Component Testing verifies the functioning of software (e.g. modules, programs, objects, classes, etc.) that are separately testable.

Stubs & Drivers are used to replace the missing software and simulate the interface between the software components.

Stub – Stub is called from the software component to be tested / Stub is called program.
Driver – Driver calls a component to be tested / Driver is caller program.

Test–First Approach or Test–Driven Development is used in Component Testing.
Component Testing includes
  • Functional Testing (Functionality Testing)
  • Non–Functional Testing (Performance Testing)
  • Structural Testing (Decision Coverage)
  • Regression Testing (testing of changes)
Integration Testing
Integration Testing tests interfaces between components, and interfaces between systems.
Component Integration Testing tests the interactions between software components and is done after component testing.
System Integration Testing tests the interactions between different systems and may be done after system testing.

Approaches to Integration Testing –
1. Big-bang Integration Testing
All components or systems are integrated simultaneously and after that everything is tested as a whole.
  • Advantage – Everything is finished before integration testing starts; no need to simulate parts.
  • Disadvantage – It is time-consuming and difficult to trace the cause of failures with this late integration.
2. Incremental Integration Testing
All programs are integrated one by one, and a test is carried out after each step.
  • Advantage – The defects are found early in a smaller assembly when it is relatively easy to detect the cause.
  • Disadvantage – It can be time-consuming since stubs and drivers have to be developed and used in the test.
Incremental Integration Testing possibilities
  • Top-down – Testing takes place from top to bottom, following the control flow or architectural structure (e.g. starting from the GUI or main menu). Components or systems are substituted by stubs.
  • Bottom-up – Testing takes place from the bottom of the control flow upwards. Components or systems are substituted by drivers.
  • Functional incremental – Integration and testing takes place on the basis of the functions or functionality, as documented in the functional specification.
Integration testing may be carried out by the developers or by a separate team of specialist integration testers.
Integration Testing includes
  • Functional Testing (Functionality Testing of integration between different components or systems)
  • Non–Functional Testing (Performance Testing)
  • Structural Testing
  • Regression Testing (testing of changes)

System Testing
System Testing is concerned with the behavior of the whole system/product as defined by the scope of a development project or product.

System testing requires a controlled test environment and it should correspond to the final target or production environment as much as possible in order to minimize the risk of environment-specific failures not being found by testing.
System Testing includes
  • Functional Testing (Functionality Testing)
  • Non–Functional Testing (Performance & Reliability Testing)
  • Structural Testing (to assess the thoroughness of testing elements such as menu dialog structure or web page navigation)
  • Regression Testing (testing of changes)
Acceptance Testing
The goal of acceptance testing is to establish confidence in the system.
It is focused on a validation type of testing, whereby we are trying to determine whether the system is fit for purpose.
Finding defects should not be the main focus in acceptance testing.
The execution of the acceptance test requires a test environment that is for most aspects, representative of the production environment.
Acceptance testing may occur at more than just a single level.
User Acceptance Test – It focuses mainly on the functionality thereby validating the fitness-for-use of the system by the business user.  User acceptance test is performed by the users and application managers.
Operational Acceptance Test (Production Acceptance Test) – It validates whether the system meets the requirements for operation.  System administration will perform the operational acceptance test shortly before the system is released. The operational acceptance test may include testing of backup/restore, disaster recovery, maintenance tasks and periodic check of security vulnerabilities.
Contract Acceptance Testing – It is performed against a contract's acceptance criteria for producing custom-developed software.
Compliance Acceptance Testing – Compliance acceptance testing or regulation acceptance testing is performed against the regulations which must be adhered to, such as governmental, legal or safety regulations.
Alpha Testing – It takes place at the developer’s site. A cross-section of potential users and members of the developer's organization are invited to use the system. Developers observe the users and note problems. Alpha testing may also be carried out by an independent test team.
Beta Testing – Beta testing, or field testing, sends the system to a cross-section of users who install it and use it under real-world working conditions. The users send records of incidents with the system to the development organization where the defects are repaired.
Acceptance Testing includes
  • Functional Testing (Functionality Testing)
  • Non–Functional Testing (Performance & Reliability Testing)