Software Testing: Testing Process, Levels of Testing
Software testing is an important process in the Software Development Lifecycle(SDLC). It
involves verifying and validating that a Software Application is free of bugs, meets the technical
requirements set by its Design and Development, and satisfies user requirements efficiently and
effectively.
Software Testing is a process of verifying and validating whether the Software Product or
Application is working as expected or not. The complete testing includes identifying errors and
bugs that cause future problems for the performance of an application.
Software testing mainly divides into the two parts, which is used in the Software Development
Process:
Verification: This step involves checking if the software is doing what is
supposed to do. Its like asking, "Are we building the product the right way?"
Validation: This step verifies that the software actually meets the customer's
needs and requirements. Its like asking, "Are we building the right product?"
🔹 Types of Testing: Manual testing, Automation Testing
1. Manual Testing
Manual Testing is a technique to test the software that is carried out using the
functions and features of an application. Which means manual testing will check
the defect manually with trying one by one function is working as expected.
2. Automation Testing
Automation Testing It is a technique where the Tester writes scripts
independently and uses suitable Software or Automation Tools to test the
software. It is an Automation Process of a Manual Process. It allows for executing
repetitive tasks without the use of a Manual Tester.
🔹 Methods of Testing - Black Box, White Box, Gray Box
1. White Box Testing
White Box Testing is a software testing technique that involves testing the
internal structure and workings of a software application. The tester has access to
the source code and uses this knowledge to design test cases that can verify the
correctness of the software at the code level.
2. Black Box Testing
Black-Box Testing is a type of software testing in which the tester is not
concerned with the internal knowledge or implementation details of the software
but rather focuses on validating the functionality based on the provided
specifications or requirements.
3. Gray Box Testing
Gray Box Testing is a software testing technique that is a combination of the
Black Box Testing technique and the White Box Testing technique. In the Black
Box Testing technique, the tester is unaware of the internal structure of the item
being tested and in White Box Testing the internal structure is known to the tester.
🔹 level Testing and its Types
level Testing
Functional Testing is a type of Software Testing in which the system is tested against the
functional requirements and specifications. Functional testing ensures that the requirements or
specifications are properly satisfied by the application.
Types of level Testing:
1. Unit Testing
Unit Testing is a method of testing individual units or components of a software
application. It is typically done by developers and is used to ensure that the
individual units of the software are working as intended.
2. Integration Testing
Integration Testing is a method of testing how different units or components of a
software application interact with each other. It is used to identify and resolve any
issues that may arise when different units of the software are combined.
3. System Testing
System Testing is a type of software testing that evaluates the overall
functionality and performance of a complete and fully integrated software
solution. It tests if the system meets the specified requirements and if it is suitable
for delivery to the end-users.
4. Acceptance Testing
This is a kind of testing conducted to ensure that the requirements of the users are
fulfilled before its delivery and that the software works correctly in the user’s
working environment.
Alpha Testing - Software Testing
Alpha Testing is an essential phase in software testing conducted by
the development or QA team before beta testing .
It aims to identify and fix bugs in a controlled environment that simulates
real-world conditions.
helps ensure the software's functionality , reliability , and stability .
Alpha testing combines white-box and black-box testing techniques to
explore and evaluate the software.
This process is crucial for enhancing software quality and ensuring a
positive user experience before releasing the product to external testers or
customers.
Advantages of Alpha Testing
1. Early identification of bugs and issues: Alpha testing allows for
the early identification of bugs and issues, providing an opportunity to
fix them before they reach end-users.
2. Improved quality: By identifying and fixing bugs and issues early in
the development process, alpha testing helps to improve the overall
quality of the software.
3. Increased user satisfaction: Alpha testing helps to ensure that the
software meets the needs of the target audience, leading to increased
user satisfaction.
4. Faster resolution of problems: Alpha testing allows for the rapid
resolution of problems, reducing the likelihood of further issues down
the line.
Beta Testing:
Definition: Beta testing is testing the software in a real-world
environment before official release.
Purpose: Identifies bugs or usability issues missed during
development.
Participants: Conducted by selected real users (beta testers).
Process: Users test the software and provide feedback on bugs and
overall experience.
Feedback Use: Developers use this feedback to fix bugs, improve
functionality, and enhance usability.
Benefits:
o Helps ensure the software is stable, reliable, and user-
friendly.
o Allows performance evaluation in real-world use.
o Increases customer involvement and loyalty.
Classification: It is a type of User Acceptance Testing (UAT).
Product Readiness: Conducted on a beta version before final
release.
Goal: Minimize product failure risk and improve quality through
customer validation.
Advantage: Provides direct customer feedback before launch
4. ✅ Functional Testing
Definition:
Functional Testing is a type of Black Box Testing that verifies the
functions of the software application work as per the requirements.
Focus:
What the system does
Based on user requirements
Doesn’t require knowledge of code
Common Functional Testing Types:
1. Unit Testing: Testing individual functions/components.
2. Integration Testing: Testing the interaction between modules.
3. System Testing: Testing the whole system functionality.
4. User Acceptance Testing (UAT): Final validation with end users.
5. Smoke Testing: Quick test to check if the build is stable.
6. Sanity Testing: Ensures bugs are fixed and no other parts are broken.
7. Regression Testing: Confirms that recent changes haven’t broken
existing functionality.
8. Interface Testing: Validates interactions between systems and APIs.
Purpose:
To ensure the application performs as expected under specified conditions.
5. ✅ Structural Testing (White Box Testing)
Definition:
Structural Testing is a testing technique that involves testing the internal
logic and structure of the code.
Key Features:
Also called White Box Testing.
Requires programming knowledge.
Tests internal paths, loops, conditions, data flow, etc.
Common Techniques:
Statement Coverage
Branch Coverage
Path Coverage
Condition Coverage
Purpose:
To test how well the code is written and to ensure that all logical paths are
tested.
6. ✅ Difference between Testing and Debugging
Feature Testing Debugging
Process to find defects in
Definition Process to fix defects in code
software
Performe
QA/Testers Developers
d By
Tools Testing tools (e.g., Selenium, Debuggers (e.g., GDB, Visual
Used JUnit) Studio Debugger)
Check if software meets Locate and correct the root cause
Objective
requirements of errors
When After bugs are found during
After code is developed
Done testing
Broad – tests functionality, Narrow – focuses on fixing specific
Scope
usability, etc. issues
What is Software Maintenance?
Software maintenance is a continuous process that occurs throughout the
entire life cycle of the software system.
The goal of software maintenance is to keep the software system
working correctly, efficiently, and securely, and to ensure that it
continues to meet the needs of the users.
This can include fixing bugs, adding new features, improving
performance, or updating the software to work with new hardware or
software systems.
It is also important to consider the cost and effort required for software
maintenance when planning and developing a software system.
It is important to have a well-defined maintenance process in place,
which includes testing and validation, version control, and
communication with stakeholders.
It's important to note that software maintenance can be costly and
complex, especially for large and complex systems. Therefore, the cost
and effort of maintenance should be taken into account during the
planning and development phases of a software project.
It's also important to have a clear and well-defined maintenance plan
that includes regular maintenance activities, such as testing, backup,
and bug fixing.
What is Software Maintenance?
Software Maintenance refers to the process of modifying and updating
software applications after delivery to correct faults, improve performance,
or adapt the product to a changed environment. It is a crucial phase in the
Software Development Life Cycle (SDLC) that ensures the software
remains functional and relevant over time.
Management of Maintenance
Managing software maintenance involves:
Planning: Estimating time, cost, and resources required for
maintenance activities.
Documentation: Keeping detailed records of changes and system
modifications.
Version Control: Managing changes to software versions.
Change Control Process: Reviewing and approving requested
changes.
Team Organization: Assigning roles such as maintenance engineers,
testers, and analysts.
Monitoring & Evaluation: Tracking maintenance activities and
ensuring objectives are met.
The Maintenance Process
The typical steps in the software maintenance process are:
1. Identification of the Requirement: Request for change is received
from users or developers.
2. Analysis: Understand the impact of the requested change.
3. Design: Plan the change (code, UI, database, etc.).
4. Implementation: Make the required modifications.
5. Testing: Verify that changes don’t break existing functionality.
6. Documentation Update: Record the change details.
7. Release: Deploy the updated software.
Types of Software Maintenance
1. Corrective Maintenance
Fixes bugs or errors found after the software is released.
o
Example: Patching security vulnerabilities.
o
2. Adaptive Maintenance
o Modifies software to adapt to changes in environment (OS
updates, new hardware, etc.).
o Example: Updating software to run on a new operating system.
3. Perceptive Maintenance
o Enhances or improves performance, maintainability, or other
attributes.
o Example: Improving UI design or increasing system speed.
4. Preventive Maintenance
o Prevents potential issues by making the software more robust
and fault-tolerant.
o Example: Refactoring code to reduce complexity and improve
readability.
Maintenance Tools and Techniques
Tools
Version Control Systems: Git, SVN
Bug Tracking Tools: Jira, Bugzilla
Automated Testing Tools: Selenium, JUnit
Performance Monitoring Tools: New Relic, AppDynamics
IDE & Debugging Tools: Eclipse, Visual Studio
Techniques
Reverse Engineering: Analyzing software to identify problems or
understand code structure.
Code Refactoring: Improving internal code structure without altering
external behavior.
Impact Analysis: Evaluating the impact of proposed changes before
implementation.
Regression Testing: Ensuring new changes don't affect existing
function