Unit - 1software Testing
Unit - 1software Testing
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 (SQA) encompasses
SQA process
specific quality assurance and quality control tasks (including technical reviews and a
multitiered testing strategy)
effective software engineering practice (methods and tools)
control of all software work products and the changes made to them
a procedure to ensure compliance with software development standards (when applicable)
measurement and reporting mechanisms
Elements Of Software Quality Assurance:
1. Standards: The IEEE, ISO, and other standards organizations have produced a broad array of software engineering
standards and related documents. The job of SQA is to ensure that standards that have been adopted are followed an all
work products conform to them.
2. Reviews and audits: Technical reviews are a quality control activity performed by software engineers for software
engineers. Their intent is to uncover errors. Audits are a type of review performed by SQA personnel(people employed
in an organization) with the intent of ensuring that quality guidelines are being followed for software engineering work.
3. Testing: Software testing is a quality control function that has one primary goal—to find errors. The job of SQA is to
ensure that testing is properly planned and efficiently conducted for primary goal of software.
4. Error/defect collection and analysis: SQA collects and analyzes error and defect data to better understand how errors
are introduced and what software engineering activities are best suited to eliminating them.
5. Change management: SQA ensures that adequate change management practices have been instituted.
6. Education: Every software organization wants to improve its software engineering practices. A key contributor to
improvement is education of software engineers, their managers, and other stakeholders. The SQA organization takes
the lead in software process improvement which is key proponent and sponsor of educational programs.
7. Security management: SQA ensures that appropriate process and technology are used to achieve software security.
8. Safety: SQA may be responsible for assessing the impact of software failure and for initiating those steps required to
reduce risk.
9. Risk management: The SQA organization ensures that risk management activities are properly conducted and that
risk-related contingency plans have been established.
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:
1. A quality management approach
2. Formal technical reviews
3. Multi testing strategy
4. Effective software engineering technology
5. Measurement and reporting mechanism
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.
Software quality product is defined in term of its fitness of purpose. That is, a quality
product does precisely what the users want it to do. For software products, the
fitness of use is generally explained in terms of satisfaction of the requirements laid
down in the SRS document. Although "fitness of purpose" is a satisfactory
interpretation of quality for many devices such as a car, a table fan, a grinding
machine, etc.for software products, "fitness of purpose" is not a wholly satisfactory
definition of quality.
Example: Consider a functionally correct software product. That is, it performs all
tasks as specified in the SRS document. But, has an almost unusable user interface.
Even though it may be functionally right, we cannot consider it to be a quality
product.
The modern view of a quality associated with a software product several quality
methods such as the following:
Process quality –
This includes all aspects related to the software process, for example, development time, productivity, and
quality. The intention is to develop new methods and techniques that can support software development
organizations in their aim to have a better software process. The underlying assumption of the research is that
the quality of the process impacts the quality of the software product, and thus it is important to understand the
relationship between the process and the product.
The following areas are of special interest:
Open source in software development - both how open source components can be included and how
traditional software can be transformed to open source
Software development for medical devices - with a focus on risk management
Simulation of software development processes - analysis of how this kind of models are build, and how
they can be used for analysis, understanding, communication, and training
Dependable IT systems - with a focus on the relation between crisis management and IT management
in governmental organizations
Process, in the software engineering domain, is the set of methods, practices, standards,
documents, activities, policies, and procedures that software engineers use to develop and
maintain a software system and its associated artifacts, such as project and test plans,
design documents, code, and manuals.
All the software process improvement models that have had wide acceptance in
industry are high-level models, in the sense that they focus on the software process as a
whole and do not offer adequate support to evaluate and improve specific software
development sub processes such as design and testing. Most software engineers would agree
that testing is a vital component of a quality software process, and is one of the most
challenging and costly activities carried out during software development and maintenance.
The software development process, like most engineering artifacts, must be engineered.
That is, it must be designed, implemented, evaluated, and maintained. As in other
engineering disciplines, a software development process must evolve in a consistent and
predictable manner, and the best technical and managerial practices must be integrated in a
systematic way. These models allow an organization to evaluate its current software process
and to capture an understanding of its state. Strong support for incremental process
improvement is provided by the models, consistent with historical process evolution and the
application of quality principles. The models have received much attention from industry,
and resources have been invested in process improvement efforts with many successes
recorded.
What is a QA model?
A QA model can provide many advantages to your practice, such as increasing the
quality and consistency of services and outcomes, which can lead to higher customer
satisfaction, loyalty, and retention. It can also help improve efficiency and
effectiveness, reducing costs, waste, and errors. Additionally, it can boost credibility
and reputation, potentially attracting more customers and referrals, as well as
complying with industry standards and regulations. Furthermore, it can support
innovation and growth, allowing you to adapt to changing customer needs and
explore new opportunities. Finally, it can empower staff and stakeholders, improving
their motivation, engagement, collaboration, and performance.
Models of quality assurance are the methods and techniques used to ensure
that products or services meet a certain standard of quality. They can help
organisations ensure that all standards are met before any product or service is
released into the marketplace.
Each of these models has different strengths and weaknesses that must be
considered when choosing the proper model for a specific situation.
Six Sigma can help you identify problems quickly, make improvements and track
progress. It also requires that you measure performance to ensure that
improvements are being made. By utilising Six Sigma techniques, businesses can
become more efficient and effective in their operations, leading to improved
customer service and better bottom-line results.
ISO 9000: ISO 9000 is the international standard for quality management. It is a
set of principles, processes and guidelines that an organisation can use to help
them provide quality products or services. This model provides a framework for
organisations to ensure consistent product or service delivery and customer
satisfaction.
ISO 9000 focuses on four key components:
Customer focus
Leadership
Process approach
Continual improvement
By following the principles of ISO 9000, organisations can create a robust quality
management system and achieve their desired quality goals. This system also
ensures that the organisation follows specific processes to consistently deliver
products or services.
CMM CMM was developed by the Software Engineering Institute (SEI) at Carnegie Mellon University
in 1987.
It is not a software process model. It is a framework that is used to analyze the approach and
techniques followed by any organization to develop software products.
It also provides guidelines to further enhance the maturity of the process used to develop those
software products.
It is based on profound feedback and development practices adopted by the most successful
organizations worldwide.
This model describes a strategy for software process improvement that should be followed by
moving through 5 different levels.
Each level of maturity shows a process capability level. All the levels except level-1 are further
described by Key Process Areas (KPA’s).
Level 1: Initial Ad hoc activities characterize a software development organization at this level. Very
few or no processes are described and followed. Since software production processes are not
limited, different engineers follow their process and as a result, development efforts become chaotic.
Therefore, it is also called a chaotic level.
Level 2: Repeatable At this level, the fundamental project management practices like tracking cost
and schedule are established. Size and cost estimation methods, like function point analysis,
COCOMO, etc. are used.
Level 3: Defined At this level, the methods for both management and development activities are
defined and documented. There is a common organizationwide understanding of operations, roles,
and responsibilities. The ways through defined, the process and product qualities are not measured.
ISO 9000 goals at achieving this level.
Level 4: Managed At this level, the focus is on software metrics. Two kinds of metrics are composed.
Product metrics measure the features of the product being developed, such as its size, reliability,
time complexity, understandability, etc. Process metrics follow the effectiveness of the process being
used, such as average defect correction time, productivity, the average number of defects found per
hour inspection, the average number of failures detected during testing per LOC, etc. The software
process and product quality are measured, and quantitative quality requirements for the product are
met. Various tools like Pareto charts, fishbone diagrams, etc. are used to measure the product and
process quality. The process metrics are used to analyze if a project performed satisfactorily. Thus,
the outcome of process measurements is used to calculate project performance rather than improve
the process.
Level 5: Optimizing At this phase, process and product metrics are collected. Process and product
measurement data are evaluated for continuous process improvement.
What are the emerging trends and best practices in quality assurance and
inspection?
One of the most important trends in quality assurance and inspection is the adoption
of agile and DevOps methodologies. These approaches focus on delivering value to
customers faster and more frequently, by combining development, testing, and
operations. To do this, quality assurance and inspection teams need to be flexible,
automated, and open to feedback and learning. When it comes to best practices for
quality assurance and inspection in agile and DevOps, some examples include
aligning quality goals with business outcomes and customer needs, utilizing test-
driven development, behavior-driven development, acceptance test-driven
development, automation tools and frameworks for unit testing, integration testing,
regression testing, performance testing, cloud-based and virtualized environments
for testing and deployment, applying continuous integration, continuous delivery,
continuous testing principles, forming cross-functional and self-organizing teams
that share responsibility for quality, as well as incorporating quality reviews and
audits throughout the development lifecycle.
More trends
Now, you might think that we are counteracting the statement given earlier. However, what
we want to say is that achieving the right balance for QA testing is essential. While
automation helps you save much time and achieve better results while handling mammoth
tasks efficiently, manual testing helps evade errors with automated processes.
There are multiple aspects of software testing and quality assurance that are impossible to
handle without manual testing. While automation delivers speed and efficiency, manual
testing brings factors such as user experience, usability, & design.
#3 Data is Crucial
Back when a significant part of the world was offline, data wasn’t as important. However, as
the world is moving faster towards the digital world, data has become very crucial. As per
Statista, the global market revenue forecast for Big Data usage and mining would reach a
whopping 103 billion U.S. dollars by the year 2021.
Latest algorithm frameworks aid in the precise testing procedure. Using multiple tools for
collecting data is a fantastic trend that you can look forward to.
The teams engaged in software quality assurance testing are in search of ways to efficiently
process the data into appropriate insights while validating them against multiple criteria that
includes:
1. Duplication
2. Consistency
3. Validity
4. Accuracy
5. Completeness
#4 IoT-Based Testing
A major part of the software quality audit is to make sure that different segments of the
system integrate & work in sync perfectly. And IoT is no doubt a revolutionary technology
that helps in the process of software integration.
IoT-driven software testing ensures that all operating systems, communication protocols,
software, & hardware implementations in various devices are completely in sync & ready for
delivery. It brings in a well-connected & efficient smart device that helps defend any threats
or vulnerabilities.
#5 Performance Engineering
Making high-end software is something being chased by all companies. However, achieving
this feat requires a lot to focus on varying elements such as usability, cybersecurity, business
value, & technology stacks.
Balancing this with the UX & market demand can be particularly time-consuming in the long
run. Today, with a team of dedicated software QA testers, you can quickly reduce bugs &
bottlenecks in the early segments of the process.
In simple words, performance engineering serves as a substitute for the performance testing
norms that are primarily focused on the MVPs or finished applications.
#6 Regression Testing
Another unique QA testing variant, regression testing, has been dubbed as a powerful tool
for 2022. This testing procedure is implemented when a potential application change is made
and when the new feature is conjoined.
With this testing practice in place, engineers use it to ensure & check whether old-fashioned
and tested software can perform well after the design changes. This software testing
methodology is exceptionally functional if your design requires frequent and continuous
changes to the application, especially when there are bugs or errors in the main design.