Software Testing
UNIT - 1
What is Software Testing?
Software Testing is a method to assess the functionality of the software program.
The software checks whether the actual software matches the expected requirements and ensures
the software is bug-free.
The purpose of software testing is to identify the errors, faults, or missing requirements in contrast to
actual requirements.
It mainly aims at measuring the specification, functionality, and performance of a software or an
application.
Why Software Testing is Important? What are the benefits of Software Testing?
Defects can be identified early
Improves quality of software
Increased customer satisfaction
Cost-Effectiveness
Reduced Risks
Enhanced Security
Satisfied Customers
Improving Performance
Goals or Objectives of Software Testing
To demonstrate that the software meets its requirements and specifications.
To identify defects, errors, and bugs in the software and ensure that they are fixed before the
software is released to end-users.
To ensure that the software is reliable, efficient, and user-friendly.
To improve the quality of the software and reduce the risk of failure or malfunction.
To ensure that the software is compatible with different hardware, software, and operating
systems.
Goals or Objectives of Software Testing
To ensure that the software is secure and protects sensitive data from unauthorized access.
To ensure that the software performs well under different conditions, such as high traffic, heavy
load, or stress.
To ensure that the software is easy to maintain and update.
To ensure that the software is compliant with industry standards and regulations.
To ensure that the software meets the expectations and needs of end-users.
Classifications of Software Testing
Based on Testing Objectives
Based on Testing Levels
Based on Testing Technologies
Based on Testing Methods
Based on Testing Strategies
Based on Testing Objective
1. Functional Testing
This type of testing ensures that the software functions as intended and meets the specified functional
requirements.
Test cases are designed to validate the behavior of individual functions, features, and user interactions
within the software application.
This testing type answers the question:
"Does the software do what it's supposed to do?"
It usually involves testing user interfaces, APIs, databases, security
features, and any other component that contributes to the software's core functionality.
Example: In whatsapp can I sen a voice note: yes / no
Based on Testing Objective
2. Non-Functional Testing
This evaluates the software's performance and other aspects like scalability, usability, reliability, and security.
Performance Testing: Performance testing evaluates how the software performs under various conditions such
as load, stress, and scalability. It aims to identify performance bottlenecks and ensure that the software meets
performance expectations.
Security Testing: Security testing focuses on identifying vulnerabilities and weaknesses in the software to prevent
unauthorized access, data breaches, and other security threats.
Usability Testing: Usability testing assesses the user-friendliness and overall user experience of the software. It
involves testing the interface, navigation, and accessibility to ensure a positive user experience.
Compatibility Testing: Compatibility testing checks the software's compatibility with different devices, browsers,
operating systems, and environments to ensure seamless operation across various platforms.
Based on Testing Objective
3. Regression Testing
Conducted after changes, updates, or bug fixes, it ensures that the new code or modifications do not
negatively impact the existing functionality of the software.
It often involves re-running previous test cases to confirm stability.
Based on Testing Levels
Unit Testing Integration Testing
It is the process of testing individual It focuses on verifying the interactions and
components, modules, or units of software data flow between integrated components or
to ensure that they perform as expected. modules of a software system.
It focuses on verifying the correctness of It aims to uncover defects that may arise when
specific sections of code, typically the individual units or modules are combined and
smallest testable parts of an application. ensures that they work together as expected.
Developers often conduct unit testing Example: Does the contact list talk correctly to
during the coding phase to identify and fix chat window.
errors early in the development cycle.
Example: Testing double click logic.
Based on Testing Levels
Software Testing Acceptance Testing
It is the process of testing an entire It is the final stage of software testing,
software system to verify that it meets the conducted to determine whether the
specified requirements and performs as developed software meets the business
expected in a complete and integrated requirements and is ready for delivery to the
environment. client or end users.
It is conducted after integration testing It often involves UAT(User Acceptance Testing)
and focuses on evaluating the software as by end-users to ensure that the software meets
a whole, including both functional and business needs.
non-functional aspects.
Based on Testing Techniques
Manual Testing Automation Testing
This is a testing process where testers This is a testing process that uses software tools
manually execute test cases without using or scripts to execute test cases automatically.
automated tools or scripts. It is primarily used for repetitive and extensive
It allows for ad-hoc testing and detailed testing tasks to improve efficiency and
analysis of software behavior. accuracy.
It is beneficial for Regression testing,
Ad-hoc : used when time is short, Performance testing and test case execution.
requirements are unclear, or a quick quality
check is needed before release.
Based on Testing Methods
Black-Box Testing White-Box Testing
It is a software testing method where the This is also known as Clear-Box Testing, Glass-
internal structure, design, or Box Testing, or Transparent-Box Testing.
implementation of the application being It is a software testing method that examines
tested is not known to the tester. the internal logic, structure, and code of an
The focus is solely on validating the application.
functionality of the software based on its Testers need to have knowledge of the
specifications, without considering how it software's internal workings to design and
operates internally. execute test cases that covers different code
paths and conditions.
Based on Testing Strategies
Top-Down Testing Bottom-up Testing
It is an approach to integration testing It is an integration testing approach where
where testing begins from the highest level testing begins with the lower-level modules and
modules and progressively moves progressively moves upward to the higher-level
downward to lower-level modules. modules.
This method is particularly useful for testing This method ensures that each module is
the system's control flow and interactions individually tested and verified before
between hierarchical components. integrating with the rest of the system.
Verification
Verification is the process of discovering the possible failures in the software (not the actual final
product) before the commencement of the testing phase.
Verification is done during the development phase of the software development life cycle.
It involves reviews, inspections, meetings, code reviews, and specifications.
Verification is done to determine whether software meet the specified requirements.
It answers the question." Are we building the product right?".
Verification Techniques or Static Testing Techniques
Reviews: A review is a systematic examination of document by one or more people with the main aim
of finding and removing errors early in the software development life cycle. Mainly it is of 2 types
a) Formal Review :
Review that is well structured and regulated.
In contains Planning, Preparation, Review meeting.
b) Informal Review :
These are applied many times during the early stages of the life cycle of the document.
A Two-person team can perform the Informal meeting.
These reviews are not documented.
Verification Techniques or Static Testing Techniques
Inspection
It Is the most formal type of review.
It is a strategy adopted during the testing phase.
It is led by trained moderators.
During the inspection the documents are prepared and checked thoroughly by the reviewers
before the meeting.
Verification Techniques or Static Testing Techniques
Walkthrough
It is an informal group or individual review method.
Here the author described the product work to the supervisors in an informal meeting to receive
feedback.
It is led by trained moderators.
During the inspection the documents are prepared and checked thoroughly by the reviewers
before the meeting.
Validation
Validation is the process of evaluating the final product to check whether the software meets the
business needs.
Validation occurs after the verification process and the actual testing of the product.
It answers the question, "Are we building the right product?“
In simple words, Validation is to validate the actual and expected output of the software.
A Testing Life Cycle
The Testing Life Cycle is a critical framework in software development that systematically identifies
diagnoses, and resolves issues within a software product to ensure quality and reliability.
A Testing Life Cycle
Spec (The Blueprint): Write down exactly what the software should do. If the instructions are wrong
here, everything else will be wrong later.
Design (The Plan): Turn those instructions into a technical map. Mistakes here usually look like "bad
logic" or a messy structure.
Coding (The Build): Developers write the code. This is where most "human errors" (typos or logic
mistakes) happen.
Testing (The Check): Run the software to see if it breaks. If it does something it shouldn't, that's an
incident.
Classify Fault (The Label): Figure out what went wrong. Was it a typo (coding) or a misunderstood rule
(spec)? This helps you decide what to fix first.
Isolate Fault (The Hunt): Find the exact line of code or the specific design flaw causing the mess. You
have to "quarantine" the problem.
Fault Resolution (The Fix): Repair the error and double-check that your fix didn't accidentally break
something else.
Test Cases
A documented set of inputs, execution conditions, and expected results used to verify that a particular
feature of a software application is functioning correctly.
Components of Test Cases
Test Case ID
Purpose
Test Created by
Test environment
Prerequisites
Test Procedure
1. Test Case ID: A unique identifier assigned to each test case. It helps in tracking the test
case in test management tools or documentation and referencing specific tests easily.
2. Purpose: A brief description or statement about what the test case is intended to verify or
validate.
3. Test Created By: The name of the person who created the test case. This is useful for
accountability and for seeking clarification if there are any questions regarding the test
case specifics.
4. Test Environment: The specific setup required to run the test, including hardware, operating
system, network configurations, and any installed applications.
5. Prerequisites: Any conditions that must be met or steps that need to be performed before
the test can be executed. This might include configurations, data setups, or previous test
completions.
6. Test Procedure: A detailed step-by-step guide on how to execute the test.
7. Test Data: Specific data values or inputs that need to be used during testing.
8. Expected Result: The outcome that should occur if the software functions correctly under
the test conditions.
9. Actual Result: What actually happened when the test was executed? The documented
outcome that is compared with the expected result to determine software performance and
correctness.
10. Verdict: Pass/Fail: The outcome of the test case based on the comparison between
expected and actual results.
11. Comments: Additional notes or observations made during the testing, explanations of the
results, or issues encountered that might not be covered by the verdict.
Example of a test case for a Login Functionality
Test Procedure: 1. Navigate to the login page. 2.
Test Case ID: TC-LOGIN-001
Enter valid email (testuser@[Link]). 3. Enter
valid password
Purpose: Verify login functionality with(password123). 4. Click the "Login"
valid credentials.
button. Test Data - Username:
Test Created By: John testuser@[Link] | Password:
Doe Status of the test Notes password123
on the procedure
Expected Result: The user should be successfully
Environment: Windowsredirected
10, Chrome to Browser
the dashboard
(v.96.0), without any [Link] on staging
Web application
Actual Result: The user was successfully redirected to
server. the dashboard without any errors. Verdict (Pass/Fail):
Pass Comments: Test executed successfully. No issues
observed.
Pre-Requisites: User account must exist with valid credentials. Access to staging environment.
Test Procedure:
1. Navigate to the login page.
2. Enter valid email (testuser@[Link]).
3. Enter valid password (password123).
4. Click the "Login" button.
Test Data - Username: testuser@[Link] | Password: password123
Expected Result: The user should be successfully redirected to the dashboard without any errors.
Actual Result: The user was successfully redirected to the dashboard without any errors.
Verdict (Pass/Fail): Pass Comments: Test executed successfully. No issues observed.