Software Engineering
ESC-501
Day: 32
Date:13.10.2023
Topics to be Covered:
Software Quality Assurance
Learning Objective:
After this lesson students will be able to get a overview of Software Quality Assurance
Course Outcome:
ESC501.CO5 : Develop project schedule and network diagram for different projects.. Creating
(Level VI)
Software Quality Assurance:
Software Quality Assurance (SQA) is simply a way to assure quality in the software.
It is the set of activities which ensure processes, procedures as well as standards are suitable
for the project and implemented correctly.
Software Quality Assurance is a process which works parallel to development of software.
It focuses on improving the process of development of software so that problems can be
prevented before they become a major issue.
Software Quality Assurance is a kind of Umbrella activity that is applied throughout the
software process.
Generally the quality of the software is verified by the third party organization like
international standard organizations.
Software quality assurance focuses on:
software’s portability
software’s usability
software’s reusability
software’s correctness
software’s maintainability
software’s error control
Software Quality Assurance has:
A quality management approach
Formal technical reviews
Multi testing strategy
Effective software engineering technology
Measurement and reporting mechanism
Major Software Quality Assurance Activities:
SQA Management Plan:
Make a plan for how you will carry out the sqa through out the project. Think about which
set of software engineering activities are the best for project. check level of sqa team skills.
Set The Check Points:
SQA team should set checkpoints. Evaluate the performance of the project on the basis of
collected data on different check points.
Multi testing Strategy:
Do not depend on a single testing approach. When you have a lot of testing approaches
available use them.
Major Software Quality Assurance Activities:
Measure Change Impact:
The changes for making the correction of an error sometimes re introduces more errors keep
the measure of impact of change on project. Reset the new change to change check the
compatibility of this fix with whole project.
Manage Good Relations:
In the working environment managing good relations with other teams involved in the
project development is mandatory.
Bad relation of sqa team with programmers team will impact directly and badly on project.
Don’t play politics.
Benefits of Software Quality Assurance (SQA):
SQA produces high quality software.
High quality application saves time and cost.
SQA is beneficial for better reliability.
SQA is beneficial in the condition of no maintenance for a long time.
High quality commercial software increase market share of company.
Improving the process of creating software.
Improves the quality of the software.
It cuts maintenance costs. Get the release right the first time, and your
company can forget about it and move on to the next big thing. Release a
product with chronic issues, and your business bogs down in a costly, time-
consuming, never-ending cycle of repairs.
Disadvantage of SQA: :
There are a number of disadvantages of quality assurance.
Some of them include adding more resources, employing
more workers to help maintain quality and so much more.
Differences between Software Testing and Quality
Assurance:
Software testing and quality assurance (QA) are two related but distinct processes within the
software development life cycle.
Software testing is the process of identifying and verifying that software applications or programs
will meet the user’s requirements
Quality assurance is the process of ensuring that the software meets the set standards of quality.
Both processes are essential for delivering a high-quality product.
Software testing focuses on the evaluation of a product or service to determine if it meets its design
specifications and meets the user’s needs.
Quality Assurance, on the other hand, is a broader term focusing on the overall process of ensuring
that a product or service meets its design specifications and meets the user’s needs.
Quality Assurance is a continuous process that begins during the planning stages of a product or
service and continues through the development, testing, and deployment of the product or service.
Software testing involves creating test plans, writing test cases, and performing manual and
automated tests to ensure the product meets its specified requirements.
Software Testing:
Software testing is the process of executing a program or system with the intent of finding defects or
errors.
It is done to verify the functionality of the software product and to ensure it meets the requirements
and design specifications.
Software testing includes activities such as unit testing, functional testing, integration testing, system
testing, and regression testing.
Software testing is a technical process and involves the execution of tests to check the behavior of the
software.
It is done to identify the bugs and errors in the software and to ensure the software is working
according to the requirements.
Software testing is typically done by software testers who have knowledge and expertise in testing
software applications.
The primary focus of software testing is to identify and fix defects before the software is released to
the market.
Characteristics of Software Testing:
Purpose: The purpose of software testing is to identify any defects or gaps in the software in
order to ensure the quality of the product.
Scope: Software testing is focused on the functionality of the software and uncovering
defects.
Involvement: Software testers are actively involved in the testing process, executing tests,
reporting issues, and verifying fixes.
Techniques: Software testing typically involves the use of automation tools and manual
tests.
Responsibilities: Software testers are responsible for ensuring that the software meets the
quality standards and requirements set out by the stakeholders.
Deliverables: The deliverable of software testing is typically a report that includes a list of
defects, a test summary, and recommendations for improvement.
Advantages of Software Testing:
Enhances Quality: Software testing helps to improve the quality of the software by
identifying the defects in the software and fixing them before the software is released to the
user. This helps to improve the user experience and increases customer satisfaction.
Early Detection: Software testing helps to detect defects early in the development process
which makes it easier to fix them before the software is released. This helps to reduce the
cost of development and also helps to reduce the time to market.
Cost Savings: Software testing helps to identify the bugs in the software and helps to reduce
the cost of development by ensuring that the software is released without any major bugs.
This helps to save the cost of development as well as the cost of maintenance.
Improved User Experience: Software testing helps to ensure that the user experience is
optimized, which makes the product more appealing to users. It also helps to improve
customer satisfaction and loyalty, which can lead to increased sales.
Limitations of Software Testing:
Time: Software testing can take a long time to complete. It can take days or weeks
depending on the complexity of the application and the number of tests that need to be
performed.
Scope: Software testing is limited in scope. It can only test the software that is being tested,
not the entire system. This can lead to problems if other parts of the system are not tested
properly.
Assumptions: Software testing is based on assumptions. If the assumptions are incorrect,
the software may not work correctly.
Complexity: Software testing can be complex and time-consuming. This can lead to delays
in the development process and can be costly.
Application of Software Testing:
Unit Testing: Unit testing is a type of software testing where individual units or components of the
software are tested. A unit is the smallest testable part of any software.
Integration Testing: Integration testing is a type of software testing that verifies the interfaces
between components against a software design.
System Testing: System testing is a type of software testing that verifies the system’s compliance with
specified requirements. This type of testing is often done on a complete, integrated system.
Acceptance Testing: Acceptance testing is a type of software testing that verifies if the system meets
the customer’s requirements.
Performance Testing: Performance testing is a type of software testing that verifies the performance
of a system. It is done to determine the speed, scalability, and stability of a system under a particular
workload.
Security Testing: Security testing is a type of software testing that is done to verify the security of a
system. It is done to ensure that the system is secure and protected against any malicious attacks or
threats.
Quality Assurance:
Quality Assurance (QA) is the process of ensuring that the software product meets the specified quality
standards.
It is a continuous process that involves planning, designing, developing, and testing the software.
QA focuses on the quality of the software product and is done by software engineers and developers.
Its primary goal is to ensure that the software meets the customer’s requirements and is of high
quality.
QA is a process-oriented approach that involves implementing best practices and process
improvements to ensure the quality of the software.
It includes activities such as requirements gathering, design review, code review, unit testing, system
testing, integration testing, and regression testing.
Characteristics of Quality Assurance:
Purpose: The purpose of quality assurance is to ensure that the software meets all the
requirements and is free from any defects.
Scope: Quality assurance is focused on the implementation of processes, procedures, and
standards to ensure the quality of the software.
Involvement: Quality assurance professionals are involved in monitoring the development
process, reviewing documentation, and auditing the product.
Techniques: Quality assurance typically involves the use of automation tools and manual
inspections.
Responsibilities: Quality assurance professionals are responsible for ensuring that the
development process is compliant with industry standards and regulations.
Deliverables: The deliverable of quality assurance is typically a report that includes a list of
non-conformances, a summary of the audit, and recommendations for improvement.
Advantages of Quality Assurance:
Improves Reliability: Quality assurance helps to improve the reliability of the software by ensuring
that the software meets the requirements of the user. This helps to ensure that the software is reliable
and performs as expected.
Increases Customer Satisfaction: Quality assurance helps to improve customer satisfaction by
ensuring that the software meets the customer’s expectations. This helps to ensure that the customer is
satisfied with the software and will continue to use it.
Enhances Usability: Quality assurance helps to improve the usability of the software by ensuring that
the user interface is intuitive and easy to use. This helps to ensure that the user is able to use the
software efficiently and easily.
Increased Productivity: Quality assurance helps to ensure that the product is developed in an efficient
manner. This helps to improve the productivity of the development process and ensures that the
product meets the quality requirements.
Improved Customer Satisfaction: Quality assurance helps to ensure that the product meets the
customer’s requirements and works as expected. This helps to increase customer satisfaction.
Limitations of Quality Assurance:
Cost: Quality assurance can be expensive and time-consuming for a company. The cost of
implementing quality assurance processes can be expensive due to the need for specialized personnel
and expensive tools and equipment.
Human Error: Quality assurance is not immune to human error. If a tester makes a mistake during the
quality assurance process, it can lead to costly mistakes that can be difficult to fix.
Process Limitation: Software testing is an iterative process that requires a lot of time and effort. It is
also difficult to determine the right test cases to be used.
Knowledge Limitation: Software testing requires a certain level of knowledge about the software and
its functionality. It is difficult for testers to understand the complexities of the software without the
required knowledge.
Application of Quality Assurance:
Design and Code Reviews: Design and code reviews are a type of quality assurance that verifies the
design and code of a system. It is done to ensure that the design and code of the system meet the
specified requirements and are of high quality.
Process Auditing: Process auditing is a type of quality assurance that verifies the processes of a
system. It is done to ensure that the processes of the system are efficient and effective.
Automated Testing: Automated testing is a type of quality assurance that verifies the functionality of
a system using automated tools. It is done to ensure that the system is functioning according to the
specified requirements.
Defect Tracking: Defect tracking is a type of quality assurance that tracks and manages the defects in
a system. It is done to ensure that all the defects in the system are identified and resolved.
Configuration Management: Configuration management is a type of quality assurance that verifies
and manages the configuration of a system. It is done to ensure that the system is configured according
to the specified requirements.
Risk Management: Risk management is a type of quality assurance that verifies and manages the
risks associated with a system. It is done to ensure that the system is secure and protected against any
potential risks.
Differences between Software Testing and Quality
Assurance:
Factor Software Testing Quality Assurance
Quality Assurance involves ensuring that the developed
Software Testing involves finding and documenting the
Responsibilities defects in the system.
product meets the customer’s requirements and is of the
desired quality.
Software Testing involves techniques like unit testing, Quality Assurance involves techniques like root cause
Techniques functional testing, integration testing, system testing, etc. analysis, process audits, defect management, etc.
The output of Quality Assurance is the assurance that the
The output of Software Testing is the list of defects
Output identified in the system.
developed product meets the customer’s requirements and
is of the desired quality.
Differences between Software Testing and Quality
Assurance:
Software Testing generally costs more than Quality Quality Assurance generally costs less than Software
Cost Assurance. Testing.
Software Testing generally takes more time than Quality Quality Assurance generally takes less time than Software
Time Assurance. Testing.
Software Testing requires more effort than Quality Quality Assurance requires less effort than Software
Effort Assurance. Testing.
Software Testing is the process of executing a program or
Testing system with the intent of finding errors in it.
Quality Assurance is not a testing process.
Differences between Software Testing and Quality
Assurance:
Quality Assurance involves risk associated with ensuring
Software Testing involves risk associated with finding and
Risk documenting the defects in the system.
that the developed product meets the customer’s
requirements and is of the desired quality.
Quality Assurance involves documenting the process of
Software Testing involves documenting the defects identified
Documentation in the system.
ensuring that the developed product meets the customer’s
requirements and is of the desired quality.
Cost Software Testing is not always cost-effective. Quality Assurance is usually cost-effective.
Effectiveness
Conclusion:
Software Testing is typically focused on identifying and resolving errors or defects in the software,
while Quality Assurance is focused on preventing errors or defects from entering the software.
Software Testing is often done after the software has been developed and Quality Assurance is done
during the development process. Software Testing involves executing the software in a controlled
environment and testing it against scenarios, use cases, or requirements to verify that the software
performs as expected. Quality Assurance involves setting up processes, procedures, and standards to
ensure that software is developed according to industry standards and customer requirements. In
conclusion, software testing and Quality Assurance are both important activities that help ensure that
the product or service meets its design specifications and meets the user’s needs. While software
testing focuses on the evaluation of a product or service, Quality Assurance is a broader term focusing
on the overall process of ensuring quality. Both are essential processes in developing a successful
product or service.
Thank You
Any Question?