What is Integration Testing?
Testing the data flow between two or more modules is called Integration Testing.
It focuses on checking data communication between multiple modules.
It is a White Box Testing technique.
It is conducted:
- By the tester at the application (UI) level.
- By the developer at the coding level.
Types of Integration Testing (Incremental & Big Bang)
Incremental Testing
Testing is done by integrating two or more logically related modules.
The application is then tested for proper functioning.
Other related modules are integrated incrementally and tested.
Stubs and Drivers are the dummy programs used to facilitate this activity.
Incremental testing has two approaches:
- Top-Down
- Bottom-Up
Non-Incremental Testing
The Big Bang approach, where modules are integrated together.
Top-Down vs Bottom-Up
Top-Down
- We first test the higher-level module.
- Then we test the lower-level module.
- If a higher-level module is not available, we use a dummy Stub.
Bottom-Up
- We first test a lower-level module.
- Then we test the higher-level module.
- If a lower-level module is not available, we use a dummy Driver.
Top-Down
Order
- Higher-level module first.
Dummy Used
- Stub (for missing higher-level module).
Bottom-Up
Order
- Lower-level module first.
Dummy Used
- Driver (for missing lower-level module).
What is System Testing?
We test the application with each and every module, i.e., End-to-End Testing.
It tests the application's overall functionality against client requirements.
It is a Black Box Testing technique conducted by the testing team.
It starts after:
- Component (Unit) Testing
- Integration Testing
are completed.
In System Testing, we perform both:
- Functional Testing
- Non-Functional Testing
System Testing Focuses On
- User Interface Testing (GUI)
- Usability Testing
- Functional Testing
- Non-Functional Testing
What is Pilot Testing?
Pilot testing verifies a component of the system, or the entire system, under real-time operating conditions.
Its purpose is to evaluate:
- Feasibility
- Time
- Cost
- Risk
- Performance
It is done exactly between UAT and Production.
A select group of end users tests the system and provides feedback before full deployment.
Alpha Testing vs Beta Testing
Alpha Testing
A type of UAT done by one of the organization's employees to identify bugs before releasing the software to real users or the public.
Beta Testing
A type of UAT done by end users in a real environment.
It is the final test before shipping the product.
Direct feedback from customers is a major advantage.
Alpha Testing
Performed By
- Internal employees (testers)
- Developer's site
Reliability, Security, Robustness
- Not performed
Techniques
- Both White Box and Black Box Testing
Issue Handling
- Critical fixes addressed by developers immediately
Beta Testing
Performed By
- Clients / End users (not employees)
- Client location / End-user environment
Reliability, Security, Robustness
- Checked during Beta Testing
Techniques
- Black Box Testing (Real-world usage)
Issue Handling
- Feedback implemented in future versions
Alpha & Beta Entry/Exit Criteria
Entry Criteria for Alpha Testing
- SRS or BRS is ready.
- Test cases for all requirements.
- Testing team with good knowledge of the software application.
- Test lab environment setup.
- QA build ready for execution.
- Test management tool for uploading test cases and logging defects.
- Traceability Matrix ensuring each design requirement has at least one test case.
Exit Criteria for Alpha Testing
- All test cases have been executed and passed.
- All severity issues are fixed and closed.
- Delivery of the test summary report.
- Confirmation that no additional features can be included.
- Sign-off on Alpha Testing.
Entrance Criteria for Beta Testing
- Sign-off document on Alpha Testing.
- The environment is ready to release the application to the public.
Application Under Test (AUT)
AUT is also known as Pre-Production Testing.
It is performed by end users and testers to validate the application's functionality after successful acceptance testing.
It is formal testing conducted to determine whether an application is developed according to the requirements.
Monkey, Ad-hoc & Gorilla Testing
Monkey Testing
Performed randomly with no predefined test cases.
Testers may not know:
- What the system is about.
- Its purpose.
The objective is to check for system crashes.
Ad-hoc Testing
Performed without planning or documentation.
There are:
- No test cases.
- No SRS.
However, the tester has knowledge of the application.
Testers must understand the system well before testing.
The objective is to randomly divide the system into subparts and check their functionality.
Gorilla Testing
Performed on a few selected modules with a few test cases.
The objective is to check whether the module is working properly or not.
How Monkey Testing Differs from Ad-hoc Testing
Ad-hoc Testing
- The tester knows the application.
- A group of testers tests whatever they think is required based on their knowledge of the application.
Monkey Testing
- The tester has little knowledge of the application.
- Testers do not follow any specific path.
- They test randomly by clicking on objects and entering invalid data to see whether the application returns an error.
Use Case
A use case is a description of how a user interacts with a system or product.
It is prepared by the development team.
They write possible use cases based on the provided customer requirements specification.
It is a list of actions the actor takes while interacting with the system to achieve a goal.
Here, an actor can be:
- A human.
- An external system.
Use cases describe the system's functional requirements.
FAQs
1. What is Integration Testing?
Testing the data flow and communication between two or more modules.
It is a White Box Testing technique performed by:
- Testers at the UI level.
- Developers at the code level.
2. What is the difference between Top-Down and Bottom-Up Integration Testing?
Top-Down
- Tests higher-level modules first.
- Uses Stubs for missing lower-level modules.
Bottom-Up
- Tests lower-level modules first.
- Uses Drivers for missing higher-level modules.
3. What are Stubs and Drivers?
Dummy programs used in Integration Testing.
- A Stub stands in for a missing called (lower) module in Top-Down testing.
- A Driver stands in for a missing calling (higher) module in Bottom-Up testing.
4. What is System Testing?
End-to-End Black Box Testing of the application's overall functionality against client requirements.
It is performed after:
- Unit Testing
- Integration Testing
It covers:
- GUI Testing
- Usability Testing
- Functional Testing
- Non-Functional Testing
5. What is the difference between Alpha Testing and Beta Testing?
Alpha Testing
- Conducted by internal employees.
- Performed at the developer's site.
Beta Testing
- Conducted by real end users.
- Performed in the user's environment.
- Checks reliability, security, and robustness.
- Feedback is used to improve future versions.
6. What is Pilot Testing?
Testing a component or the whole system under real-time conditions.
It is conducted between UAT and Production, where a select group of users provides feedback before full deployment.
7. How is Monkey Testing different from Ad-hoc Testing?
The tester knows the application and tests based on their knowledge.
Monkey Testing
The tester has little knowledge of the application and tests randomly using invalid inputs to trigger crashes.
8. What is a Use Case?
A description of how a user (actor) interacts with a system to achieve a goal.
It is used to describe the functional requirements of the system.