Software Quality and Testing Overview
Software Quality and Testing Overview
Credits: 4
UNIT I
INTRODUCTION TO SOFTWARE QUALITY Ethical Basis for Software Quality – Total Quality
Management Principles – Software Processes and Methodologies – Quality Standards,
Practices & Conventions –Improving Quality with Methodologies –
Structured/Information Engineering – Measuring Customer Satisfaction– Software Quality
Engineering – Defining Quality.
UNIT II
SOFTWARE QUALITY METRICS AND RELIABILITY Writing Software Requirements and
Design Specifications – Analysing Software Documents using Inspections and
Walkthroughs – Software Metrics – Lines of Code, Cyclamate Complexity, Function Points,
Feature Points – Software Cost Estimation.
UNIT III
TEST CASE DESIGN Testing as an Engineering Activity – Testing Fundamentals – Defects –
Strategies and Methods for Black Box Test Case Design – Strategies and Methods for
White-Box Test Case Design – Test Adequacy Criteria – Evaluating Test Adequacy Criteria –
Levels of Testing and different Types of Testing .
UNIT IV
TEST MANAGEMENT Testing and Debugging Goals and Policies – Test Planning – Test Plan
Components
– Test Plan Attachments – Locating Test Items – Reporting Test Results – The Role of
Three Groups in Test Planning and Policy Development – Process and the Engineering.
UNIT V
Suggested Readings:
INTRODUCTION
Quality
• Quality means different thing to different people at different times, place and products.
• For Ex: for some users, quality product is the one which has no or less defect, for some
product could match cost and delivery schedule along with services offered.
• Some defined quality as – quality is fitness for use.
• Quality can be defined as conformance to specifications because software engineering don’t
have to make changes in design & will suit users expectations like less cost, fast delivery & good
service support.
• Quality can also be defined as extent to which customers believe that product meets or needs
& expectations.
• Others believe that quality means delivering products that meet customer standard defined
by customer or some bodies.
Software Quality: The degree to which a component, system, or process meets specified
requirements and/or user/customer needs and expectations.
Key Aspects
1. Good Design: It’s always important to have a good and aesthetic design to users.
2. Reliability: Be it any software it should be able to perform the functionality without
issues.
3. Durability: Durability is a confusing term, in this context, durability means the ability of
the software to work without any issues for a long period of time.
4. Consistency: Software should be able to perform consistently over platform and devices.
5. Maintainability: Bugs associated with any software should be able to capture and fix
quickly and new tasks and enhancement must be added without any trouble.
6. Value for money: customer and companies who make this app should feel that the
money spent on this app has not to waste.
SOFTWARE TESTING
Software testing is a process of executing a program or application with the intent of finding
the software bugs.
It can also be stated as the process of validating and verifying that a software program or
application or product:
Meets the business and technical requirements that guided its design and development
Works as expected
Can be implemented with the same characteristic
3
1. Quality Planning – Defining the quality standards and determining how to achieve them.
2. Quality Control – Inspecting and testing the software to ensure it meets requirements.
3. Process Improvement – Identifying areas for improvement in the development process.
4. Audits and Reviews – Conducting inspections, code reviews, and audits to verify
compliance.
5. Defect Management – Tracking, analyzing, and fixing defects in a structured way.
6. Testing – Includes unit, integration, system, and acceptance testing as part of the QA
strategy.
Quality Control (QC) is a crucial part of quality management focused on fulfilling quality
requirements. It involves the systematic process of identifying, monitoring, and correcting
potential defects or deviations in products or services to ensure they meet established
quality standards and customer requirements.
Teamwork gives employees a chance to collaborate, understand each other's roles, and work
towards quality improvement. Working alone limits their awareness of others' tasks and the
impact of poor-quality output.
Teamwork encourages employees to form action teams, solve problems, and discover
innovative ways to complete tasks.
Principles of TQM
Continual
improvem
ent
Communication. TQM requires every team member to be at their best and to function
as a value-adding member of that team. This means communication and transparency is
a core tenet of successful TQM practices.
Data-driven. TQM doesn’t employ guesswork. Instead, data is leveraged for the
improvement of the organization and decisions are made based on quantifiable facts.
Continual improvement: A large aspect of TQM is continual process improvement.
Continual improvement drives an organization to be both analytical and creative in
finding ways to become more competitive and more effective at
meeting stakeholder expectations.
TQM TOOLS
2. Quality Function Deployment (QFD): QFD is a tool used to translate customer requirements
(or "whats") into appropriate technical requirements (or "hows") for each stage of product
development.
4. Statistical Process Control (SPC): SPC involves using statistical methods to monitor and
control a process. It helps in ensuring that the process operates at its full potential to produce
conforming products.
5. Failure Mode and Effects Analysis (FMEA): This systematic approach evaluates processes to
identify where failures might occur, assess the impact of these failures, and prioritize them
based on their potential effects.
The software process covers all technical and management aspects of software
development.
The development process defines engineering tasks, while the management process focuses
on planning and control to meet cost, schedule, and quality goals effectively.
Development and project management processes are the key to achieving the objectives of
delivering the desired software satisfying the user needs, while ensuring high productivity and
quality.
As development processes generally do not focus on evolution and changes, to
handle them another process called software configuration control process is often
used. The objective of this component process is to primarily deal with managing
change, so that the integrity of the products is not violated despite change
9
What is SDLC?
SDLC is a process followed for a software project, within a software organization. It
consists of a detailed plan describing how to develop, maintain, replace and alter or
enhance specific software. The life cycle defines a methodology for improving the quality of
software and the overall development process.
The following figure is a graphical representation of the various stages of a typical SDLC.
Planning for the quality assurance requirements and identification of the risks associated
with the project is also done in the planning stage. The outcome of the technical feasibility
study is to define the various technical approaches that can be followed to implement the
project successfully with minimum risks.
This DDS is reviewed by all the important stakeholders and based on various parameters as
risk assessment, product robustness, design modularity, budget and time constraints, the
best design approach is selected for the product.
A design approach clearly defines all the architectural modules of the product along with its
communication and data flow representation with the external and third party modules (if
any). The internal design of all the modules of the proposed architecture should be clearly
defined with the minutest of the details in DDS.
Developers must follow the coding guidelines defined by their organization and
programming tools like compilers, interpreters, debuggers, etc. are used to generate the
code. Different high level programming languages such as C, C++, Pascal, Java and PHP are
used for coding. The programming language is chosen with respect to the type of software
being developed.
11
Then based on the feedback, the product may be released as it is or with suggested
enhancements in the targeting market segment. After the product is released in the
market, its maintenance is done for the existing customer base.
3. SDLC Models
There are various software development life cycle models defined and designed which are
followed during the software development process. These models are also referred as
Software Development Process Models". Each process model follows a Series of steps
unique to its type to ensure success in the process of software development.
Following are the most important and popular SDLC models followed in the industry:
1. Waterfall Model
2. Prototyping
3. Iterative Model
4. Agile Model
5. Incremental model
6. The Spiral model
1. Prototyping:
The basic idea in Prototype model is that instead of freezing the requirements before
a design or coding can proceed, a throwaway prototype is built to understand the
requirements.
This prototype is developed based on the currently known requirements. Prototype
model is a software development model. By using this prototype, the client can get
an “actual feel” of the system, since the interactions with prototype can enable the
client to better understand the requirements of the desired system.
Prototyping is an attractive idea for complicated and large systems for which there is
no manual process or existing system to help determining the requirements.
The prototype are usually not complete systems and many of the details are not built
in the prototype. The goal is to provide a system with overall functionality.
In case of some software deliverables, especially the large ones, it is difficult to assess
the effort required at the beginning of the software development life cycle.
There is lack of emphasis on necessary designing and documentation.
Iterative Model
Advantages
Some working functionality can be developed quickly and early in the life cycle.
Results are obtained early and periodically.
Parallel development can be planned
Disadvantages
More resources may be required.
Although cost of change is lesser, but it is not very suitable for changing requirements.
More management attention is required.
Incremental Model
In an Iterative Incremental model, initially, a partial implementation of a total system is
constructed so that it will be in a deliverable state. Increased functionality is added. Defects, if
any, from the prior delivery are fixed and the working product is delivered. The process is
repeated until the entire product development is completed. The repetitions of these processes
are called iterations. At the end of every iteration, a product increment is delivered.
14
Advantages
You can develop prioritized requirements first.
Initial product delivery is faster.
Customers gets important functionality early.
Disadvantages
Requires effective planning of iterations.
Requires efficient design to ensure inclusion of the required functionality and
provision for changes later.
4. Software Quality
Quality refers to any measurable characteristics such as correctness, maintainability,
portability, testability, usability, reliability, efficiency, integrity, reusability and
interoperability.
Five views
1. Transcendental view
2. User’s view
3. Manufacturing view
4. Product view
5. Value-based view
5. Software Standards
It is a standard protocol, or other common format of a document, file or data transfer
accepted and used by one or more software developers while working on one or more than
one computer program.
16
6. Quality Practices
The basic practices of Quality
a) Functional Specification
b) Reviews and Inspections
c) Formal entry and exit criteria
d) Functional test – variations
e) Mali– platform testing
f) Internal Betas
g) Automated test execution
h) Beta programs
i) Nightly Builds
7. Quality Conventions
Quality Conventions refer to standardized coding guidelines that promote consistency,
readability, and maintainability in software development.
They cover aspects like file structure, indentation, comments, naming rules, and best
practices.
Following these conventions improves code quality and simplifies collaboration and
maintenance.
They may be formal (team/company standards) or informal (personal coding habits).
Improving Quality with Methodologies
1. Test Often and Early: Emphasizes the importance of early and frequent testing to
prevent issues from escalating and becoming more expensive to fix. Early automation
of basic UI tests is suggested.
2. Implement Quality Controls: Suggests that testers and developers should work
together from the start, using quality controls to ensure standards are met
throughout the development process.
3. Promote Innovation: Encourages thinking outside the box and automating repetitive
processes to save time and resources.
4. Incorporate Management Tools: Recommends using effective quality management
tools (like defect tracking software, issue tracking tools, and test automation tools) to
enhance transparency and manage day-to-day operations. Stakeholder are only
17
concerned about their product and its quality as they expect companies to do
whatever it takes to meet the quality standards.
5. Employee Training: Highlights the need for continuous professional training and skills
upgrading to keep pace with technological advancements.
6. Error Management and Analysis: Advocates for a structured approach to tracking
issues and managing risk, using tools like risk registers and defect tracking software.
7. Review, Revise, and Remember
Review: Testers should continually review the code to ensure that quality standards
are being met.
Revise: Analyse the software process to identify what worked well and what needs
improvement. Focus on areas where innovation can enhance the process.
Remember: Document what worked well and what didn’t. Learn from both successes
and failures to continuously improve future projects.
IE Techniques
1. Entity Analysis: Identifies and defines all the entities (things) that an organization
needs to store data about.
2. Process Analysis: Examines the processes within an organization, detailing the flow
of information and how processes interact.
3. Activity Cycle Analysis: Analyses the cycles of activities within business processes,
focusing on how different elements interact and trigger subsequent activities.
4. Entity Life History Analysis: Studies the life cycle of significant entities within an
organization to ensure all important states and transitions are captured.
5. Matrix Analysis: Defines the relationships and dependencies between data objects
and activities.
6. State Transition Analysis: Maps out the states and transitions of a system to design
automated business processes.
7. Data Normalization: Ensures that databases are designed efficiently and accurately
by organizing data to reduce redundancy.
a) In-App Surveys:
Customers often tend to ignore such surveys unless they are caught in the action. The best
way to get honest feedback is while they are availing of your services on your app. Initiate a
post-purc hase or post-service survey. The response rate is definitely higher and the
feedback is most likely to be honest.
b) Post -Call Surveys:
The best feedback is received as soon as the interaction gets over. CSAT surveys can be
initiated as soon as the call gets over. The caller can provide feedback by just pressing a key,
which is automatically rolled up to the supervisor in the CSAT report.
c) Email Surveys:
These surveys are for long-time customers who have made repeat purchases. Email them a
form-based study with insightful questions. Keep those questions relevant to the customer’s
goal, for better engagement. Whatever feedback you get is bound to be valuable.
d) Voluntary Feedback:
Sometimes customers tend to provide feedback without any nudge from your end. This can
be for various reasons. Either they had a bad experience or an extremely good experience or
they want to let you know. However, an automated response often repels them from further
engagement.
2. Customer Satisfaction Score:
The customer satisfaction score or the CSAT score is a universal metric used to rate a
customer's recent interaction with the customer service team. The parameter ranges from 1-
5, where the lowest number denotes highly unsatisfied, and the highest number indicates
highly satisfied. The more positive feedback results in a higher CSAT score.
3. Net Promoter Score:
20
The Net Promoter Score (NPS) is a metric used to gauge customer loyalty and satisfaction. It
is calculated based on responses to a single question: “How likely are you to recommend
our product/service to a friend or colleague?” Respondents rate their likelihood on a scale
from 0 to 10.
Here’s how it works:
Promoters (score 9-10): These are your most enthusiastic and loyal customers.
Passives (score 7-8): These customers are satisfied but not overly enthusiastic.
Detractors (score 0-6): These customers are unhappy and could potentially harm
your brand through negative word-of-mouth.
4. Customer Effort Score:
Customer Effort Score (CES): A metric that measures how easy it is for customers to
interact with a company. Lower effort leads to higher customer loyalty.
Customers are typically asked to rate their experience on a scale from “very easy”
to “very difficult.”
The score is calculated based on the average rating, with lower scores indicating
less effort and higher scores indicating more effort.
5. Web-Analytics:
Analytics is a data-driven metric that works without any direct involvement of the customer.
Web-analytics crawls your website traffic actively, reads the sales funnel, understands the
customer behaviour, and predicts future conversions.
6. Social Media Metrics:
Customers are more vocal on the social media, today. They flaunt their purchases online
while dissing the brands who dissatisfy them. Social media is a two-way word. Keeping that
in mind, it can be used to understand what the customers are saying about your product.
Most social media platforms come with a business account facility that provide an analytics
dashboard. Observe your audience and focus on their comments, on their
recommendations.
Software Quality Engineering
Definition:
Software Quality Engineering (SQE) is the integration of quality checks throughout the
software development lifecycle. It ensures teams continuously test and improve quality, not
just at the end stages.
Purpose:
SQE focuses on embedding quality into the development process by designing effective
procedures and improving quality assurance efficiency.
1. Peer Review:
Developers review each other’s code to catch errors early and share improvements. This
boosts learning and overall code quality.
2. Code Analysis:
Quality engineers use real-time tools within the coding environment to ensure code meets
quality standards and prevent defects early.
3. Testing:
Functional Testing: Verifies UI elements, core functions, menus, and installation
processes meet required protocols.
Performance Testing: Assesses software speed under various conditions to ensure it
meets user expectations.
9. Testability: Evaluates how easily the software can be tested to ensure it meets its
requirements1.
10. Reusability: Assesses whether components of the software can be used in other
applications2.