1. Apeejay School of Management, Dwarka, New Delhi
Guest Lecture on
Software Quality Management
Abhishek Prasoon
Chief Scrum Master, Coforge
18th January 2024
1
@Abhishek Prasoon
2. Abhishek Prasoon (MCA, PGDM)
• 18+ years of experience in IT industry. Have been working
with companies like NIIT, HCL, Mastek and Coforge
• 25+ IT Industry Certifications
• Winner NEXT 100 and Innovative CIO Award
• Author: The Forefront Manager and The Infallible Weapons
• Published 120+ articles on Technology and Management
• Trained 500+ Executives
• Orator on various platforms, avid traveler and Yoga
enthusiast
LinkedIn - https://www.linkedin.com/in/abhishekprasoon/
2
@Abhishek Prasoon
3. Agenda
3
Why is Software Quality Management? Software Testing Life Cycle (STLC) Career Opportunity in Testing
Project Management Aspect Testing Requirements Certifications
Predictive Testing Types of Software Testing Q&A
Agile Testing Emerging Trends in Software Testing
Cost of Quality Testing Tools
Test Artifacts Testing Documents
Software Testing Metrices
@Abhishek Prasoon
5. Why is Software Quality Management Required?
• China Airlines Airbus A300 crashed due to a software bug on April 26, 1994, killing 264
innocents live
• Nissan cars recalled over 1 million cars from the market due to software failure in the
airbag sensory detectors. There has been reported two accident due to this software
failure.
• In 1985, Canada’s Therac-25 radiation therapy machine malfunctioned due to software
bug and delivered lethal radiation doses to patients, leaving 3 people dead and critically
injuring 3 others.
• Starbucks was forced to close about 60 percent of stores in the U.S and Canada due to
software failure in its POS system. At one point, the store served coffee for free as they
were unable to process the transaction.
• In April of 1999, a software bug caused the failure of a $1.2 billion military satellite launch,
the costliest accident in history
5
@Abhishek Prasoon
6. Why is Software Quality Management Required?
Customer Satisfaction Reduced Costs Productivity and Efficiency Brand Reputation
Risk Mitigation Competitive Advantage User Experience Continuous Improvement
Team Morale Legal Compliance Return on Investment (ROI) Project Success
6
@Abhishek Prasoon
8. Software Quality Management
Software Quality Management (SQM) involves the systematic process of defining, implementing, assessing, and refining
quality standards and processes throughout the software development life cycle. The goal is to ensure that the software
product meets or exceeds the specified quality requirements.
Two Aspects of Software Quality Management
Project Management Aspect – Predictive / Agile STLC Aspect
8
@Abhishek Prasoon
9. Predictive Approach - Project Quality Management (PMBOK6)
Project Quality Management is a Knowledge Area of Project Management
Initiating Planning Executing Monitoring and controlling Closing
Plan Quality Management Manage Quality Control Quality
The process of identifying
quality requirements and/or
standards for the project and
its deliverables and
documenting how the project
will demonstrate compliance
with quality requirements
and/or standards.
The process of translating
the quality management
plan into executable quality
activities
The process of monitoring and
recording the results of executing
the quality management activities
to assess performance and ensure
the project outputs are complete,
correct, and meet customer
expectations.
Do the right things Do things right Done the right things right
9
@Abhishek Prasoon
10. Agile
• Agile is an iterative approach to project management and software development that helps teams deliver
value to their customers faster and with fewer headaches.
• Drawbacks of Waterfall Model
10
Requirement
Analysis
System Design
Development
Testing
Deployment
Maintenance
@Abhishek Prasoon
11. What is Agile Testing?
Criteria Predictive (Waterfall) Testing Agile Testing
Characteristics Testing happens at the end of the development
cycle. This design structure is sequential and
relatively rigid, as little can be changed during the
project.
Agile is an incremental and flexible approach. Testing
is performed in parallel with the development,
allowing room for change.
Planning Comprehensive Planning - Extensive planning is
done at the beginning of the project, and changes
are discouraged once the project is underway.
Adaptive Planning: Planning is done iteratively
throughout the project, with the ability to adapt and
adjust priorities based on changing needs.
Tester’s Role Testers work independently with developers.
Everyone’s roles are straightforward and strictly
defined. Quality assurance is at the hands of
testers.
Testers work alongside developers toward the end
goal of delivering the best software possible to
customers.
Approach The waterfall model manifests a project mindset
that prioritizes finishing the project.
Agile is all about the product and customers. Teams
receive continuous feedback and adapt to satisfy
customers’ demands.
Process Acceptance and regression testing are performed
only at the end.
Acceptance and regression testing is implemented
repeatedly after each iteration.
Documentation Emphasis on Documentation Collaboration over Documentation
Application Most fit for small and fixed-price projects with a
stable development environment as it is easier to
manage risk and less costly.
More efficient for larger projects or non-fixed
contracts. 11
@Abhishek Prasoon
12. There are over a dozen agile methodologies. No single right way
can be tailored once a team is experienced.
• Scrum
• Extreme Programming (XP)
• Kanban
• Lean product development
• Feature-driven development (FDD)
• Test-driven development (TDD)
• Acceptance Test-Driven Development (ATDD)
• Behaviour-Driven Development (BDD)
• Dynamic Systems Development Method (DSDM)
• Crystal
Agile Methodologies
12
@Abhishek Prasoon
13. 13
Test-driven development (TDD)
According to Wikipedia, Test-driven development
is a software development process that relies on
the repetition of a very short development cycle:
requirements are turned into very specific test
cases, then the code is improved so that the tests
pass. The following sequence is based on the book
“Test-Driven Development by Example”:
1. Add a test
2. Run all tests and see if the new test fails
3. Write the code
4. Run tests
5. Refactor code
6. Repeat
@Abhishek Prasoon
14. 14
Acceptance Test-Driven Development (ATDD)
The customer, tester, and developer will meet to gather
information in acceptance taste driven development.
They will discuss all three roles and come up with the
definition for an acceptance test. They often referred to as
the three amigos, representing the three perspectives of
customer:
Business – What problem are we trying to solve?
Development – How might we build a solution to solve
that problem?
Testing – What about this, what could possibly happen?
ATDD is all about the user’s perspective of the product and
how it functions. These result tests are often automated and
written first. They will often fail at the start, followed by
improvements being made around those initial results,
gradually enhancing the product.
@Abhishek Prasoon
15. 15
Behaviour-driven development (BDD)
Behaviour-driven development is an extension of test-driven
development. Behaviour-driven development is an Agile software
development process that encourages collaboration among
developers, QA and non-technical or business participants in a
software project.
Cucumber
Cucumber is an open-source software testing tool that supports
BBD. (Behavior-Driven Development). It works with Gherkin
because the Gherkin syntax structures plain text so that it can be
read by the tool. Cucumber reads Gherkin tests and validates that
the code performs as it should.
Gherkin
Gherkin is a plain-text language with a simple structure. It is
designed to be easy to learn by non-programmers yet structured
enough to allow concise description of test scenarios and
examples to illustrate business rules in most real-world domains.
@Abhishek Prasoon
16. Two Aspects of Software Quality Management
Project Management Aspect – Predictive / Agile STLC Aspect
16
@Abhishek Prasoon
18. Latest Technology Trends
AI/ML RPA Cloud Blockchain Data Projects
Web Apps Mobility Desktop Apps IoT DevOps
SAAS Implementation 3rd Party Integration Migration Test Automation Low Code No Code
Virtual Reality Metaverse Cyber Security Robotics Quantum Computing
Domain / Functional Knowledge
Banking Insurance Finance Retail Healthcare
Government Supply chain Travel Education Manufacturing
Telcom Energy Hospitality Media Defence
Real Estate Agriculture Automotive Biotech Legal Services
1. Requirement Analysis
18
@Abhishek Prasoon
19. Functional Requirements Specify the desired behavior and functionalities of the software. Testing these requirements
involves verifying that the software performs its intended functions accurately.
NFR’s Performance Requirements , Security Requirements , Usability Requirements
Compatibility
Requirements
Specify the platforms, browsers, devices, and environments the software must be compatible
with. Testing checks whether the software functions correctly across these different contexts.
Reliability and Availability
Requirements
Define the software's reliability, availability, and fault tolerance. Testing aims to ensure the
software's stability and its ability to recover from failures.
Scalability Requirements Describe how well the software can handle increased load and user interactions. Scalability
testing assesses the software's performance as usage scales.
Regulatory and
Compliance Requirements
Identify legal and regulatory standards that the software must adhere to. Compliance testing
ensures that the software complies with these standards.
Data Requirements Specify the data formats, structures, and constraints the software must support. Testing involves
validating data input, output, and storage.
Testability Requirements Describe attributes that facilitate testing, such as the availability of testing tools, logging
mechanisms, and support for automated testing.
Acceptance Criteria Criteria that define when a particular requirement is considered satisfactorily implemented.
Testing is conducted to confirm that the acceptance criteria are met.
Performance Metrics Define specific metrics for performance, such as response time, latency, and throughput, against
which the software's performance is evaluated.
Documentation
Requirements
Specify the level of documentation needed for testing activities, including test plans, test cases,
and test scripts.
1. Testing Requirements in Software Projects
19
@Abhishek Prasoon
21. Defining objectives and scope What are you trying to achieve with your testing?
Are you focusing on functionality, performance, security, or something else?
What features or modules will be included in the testing scope, and what will be
excluded?
Choosing a testing strategy What types of testing will you be doing (e.g., unit testing, integration testing, etc.)
What testing tools and techniques will you be using?
Identifying resources Who will be involved in the testing process (e.g., testers, developers etc.)?
What hardware, software, and other resources will be needed?
Creating test cases What specific scenarios and conditions will you be testing?
What are the expected outcomes for each test case?
Estimating effort and scheduling How much time and effort will be required for testing?
What is the testing schedule, and what are the key milestones?
Defining risk mitigation strategies What are the potential risks associated with testing, and how will you mitigate them?
Communication and reporting How will you communicate the testing plan to stakeholders?
How will you report on the progress and results of testing?
2. Test Planning
Test planning is the process of outlining the steps and resources needed to effectively test a software program or system.
It's like creating a roadmap for testing journey.
21
@Abhishek Prasoon
30. Unit Testing Testing individual units or components of a software to ensure they work as intended.
Integration Testing Verifying the interactions between integrated components or systems to identify issues in their
interfaces
Functional Testing Validating that the software functions according to specified requirements.
Regression Testing Ensuring that new code changes do not adversely affect existing functionalities.
Performance Testing Assessing the software's responsiveness, speed, and overall performance under different conditions.
Security Testing Identifying vulnerabilities and weaknesses in the software to prevent unauthorized access or data
breaches
Usability Testing Evaluating the software's user interface and overall user experience.
Compatibility Testing Checking the software's compatibility with different operating systems, browsers, and devices.
Load Testing Assessing the software's ability to handle a specific load or number of concurrent users.
Stress Testing Pushing the software beyond its normal operational capacity to identify its breaking points.
Acceptance Testing Verifying that the software meets the acceptance criteria and is ready for deployment.
Smoke Testing A preliminary test to ensure that the critical functionalities of a software are working.
Alpha Testing Conducted by the internal development team before releasing the software to a few external users.
Beta Testing Involving a limited number of external users to provide feedback before the final release.
Exploratory Testing Testers explore the software, executing test cases without predefined scripts to discover defects.
White Box Testing Examining the internal logic and structure of the software code.
Black Box Testing Testing the software’s functionality without knowledge of its internal code.
UAT Ensuring the software meets end-users’ expectations and requirements.
Types of Software Testing
30
@Abhishek Prasoon
32. Why Companies Are Focusing On Test Automation
• Automated Testing Saves Time and Money
• Vastly Increases Your Test Coverage
• Automated Testing Helps Developers and Testers
• Increases Accuracy and Reliability that Increases Confidence
• Reduce the Feedback Cycle
• Reusability of Test Suite
• Quickly Check the Stability of Your Build
32
@Abhishek Prasoon
35. Test Automation Tools Selenium: A widely used open-source tool for automating web browsers.
Appium: An open-source tool for automating mobile applications on Android and iOS platforms.
JUnit: Frameworks for Java that facilitate the creation and execution of automated tests.
Cypress: A JavaScript-based end-to-end testing framework for web applications.
Performance Testing
Tools
Apache JMeter: An open-source tool for performance testing and load testing.
LoadRunner: A performance testing tool from Micro Focus for simulating virtual users and
measuring system performance.
Security Testing Tools OWASP ZAP: An open-source security testing tool for finding vulnerabilities in web applications.
Burp Suite: A platform for security testing of web applications.
Nessus: A vulnerability scanner that identifies security issues in networks and systems.
Test Management Tools Jira: A widely used project management and issue tracking tool that can be customized for test
management.
TestRail: A web-based test case management tool for managing and tracking software testing
efforts.
CI/CD Tool Jenkins: An open-source automation server used for building, testing, and deploying software.
GitLab CI/CD: Part of the GitLab platform, providing CI/CD capabilities for projects.
API Testing Tools Postman: A popular API testing tool that simplifies the process of developing and testing APIs.
Example of some Testing Tools
35
@Abhishek Prasoon
36. Evolving Role of Artificial Intelligence in Quality Assurance
36
• AI/ML can help prioritize the test cases
• 60% of the test cases in an enterprise test case
portfolio are redundant, AI identifies such test cases
and eliminates the duplicates
• AI/ML automate the maintenance of test automation
code
• AI has self-healing automation properties
• Quickly Check the Stability of Your Build
@Abhishek Prasoon
37. Security Testing
Common IT Security Threats
• Data Breach - Phishing, Spear Phishing, Tech Support Scams, SQL Injection, and Malware
• Dictionary attack (Brute Force Attacks)
• Disruptive Attacks - Distributed Denial of Service (DDoS)
• Other Attacks - Coin miners, Rootkits
• Virus, Trojans and Worms
• Ransomware
37
@Abhishek Prasoon
40. Performance Testing
40
The process of testing to determine the performance of a
software product
@Abhishek Prasoon
41. 41
Exploratory Testing
Exploratory testing relies on the tester’s autonomy, skill, and
creativity in trying to discover issues and unexpected behavior.
A team will interweave exploratory testing to help find edge cases
(problems that only occur in extreme conditions), system
boundaries, and unanticipated behavior.
Exploratory testing increases test coverage and reduces the risk that
a defect won’t be detected.
@Abhishek Prasoon
42. Usability Testing
42
@Abhishek Prasoon
The goal of this testing is to diagnose how easy it is to use the system
and help uncover where there are problems that might need redesign
or changes. This involves observing users or performing post-test
interviews.
43. Test Plan An overarching document that outlines the overall testing strategy, approach, resources, schedule,
and deliverables for a testing project
Test Cases Detailed descriptions of specific test scenarios, including inputs, expected outcomes, and execution
steps. Test cases provide a systematic way to verify that the software functions correctly.
Test Scripts Automated test cases written in a scripting language for execution by testing tools. These scripts
automate repetitive and time-consuming testing tasks.
Test Design
Specification
Describes the testing objectives, testing scope, and the testing architecture or framework.
Traceability Matrix A document that traces and links requirements to test cases, ensuring comprehensive test coverage
and alignment with project goals.
Test Data Data sets used in testing to ensure that the software handles a variety of inputs and conditions.
Defect Report Documents issues or defects found during testing, including details on how to reproduce the issue,
its severity, and steps to mitigate or fix it.
Test Summary Report Summarizes the testing activities, including test results, overall quality assessment, and any
outstanding issues. It is often created at the end of a testing phase or the entire testing process.
Test Environment Setup
Document
Provides instructions on how to set up the testing environment, including hardware, software, and
network configurations.
Test Execution Log Records the actual test execution, documenting test results, any deviations from expected
outcomes, and comments on the testing process.
Performance Test Plan
and Results
If performance testing is conducted, specific plans and reports detailing how the software performs
under various conditions.
Testing Documents
43
@Abhishek Prasoon
45. Software Testing Metrices
"You can't manage what you can't measure." - Peter Drucker
Testing metrics are quantifiable measurements used to assess the effectiveness and efficiency of your software testing
process. They provide valuable insights into various aspects of your testing efforts, enabling you to track progress,
identify areas for improvement, and make informed decisions.
Test Case Coverage % Measures the percentage of code, features, or requirements covered by your test cases. Higher
coverage indicates more comprehensive testing.
Defect Density Measures the number of defects found per unit of functionality or effort (e.g., defects per
thousand lines of code). Lower density indicates better quality.
Defect Escape Rate Measures the percentage of defects that make it to production despite testing. Lower rate
indicates better defect detection and prevention.
Test Execution Time Measures the total time it takes to execute all test cases. Useful for tracking efficiency and
identifying bottlenecks.
Cost of Quality (COQ) Measures the total costs associated with achieving software quality, including testing efforts
and defect fixing. Lower COQ indicates better efficiency.
Defect cycle time Defect cycle time is the period between the time the defect was introduced and the time it was
fixed.
Defect Fix Rate Measures the percentage of reported defects that are fixed within a specified timeframe.
Higher rate indicates faster resolution and reduced impact.
45
@Abhishek Prasoon
46. 46
Defects
We’ve seen that because of the cost of change curve, it is advantageous to catch and fix defects as quickly as possible to
minimize rework and reduce costs.
Defect cycle time
Defect cycle time is the period between the time the
defect was introduced and the time it was fixed.
To help minimize the cost of fixing defects, some project
teams actively track their average defect cycle time and set
goals for the quick resolution of defects.
In this example, the team’s cycle time threshold is 12
hours.
@Abhishek Prasoon
47. 47
Defect Rates
Unfortunately, no matter how hard we try to identify and prevent defects, there may be an occasional defect that makes it
through all our tests and quality control processes and ends up in the final product, (in software development, these are
called escaped defects.) Defects that are missed by testing are the costliest kinds of defects to fix.
@Abhishek Prasoon
51. Skill Required for Impactful Software Tester?
51
Soft Skills
• Communication skill
• Problem Solving skills
• Ability to work with team
• Time management
• Critical Thinking
• Decision Making
Hard Skills
• Manual Testing
• Automated Testing
• Use of Testing Tools
• Test Process
• Business Mapping
@Abhishek Prasoon