Unit 1
Unit 1
Syllabus
Unit No 1: [7 Hours]
Principles of Testing Software development life cycle model: Phases of software project,
Quality, Quality assurance and quality control, Testing, Verification and validation, Process
models to represent various phases, Life cycle models, Software testing life cycle.
Unit No 2: [7 Hours]
White Box Testing (WBT) and Black Box Testing: Static testing, Structural testing, Challenges
in WBT. Black box testing: Black box testing process.
Unit No 3: [7 Hours]
Unit No 4: [8 Hours]
System and Acceptance Testing, Functional Vs non Functional, Functional system testing,
Nonfunctional system testing, Acceptance testing.
Unit No 5: [7 Hours]
Text Books
1. Srinivasan Desikan, Gopalaswamy Ramesh, “Software Testing: Principles and Practices”, Pearson
publication, 2nd edition, 2006.
Reference Books
2. Boris Beizer, “Software Testing Techniques”, 2nd edition, Dreamtech press, 2014
Unit 1
1.1 Principals of testing
3. Early Testing
To find the defect in the software, early test activity shall be started. The defect detected in the
early phases of SDLC will be very less expensive. For better performance of software,
software testing will start at the initial phase i.e. testing will perform at the requirement
analysis phase.
4. Defect Clustering
In a project, a small number of modules can contain most of the defects. The Pareto Principle
for software testing states that 80% of software defects come from 20% of modules.
5. Pesticide Paradox
Repeating the same test cases, again and again, will not find new bugs. So it is necessary to
review the test cases and add or update test cases to find new bugs.
6. Testing is Context-Dependent
The testing approach depends on the context of the software developed. Different types of
software need to perform different types of testing. For example, The testing of the e-
commerce site is different from the testing of the Android application.
Software development life cycle (SDLC) is a structured process that is used to design,
develop, and test good-quality software. SDLC, or software development life cycle, is a
methodology that defines the entire procedure of software development step-by-step. The goal
of the SDLC life cycle model is to deliver high-quality, maintainable software that meets the
user’s requirements. SDLC in software engineering models outlines the plan for each stage so
that each stage of the software development model can perform its task efficiently to deliver
the software at a low cost within a given time frame that meets users requirements.
At this stage, the fundamental development of the product starts. For this, developers use a
specific programming code as per the design in the DDS. Hence, it is important for the coders
to follow the protocols set by the association. Conventional programming tools like compilers,
interpreters, debuggers, etc. are also put into use at this stage. Some popular languages like
C/C++, Python, Java, etc. are put into use as per the software regulations.
1. Waterfall Model
It is the fundamental model of the software development life cycle. This is a very simple
model. The waterfall model is not in practice anymore, but it is the basis for all other SDLC
models. Because of its simple structure, the waterfall model is easier to use and provides a
tangible output. In the waterfall model, once a phase seems to be completed, it cannot be
changed, and due to this less flexible nature, the waterfall model is not in practice anymore.
2. Agile Model
The agile model in SDLC was mainly designed to adapt to changing requests quickly. The
main goal of the Agile model is to facilitate quick project completion. The agile model refers
to a group of development processes. These processes have some similar characteristics but
also possess certain subtle differences among themselves.
What is Scrum?
If we define Scrum in simple terms, then Scrum is a way of managing projects, especially in
software development. It's like a playbook that teams use to work together more effectively.
Instead of doing everything at once, Scrum breaks work into smaller parts called "sprints."
Each sprint focuses on completing a specific piece of the project, allowing teams to adapt and
improve as they go. It's all about teamwork, communication, and getting things done step by
step.
Scrum is a popular framework that is used whenever we want to develop complex
products, Ken Schwaber and Jeff Sutherland are known as the people who developed Scrum.
Scrum Team
Product Owner: Decides what the team should work on and makes sure it meets business
and customer needs.
Scrum Master: Helps the team follow Scrum rules and removes any obstacles they face.
Development Team: A group of people with different skills who work together to build the
product.
Artifacts:
Product Backlog: A list of everything that needs to be done for the product, organized by
priority.
Sprint Backlog: A list of tasks the team plans to complete during the current sprint.
Increment: The finished work at the end of a sprint that could be released to users.
Events:
Sprint: A short, fixed period (usually 1-4 weeks) where the team works on specific tasks
from the sprint backlog.
Sprint Planning: A meeting at the start of the sprint where the team decides what to work
on.
Daily Scrum: A quick daily meeting where the team checks in on progress and plans the
day's work.
Sprint Review: A meeting at the end of the sprint where the team shows what they’ve
accomplished and gets feedback.
Sprint Retrospective: A meeting at the end of the sprint where the team discusses what
went well and what could be improved for the next sprint.
3. Iterative Model
In the Iterative model in SDLC, each cycle results in a semi-developed but deployable
version; with each cycle, some requirements are added to the software, and the final cycle
results in the software with the complete requirement specification.
4. Spiral Model
The spiral model in SDLC is one of the most crucial SDLC models that provides support for
risk handling. It has various spirals in its diagrammatic representation; the number of spirals
depends upon the type of project. Each loop in the spiral structure indicates the Phases of
the Spiral model.
5. V-Shaped Model
The V-shaped model in SDLC is executed in a sequential manner in V-shape. Each stage or
phase of this model is integrated with a testing phase. After every development phase, a testing
phase is associated with it, and the next phase will start once the previous phase is completed,
i.e., development & testing. It is also known as the verification or validation model.
Design :
The product requirements are understood and implemented as they arrive. The complete
modules or at least the part of the modules are integrated and tested. All the modules are run
separately and the defective ones are removed to find the cause. It is a suitable model where
requirements are not well understood and the final release date is not given. In simple, it can be
phased out in 3 points i.e.
1. Integrate each individual’s modules to give a unique integrated overview
2. Test each module separately to identify any error or defects
3. If any error found then separate that module and identify the cause of the error
The stages of the STLC include Test Planning, Test Analysis, Test Design, Test Environment
Setup, Test Execution, Test Closure, and Defect Retesting. Each of these stages includes specific
activities and deliverables that help to ensure that the software is thoroughly tested and meets the
requirements of the end users.
Overall, the STLC is an important process that helps to ensure the quality of software
applications and provides a systematic approach to testing. It allows organizations to release
high-quality software that meets the needs of their customers, ultimately leading to customer
satisfaction and business success.
Characteristics of STLC
STLC is a fundamental part of the Software Development Life Cycle (SDLC) but STLC
consists of only the testing phases.
STLC starts as soon as requirements are defined or software requirement document is shared
by stakeholders.
STLC yields a step-by-step process to ensure quality software.
In the initial stages of STLC, while the software product or the application is being developed,
the testing team analyzes and defines the scope of testing, entry and exit criteria, and also test
cases. It helps to reduce the test cycle time and also enhances product quality. As soon as the
development phase is over, the testing team is ready with test cases and starts the execution. This
helps in finding bugs in the early phase.
1. Requirement Analysis: Requirement Analysis is the first step of the Software Testing Life
Cycle (STLC). In this phase quality assurance team understands the requirements like what is to
be tested. If anything is missing or not understandable then the quality assurance team meets
with the stakeholders to better understand the detailed knowledge of requirements.
The activities that take place during the Requirement Analysis stage include:
Reviewing the software requirements document (SRD) and other related documents
Interviewing stakeholders to gather additional information
Identifying any ambiguities or inconsistencies in the requirements
Identifying any missing or incomplete requirements
Identifying any potential risks or issues that may impact the testing process
Creating a requirement traceability matrix (RTM) to map requirements to test cases
At the end of this stage, the testing team should have a clear understanding of the software
requirements and should have identified any potential issues that may impact the testing process.
This will help to ensure that the testing process is focused on the most important areas of the
software and that the testing team is able to deliver high-quality results.
2. Test Planning: Test Planning is the most efficient phase of the software testing life cycle
where all testing plans are defined. In this phase manager of the testing, team calculates the
estimated effort and cost for the testing work. This phase gets started once the requirement-
gathering phase is completed.
The activities that take place during the Test Planning stage include:
Identifying the testing objectives and scope
Developing a test strategy: selecting the testing methods and techniques that will be used
Identifying the testing environment and resources needed
Identifying the test cases that will be executed and the test data that will be used
Estimating the time and cost required for testing
Identifying the test deliverables and milestones
Assigning roles and responsibilities to the testing team
Reviewing and approving the test plan
At the end of this stage, the testing team should have a detailed plan for the testing activities that
will be performed, and a clear understanding of the testing objectives, scope, and deliverables.
This will help to ensure that the testing process is well-organized and that the testing team is able
to deliver high-quality results.
3. Test Case Development: The test case development phase gets started once the test planning
phase is completed. In this phase testing team notes down the detailed test cases. The testing
team also prepares the required test data for the testing. When the test cases are prepared then
they are reviewed by the quality assurance team.
The activities that take place during the Test Case Development stage include:
Identifying the test cases that will be developed
Writing test cases that are clear, concise, and easy to understand
Creating test data and test scenarios that will be used in the test cases
Identifying the expected results for each test case
Reviewing and validating the test cases
Updating the requirement traceability matrix (RTM) to map requirements to test cases
At the end of this stage, the testing team should have a set of comprehensive and accurate test
cases that provide adequate coverage of the software or application. This will help to ensure that
the testing process is thorough and that any potential issues are identified and addressed before
the software is released.
4. Test Environment Setup: Test environment setup is a vital part of the STLC. Basically, the
test environment decides the conditions on which software is tested. This is independent activity
and can be started along with test case development. In this process, the testing team is not
involved. either the developer or the customer creates the testing environment.
5. Test Execution: After the test case development and test environment setup test execution
phase gets started. In this phase testing team starts executing test cases based on prepared test
cases in the earlier step.
The activities that take place during the test execution stage of the Software Testing Life
Cycle (STLC) include:
Test execution: The test cases and scripts created in the test design stage are run against the
software application to identify any defects or issues.
Defect logging: Any defects or issues that are found during test execution are logged in a
defect tracking system, along with details such as the severity, priority, and description of the
issue.
Test data preparation: Test data is prepared and loaded into the system for test execution
Test environment setup: The necessary hardware, software, and network configurations are
set up for test execution
Test execution: The test cases and scripts are run, and the results are collected and analyzed.
Test result analysis: The results of the test execution are analyzed to determine the
software’s performance and identify any defects or issues.
Defect retesting: Any defects that are identified during test execution are retested to ensure
that they have been fixed correctly.
Test Reporting: Test results are documented and reported to the relevant stakeholders.
It is important to note that test execution is an iterative process and may need to be repeated
multiple times until all identified defects are fixed and the software is deemed fit for release.
6. Test Closure: Test closure is the final stage of the Software Testing Life Cycle (STLC) where
all testing-related activities are completed and documented. The main objective of the test
closure stage is to ensure that all testing-related activities have been completed and that the
software is ready for release.
At the end of the test closure stage, the testing team should have a clear understanding of the
software’s quality and reliability, and any defects or issues that were identified during testing
should have been resolved. The test closure stage also includes documenting the testing process
and any lessons learned so that they can be used to improve future testing processes
Test closure is the final stage of the Software Testing Life Cycle (STLC) where all testing-
related activities are completed and documented.
The main activities that take place during the test closure stage include:
Test summary report: A report is created that summarizes the overall testing process,
including the number of test cases executed, the number of defects found, and the overall
pass/fail rate.
Defect tracking: All defects that were identified during testing are tracked and managed
until they are resolved.
Test environment clean-up: The test environment is cleaned up, and all test data and test
artifacts are archived.
Test closure report: A report is created that documents all the testing-related activities that
took place, including the testing objectives, scope, schedule, and resources used.
Knowledge transfer: Knowledge about the software and testing process is shared with the
rest of the team and any stakeholders who may need to maintain or support the software in
the future.
Feedback and improvements: Feedback from the testing process is collected and used to
improve future testing processes
A typical software project goes through several phases, which can vary slightly depending on the
methodology being used (like Agile, Waterfall, or others). However, the most common phases of
a software project include:
1. Initiation/Planning Phase
Goal: Assess the feasibility of the project from a technical, financial, and operational
perspective.
Key activities:
o Analyzing requirements.
o Identifying potential risks and constraints.
o Deciding on technology stacks, tools, and resources.
o Creating feasibility reports (technical, operational, financial).
3. Design Phase
4. Development/Implementation Phase
Goal: Write the actual code and develop the software based on the design specifications.
Key activities:
o Coding the software components.
o Integrating the code into the system.
o Regular unit testing and code reviews.
o Version control management and collaboration.
5. Testing Phase
6. Deployment Phase
7. Maintenance Phase
Goal: Provide ongoing support and maintenance for the software after it’s deployed.
Key activities:
o Bug fixes and patches.
o Performance improvements.
o Updating the software for new requirements or changing technology.
o User support and handling feedback.
8. Closure Phase
These phases can overlap in modern development practices like Agile, where the process is
iterative and cyclical, but these basic phases form the backbone of most software project
Quality Assurance (QA) and Quality Control (QC) are both crucial concepts in software testing
and are often used interchangeably, but they have distinct roles and purposes.
Goal:
The goal of QA is to ensure that the development and testing processes are designed to
prevent defects from being introduced in the first place.
Key Activities:
QA Examples in Software:
Definition:
Goal:
The goal of QC is to identify and correct defects in the software after it has been
developed, ensuring that the final product is defect-free and works as expected.
Key Activities:
Testing: Running tests (unit tests, integration tests, etc.) to check for defects.
Bug identification: Finding and documenting bugs, errors, or issues.
Regression testing: Ensuring that new code changes don’t introduce new defects into the
existing codebase.
Verification and validation: Verifying that the software matches the requirements and
validating that it meets user needs.
QC Examples in Software:
Unit Testing: Testing individual components of the software to ensure they work
correctly.
Integration Testing: Ensuring that different modules or systems work together as
expected.
System Testing: Testing the entire system to ensure it meets all requirements.
Acceptance Testing: Ensuring the system meets the end users' requirements before
deployment.
Complementary Roles: QA ensures that the process used to create the software is sound
and robust, reducing the likelihood of defects. QC, on the other hand, focuses on testing
and validating the product to ensure the end product is defect-free.
QA Prevents, QC Detects: QA works to prevent defects from occurring in the first place
through better processes, while QC finds defects that slipped through the QA process.