Chapter 5 Fundamentals of Software Testing
Chapter 5 Fundamentals of Software Testing
Fundamentals of
Testing
Fundamentals of Software
Testing
Fundamentals of Software Testing
Software testing is a crucial part of the software development life cycle (SDLC),
ensuring that a software application meets specified requirements and
functions correctly. It helps identify defects, improve quality, and increase
reliability before deployment.
1. What is Software Testing?
• Software testing is the process of evaluating a software system or application
to detect discrepancies between expected and actual results. It ensures that
the software is free of defects and meets the desired quality standards.
2. Objectives of Software Testing
• Identify and fix software defects
• Ensure software meets functional and non-functional requirements
• Improve software reliability and performance
• Validate that the software works as expected in real-world conditions
• Reduce maintenance costs and risks
Question Answered "Are we building the software right?" "Are we building the right software?"
A. Unit Testing
Definition
• Unit testing focuses on testing individual components or modules of the software in isolation.
• It ensures that each function works correctly before integration.
Key Features
✔ Performed by developers during the coding phase.
✔ Uses white-box testing techniques.
✔ Automated tools like JUnit, NUnit, and PyTest are commonly used.
Example
• Testing a function that calculates the total price of an order before integrating it with the payment
module.
B. Integration Testing
Definition
• Integration testing verifies that multiple modules work together correctly.
• It ensures that data flows properly between connected components.
Types of Integration Testing
1.Top-Down Testing – Tests high-level components first, then integrates lower-level
ones.
2.Bottom-Up Testing – Tests lower-level components first, then integrates with
higher levels.
3.Big Bang Testing – All modules are tested together at once.
4.Hybrid Testing (Sandwich) – A combination of top-down and bottom-up
approaches.
Example
• Testing the connection between a login module and a database to ensure user
authentication works correctly.
C. System Testing
Definition
• System testing evaluates the entire application as a whole to ensure it meets
functional and non-functional requirements.
• It includes performance, security, usability, and compliance testing.
Key Features
✔ Tests the entire software system under real-world conditions.
✔ Ensures compliance with requirements.
✔ Performed by QA teams.
Example
• Testing an e-commerce website to ensure users can browse products, add
items to a cart, and complete purchases.
D. Acceptance Testing
Definition
• Acceptance testing determines whether the software meets business
requirements and is ready for deployment.
• It is conducted by end-users or clients.
Types of Acceptance Testing
1.User Acceptance Testing (UAT) – Conducted by actual users.
2.Operational Acceptance Testing (OAT) – Checks system performance and
maintenance readiness.
3.Regulatory Acceptance Testing – Ensures compliance with industry standards.
Example
• A company tests its payroll software to ensure it calculates salaries correctly
before launching it.