Testing
Testing
July, 2024
Chapter 6 Outline
Verification and validation (SW testing)
01 Software testing terminologies
Software Verification:
Verification is the process of confirming if the software is meeting the
business requirements, and is developed adhering to the proper
specifications and methodologies.
Verification ensures the product being developed is according to
design specifications.
It focuses on "Are we building the product right?" by checking if the
software conforms to its specified functional and non-functional
requirements.
Software Validation
Validation is process of examining whether or not the software
satisfies the user requirements. It is carried out at the end of the
SDLC.
Validation ensures the product under development is as per the user
requirements.
It focuses on "Are we building the right product?" by evaluating if the
software fulfills user expectations and solves the intended business
problem.
The software testing life cycle (STLC) is a framework that outlines the
different phases involved in the testing process for a software
application or system.
1. Requirements Analysis
In this phase, the testing team analyzes the software requirements,
functional specifications, and design documents to understand the
system's expected behavior and identify potential areas for testing.
The team identifies the testing objectives, scope, and constraints
based on the requirements.
2. Test Planning
The testing team creates a comprehensive test plan that outlines the
testing strategy, test approach, test methods, and resource
requirements.
The test plan defines the testing objectives, test types, test
environment setup, test data requirements, and the overall testing
schedule.
5. Test Execution
The testing team executes the designed test cases in the established
test environment.
During test execution, the team records the actual results and
compares them against the expected results.
Any discrepancies between the actual and expected results are
identified as defects or bugs.
7. Test Closure
The testing team analyzes the overall testing process, including the
test results, defect reports, and the achieved test coverage.
A test closure report is generated, summarizing the testing activities,
outcomes, and any unresolved issues or risks.
The team also makes recommendations for future testing efforts or
improvements to the STLC.
Unit Testing
Testing individual components or modules of the software to ensure
they work as expected.
This type of testing is performed under white-box testing approach.
Unit testing helps developers decide that individual units of the
program are working as per requirement and are error free.
Integration Testing
Even if the units of software are working fine individually, there is a
need to find out if the units if integrated together would also work
without errors.
Testing how different components or modules of the software work
together.
System Testing
The software is compiled as product and then it is tested as a whole.
This can be accomplished using one or more of the following tests:
o Functionality testing - Tests all functionalities of the software against
the requirement.
o Performance testing - This test proves how efficient the software is. It
tests the effectiveness and average time taken by the software to do
desired task.
o Security & Portability - These tests are done when the software is
meant to work on various platforms and accessed by number of
persons.
Compiled by : Biniam Behailu & Yimer Amedie Introduction to Software Engineering 32
Levels of Testing
Acceptance Testing
When the software is ready to hand over to the customer it has to go
through last phase of testing where it is tested for user-interaction
and response.
Testing the software to verify that it meets the customer's or end-
user's acceptance criteria.
This is important because even if the software matches all user
requirements and if user does not like the way it appears or works, it
may be rejected.