unit 1 (1)
unit 1 (1)
lOMoARcPSD|30 361253
Quality engineering (QE) is a process that applies rigorous quality checks to each stage of product
development. It does this through analysis, development, management, and maintenance of quality
assurance (QA) protocols. QA is often continued after a product has been delivered.
The goal of QE is to ensure the quality of a product from the beginning, minimizing potential
losses caused by defects. QE is different from traditional quality control measures in that it is
present throughout the production process. In traditional systems, quality is only checked in the
final production stages. In comparison, traditional methods are inefficient and can lead to
additional expenses and work.
The quality of software can be defined as the ability of the software to function as per user
requirement. When it comes to software products it must satisfy all the functionalities written
down in the SRS document.
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.
In software quality engineering, engineers play a key role. Quality engineers design, implement,
and maintain policies and procedures used to ensure the quality of development processes. This
requires a thorough understanding of evaluation practices and technologies in use, including
artificial intelligence (AI), big data analytics, and automation.
The primary goals of software quality engineering are:
• Process control and oversight
• Implementing standards and metrics
• Data collection and analysis
• Test development
• Identification of issues and solutions
lOMoAR cPSD| 30361253
• Good design – It’s always important to have a good and aesthetic design to please users
• Reliability – Be it any software it should be able to perform the functionality
impeccably withoutissues
• Durability- Durability is a confusing term, In this context, durability means
the ability of thesoftware to work without any issue for a long period of time.
• Consistency – Software should be able to perform consistently over platform and devices
• Maintainability – Bugs associated with any software should be able to capture and
fix quickly andnews tasks and enhancement must be added without any trouble
• Value for money – customer and companies who make this app should feel that the
money spent onthis app has not gone to waste.
Software Quality Attributes are features that facilitate the measurement of a software product’s
performance by Software Testing professionals. They play a vital role in helping software
architects guarantee that a software application will perform as expected based on the
specifications provided by the client. Though there are numerous software quality attributes:
Functionality
This attribute determines the conformity of a software-driven system with the defined
requirements andspecifications.
lOMoAR cPSD| 30361253
Most Software Testing professionals view this attribute as the most important one as an
application fails on the most basic level if it doesn’t function as expected. That is why we always
advocate performing tests that assess the desired functionality of a system during the early stages
of software testing.
Performance
Performance is on our list of the most important software quality attributes as it is a very
important trait for every software to have in this fast-paced world. It can be understood as the
ability of a software-driven systemto conform to timing requirements.
From a testing point of view, it implies that QA testers must check whether the system responds to
various events within defined time limits. These events may occur in the form of clock events,
process interruptions, messages, and requests from different users, and so on.
Reliability
Now that we have seen the functionality & performance software quality attributes, let’s shift our
focus to reliability. Reliability is to check if the application or the testing product with different
combinations to see if it withstands its nature and produces the expected results. By different
combinations, we mean testing it in different browsers, operating systems, environments, and so
on.
Testability
It indicates how well the application allows software testers to perform tests in line with the
predefined criteria. In addition to that, this software quality attribute also assesses the ease with
which QA engineers can develop test criteria for a said system and its various components.
QA professionals can assess the testability of a system by using various techniques such as
encapsulation, interfaces, patterns, low coupling, and more.
Availability
As the name suggests, this software quality attribute indicates whether an application will execute
the tasks when they are assigned. It can be defined as a ratio of the system’s available time to the
required time it is
expected to perform.
Top-notch availability indicates that a software-driven system will recover from operational
failures or scheduled maintenance periods without exceeding a specific time value. Availability
lOMoAR cPSD| 30361253
also includes certain concepts that relate to software security, performance, integrity, reliability,
dependability, and confidentiality.
Interoperability
Software-driven systems could be required to communicate and act in tandem with different
systems to perform certain tasks. Interoperability is the ability of the system to interact with other
systems to exchange the required information via certain interfaces. So, Software Quality
Assurance engineers must examine the interoperability of a system in terms of both syntactic and
semantic interoperability.
Security
The number of cyber-attacks has been on the rise and users have started prioritizing a product’s
safety. So the security attribute measures the ability of a system to protect and block malicious or
unauthorized actions that could negatively impact the user or destroy the system.
Security also includes authorization and authentication techniques, protection against network
attacks, data encryption, and other risks. It is imperative for Software Testing Companies and
professionals to regularly conduct updated security checks on systems.
Flexibility
If keeping up with the security threats is a key aspect, so is the system’s ability to keep up with the
upcoming trends and requirements. And for that, the system should be flexible enough or should
be able to modify accordingly.
For example, let’s say you’re working on a web application that was developed when Windows 8
was launched. As the OS gets upgraded, the application should be flexible enough to support
future versions such as Windows 10 & 11.
Efficiency
It is still one of the most important software quality attributes, an inefficient application might
work well only when it consumes excessive resources that slow down other applications or the
system on the whole. In addition to checking how long it takes to complete a process, it is also
important to check the level of system resourceusage.
For example, if the system uses the entire CPU power and memory for a single application. It can
be considered
to be inefficient as it pulls down the performance of the entire system from the user’s perspective.
lOMoAR cPSD| 30361253
Usability
Though all software-driven systems are designed with ease of use in mind, not all achieve this
goal. And the software quality attribute of usability denotes the ease with which users are able to
execute tasks on the system. It also indicates the level of user support provided by the system.
Cost of Quality
Cost of quality is a method for calculating the costs companies incur ensuring that products
meet quality standards, as well as the costs of producing goods that fail to meet quality
standards.
The goal of calculating the cost of quality is to create an understanding of how quality impacts the
bottom line. Whether it’s the cost of scrap and rework associated with poor quality, or the expense
of audits and maintenance associated with good quality, both count. Cost of quality gives
manufacturers an opportunity to analyze, and thus improve their quality operations.
This two-pronged approach to quality can be categorized as “control” (good quality) vs.
“failure of control”(bad quality).
Appraisal Costs:
Measurement and inspection activities during operations, to determine conformance to quality
requirements.Examples include inspection, testing, process or service audits, calibration of measuring
and test equipment.
Prevention Costs:
Activities planned and designed before operations to guarantee good quality and prevent bad quality
lOMoAR cPSD| 30361253
products orservices.
Examples include new product review, quality planning, supplier surveys, process
reviews, qualityimprovement teams, education and training.
Expenses incurred to remedy defects discovered by customers after the customer receives the
product or service. Examples include processing customer complaints, customer returns,
warranty claims, product recalls.
Error
The Problem in code leads to errors, which means that a mistake can occur due to the developer's
coding erroras the developer misunderstood the requirement or the requirement was not defined
correctly.
The developers use
the term error.
• Lack of resources
• An invalid step
• Inappropriate data definition
In software testing, a bug is the informal name of defects, which means that software or
lOMoAR cPSD| 30361253
application is not working as per the requirement. When we have some coding error, it leads a
program to its breakdown, which isknown as a bug. The test engineers use the terminology Bug.
When the application is not working as per the requirement is knows as defects. It is specified as
the aberration from the actual and expected result of the application or software.
In other words, we can say that the bug announced by the programmer and inside the code is called a
Defect.
lOMoAR cPSD| 30361253
Failure
Many defects lead to the software's failure, which means that a loss specifies a fatal issue in software/
In other words, we can say that if an end-user detects an issue in the product, then that particular issue is
called
a failure.
Possibilities are there one defect that might lead to one failure or several failures.
For example, in a bank application if the Amount Transfer module is not working for end-users when the
enduser tries to transfer money, submit button is not working. Hence, this is a failure.
lOMoAR cPSD| 30361253
lOMoAR cPSD| 30361253
lOMoAR cPSD| 30361253
For identification and resolution of defect, defect prevention (DP) is most important and essential
activity of software development life cycle that directly effect on controlling the cost and quality of
software product. Someone has well said that “Prevention is better than cure”. The main goal of defect
prevention is to identify defects and take corrective measures to minimize their impact and completely
reduce chances of their re-occurrence in future releases.
For defect prevention, there are different methods that are generally used over a long period of time. These
methods or activities are given below:
Software requirements and design both are important, and should be analyzed in an efficient way with
more focus. Software requirement is basically considered an integral part of Software Development Life
Cycle (SDLC). These are the requirements that basically describes features and functionalities of target
product and also conveys expectations or requirement of users from software product.
Therefore, it is very much needed to understand about software requirements more carefully, If
requirements are not understood well by tester and developers, then there might be chance of
occurringof issue or defect in further process.
Review and inspection, both are essential and integral part of software development. They are
considered as powerful tools that can be used to identify and remove defects if present before there
occurrence and impact on production. Review and inspection come in different levels or stages of defect
prevention to meet different needs. They are used in all software development and maintenance
methods. There are two types of review i.e. self-review and peer-review.
After successful analysis and review, there should be records maintained about defects to simply
complete description of defect. This record can be further used to have better understanding of
defects. After getting knowledge and understanding of defect, then only one can take some effective and
required measures and actions to resolve particular defects so that defect cannot be carried further to
next phase.
Root cause analysis is basically analysis of main cause of defect. It simply analysis what triggered
defect to occur. After analyzing main cause of defect, one can find best way to simply avoid occurrence
of such types of defects next time.
lOMoAR cPSD| 30361253
Defect Reduction
It includes improving quality, reducing wastes, and sustaining the improvements attained in the process. The
main objective is to improve the process yield by reducing the defect in the process/product.
Defect phase containment is a software quality engineering practice that involves identifying and fixing
defects as early in the development process as possible. This helps to prevent the defects from being
introduced into later phases of the development process, where they can be more costly and time-consuming
to fix.
To calculate defect phase containment, you would first need to determine the number of defects that were
identified and fixed in a particular phase of the development process. This could be the design phase, the
codingphase, the testing phase, or any other phase in the development process.
lOMoAR cPSD| 30361253
Next, you would need to determine the total number of defects that were identified in that phase. This would
include both the defects that were fixed, as well as those that were not.
To calculate the defect phase containment rate, you would then divide the number of defects that were fixed
by the total number of defects that were identified, and multiply the result by 100 to express it as a
percentage.
For example, if there were 100 defects identified in the design phase, and 50 of those defects were fixed, the
defect phase containment rate would be 50%, as follows:
Defect phase containment rate = (number of defects fixed / total number of defects identified) x 100
= (50 / 100) x 100
= 50%
Defect phase containment is an important practice for ensuring the quality of a product or service. By
identifying and fixing defects early in the development process, it can help to save time, money, and effort,
and ultimately result in a better product or service.
lOMoAR cPSD| 30361253
Software review is an important part of "Software Development Life Cycle (SDLC)" that assists software
engineers in validating the quality, functionality, and other vital features and components of the software. As
mentioned above, it is a complete process that involves testing the software product and ensuring that it
meets the requirements stated by the client.
It is systematic examination of a document by one or more individuals, who work together to find & resolve
errors and defects in the software during the early stages of Software Development Life Cycle (SDLC).
Usually performed manually, software review is used to verify various documents like requirements, system
designs, codes, "test plans" & "test cases".
The reasons that make software review an important element of software development process are
numerous. It is one such methodology that offers an opportunity to the development team & the client, to get
clarity on the project as well as its requirements. With the assistance of software review, the team can verify
whether the software is developed as per the requested requirements or not, and make the necessary changes
before its release in the market.
In this process of reviewing software, often we train technical authors for defect detection process as
well asfor "defect prevention process". It is only at this stage the inadequacies are eliminated.
Elimination of defects or errors can benefit the software to a great extent. Frequent check of samples of
work and identification of small time errors can lead to low error rate.
This process results in dramatic reduction of time taken in producing a technically sound document.
lOMoAR cPSD| 30361253
o Code Review: To fix mistakes and to remove vulnerabilities from the software product,
systematic examination of the computer source code is conducted, which further improves
the quality & security of the product.
o Pair Programming: This is a type of code review, where two programmers work on a single
workstation and develop a code together.
o Informal: As suggested by its name, this is an informal type of review, which is extremely
popular and is widely used by people all over the world. Informal review does not require any
documentation, "entry criteria", or a large group of people. It is a time saving process
that isnot documented.
o Technical Review: During the process of technical review a team of qualified personnels
lOMoAR cPSD| 30361253
review the software and examine its suitability to define its intended use as well as to identify
various discrepancies.
o Inspection: This is a formal type of peer review, wherein experienced & qualified
individuals examine the software product for bugs and defects using a defined process.
Inspection helps the author improve the quality of the software.
These reviews take place in the later stages by the management representatives. The objective of this
type of review is to evaluate the work status. Also, on the basis of such reviews decisions regarding
downstream activities are taken.
"Software Audit" review or software review is a type of external review, wherein one or more
auditors, who are not a part of the development team conduct an independent examination of the
software product and its processes to assess their compliance with stated specifications, standards,
and other important criterion's. This is done by managerial level people.
Formal and informal review are two very important types of reviews that are used most commonly by
software engineers to identify defects as well as to discuss ways to tackle these issues or discrepancies.
Therefore, to understand these important types of software review, following is a comparison of the two:
Formal Review:
A type of peer review, "formal review" follows a formal process and has a specific formal agenda. It has a
well structured and regulated process, which is usually implemented at the end of each life cycle. During
this process, a formal review panel or board considers the necessary steps for the next life cycle.
suggestedrecommendations.
• Here, the leader verifies that the action documents are verified and incorporated into external processes.
• Formal review consists of six important steps, which are:
o Planning.
o Kick-off.
o Preparation.
o Review meeting.
o Rework.
o Follow up.
Informal Review:
Unlike Formal Reviews, Informal reviews are applied multiple times during the early stages of software
development process. The major difference between the formal and informal reviews is that the former
follows a formal agenda, whereas the latter is conducted as per the need of the team and follows an informal
agenda. Though time saving, this process is not documented and does not require any entry criteria or large
group of members.
• Conducted by a group of 2-7 members, which includes the designer an any other interested party.
• Here the team identifies errors & issues as well as examine alternatives.
• It is a forum for learning.
• All the changes are made by the software designer.
• These changes are verified by other project controls.
• The role of informal review is to keep the author informed and to improve the quality of the product.
The process of software review is a simple one and is common for all its types. It is usually implemented by
following a set of activities, which are laid down by IEEE Standard 1028. All these steps are extremely
important and need to be followed rigorously, as skipping even a single step can lead to a complication with
thedevelopment process, which can further affect the quality of the end product.
Entry Evaluation:
A standard check-list is used by entry criteria in order to ensure an ideal condition for a successful review.
lOMoAR cPSD| 30361253
Management Preparation:
During this stage of the process, a responsible management ensures that the software review has all the required
resources, which includes things like staff, time, materials, and tools.
Review Planning:
To undergo a software review, an objective is identified. Based on the objective, a recognized team of
resourcesis formed.
Preparation:
The reviewers are held responsible for preparing group examination to do the reviewing task.
1. Formulation: The derivation of software measures and metrics appropriate for the representation
ofthe software that is being considered.
2. Collection: The mechanism used to accumulate data required to derive the formulated metrics.
3. Analysis: The computation of metrics and the application of mathematical tools.
4. Interpretation: The evaluation of metrics resulting in insight into the quality of the representation.
5. Feedback: Recommendation derived from the interpretation of product metrics transmitted to the
software team.
1. Direct Measurement: In direct measurement, the product, process, or thing is measured directly
using a standard scale.
lOMoAR cPSD| 30361253
Software Metrics: A metric is a measurement of the level at which any impute belongs to a system
product or process. Software metrics will be useful only if they are characterized effectively and validated
sothat their worth is proven. There are 4 functions related to software metrics:
1. Planning
2. Organizing
3. Controlling
4. Improving
1. Quantitative: Metrics must possess quantitative nature. It means metrics can be expressed in values.
2. Understandable: Metric computation should be easily understood, and the method of computing
metrics should be clearly defined.
3. Applicability: Metrics should be applicable in the initial phases of the development of the software.
4. Repeatable: The metric values should be the same when measured repeatedly and consistent in
nature.
5. Economical: The computation of metrics should be economical.
6. Language Independent: Metrics should not depend on any programming language.
Inspection
Software inspection is a process in which other developers or team members review the code written by a
developer to identify potential errors or areas for improvement. This process can help improve the overall
quality of the software by identifying and resolving faults early in the development process.
The term software inspection was developed by IBM in the early 1970s, when it was noticed that the
testingwas not enough sufficient to attain high quality software for large applications.
There are several ways that software inspection can improve software quality:
1. Identifying and resolving defects early: By identifying and resolving defects early in
lOMoAR cPSD| 30361253
thedevelopment process, inspection can prevent costly rework and delays later in the
project.
2. Enhancing code readability: Inspection can help improve the readability of the code,
making iteasier for other developers to understand and maintain.
3. Improving team collaboration: Inspection can help improve team collaboration by
encouragingdevelopers to share their ideas and knowledge.
4. Enhancing code maintainability: Inspection can help identify areas where code is
difficult tomaintain and suggest improvements to make it more maintainable.
5. Improving code efficiency: Inspection can help identify areas where code is inefficient and
suggestimprovements to make it more efficient.
6. Enhancing security: Inspection can help identify security vulnerabilities in the code and
suggestimprovements to make the software more secure.
7. Improving the overall quality of the software: By identifying and resolving defects early in
the development process, inspection can help improve the overall quality of the software and ensure
that itmeets the needs of its users.
Inspection is an important aspect of software quality assurance and can help ensure that the software
functions correctly and meets the needs of its users. It is an efficient way to detect errors and defects
early in the development process, and can save time and resources by preventing costly rework or delays
later in the project.
Inspection is used to determine the defects in the code and remove it efficiently. This prevents defects and
enhances the quality of testing to remove defects. This software inspection method achieved the highest
level for efficiently removing defects and improving software quality.
There are some factors that generate the high quality software:
• Phrases quality design inspection and Code inspections: This factor refers to formal oversight
that follows protocols such as training. Participants, material distributed for inspection. Both moderators
and recorders are present to analyze defect statistics.
• Phrase quality assurance: This factor refers to an active software quality assurance group,
which joins a group of software developments to support them in the development of high quality
software.
• Formal Testing :It throws the test process under certain conditions
• For an application, a test plan was created.
• Are complete specifications so that test cases can be made without significant gaps.
• Vast library control tools are used.
• Test coverage analysis tools are used.
lOMoAR cPSD| 30361253
There are some of the stages in the software inspection process such as-
• Improved code quality: Software inspection can help improve the overall quality of the code by
identifying areas for improvement and suggesting changes to make the code more readable,
maintainable, and efficient.
• Enhanced team collaboration: Software inspection can encourage developers to share their ideas and
knowledge, and can help improve team collaboration and communication.
• Increased code maintainability: Software inspection can help identify areas where code is difficult to
maintain and suggest improvements to make it more maintainable.
• Enhanced security: Software inspection can help identify security vulnerabilities in the code and
suggest improvements to make the software more secure.
• Cost-effective: Software inspection is relatively low cost and time-efficient, as it can be done by the
team members themselves.
• Increased accountability: Software inspection can help hold developers and teams accountable for
the quality of their code, by providing metrics and feedback.
• Provides a comprehensive view of the code: Software inspection can provide an in-depth view of the
code, which can help to identify both functional and non-functional requirements of the software.
• It is a time-consuming process.
• Software inspection requires discipline.
• Time-consuming: Software inspection can be time-consuming, especially for large and complex
systems, as it involves a thorough review of the code.
• Dependence on human interpretation: Software inspection is often dependent on
humaninterpretation, which can lead to inconsistencies and errors.
• Can be subject to bias: Reviewers might have their own biases, which can affect their
interpretationof the code and the defects they identify.
• Limited scope: Software inspection is limited to the code that is reviewed, and may not identify
alldefects in the system.
• Limited to detecting syntax errors: Software inspection is not able to detect all types of errors,
particularly semantic errors, which are caused by incorrect logic or design.
• Can be costly: Software inspection can be costly, especially if it requires the involvement of
externalexperts or specialized tools.
• Can be tedious and demotivating, Reviewing code can be tedious, and constant reviews can
demotivate the team members.
• Can lead to a lack of creativity: Software inspection can stifle creativity, as developers may
feelconstrained by the need to conform to established standards and practices.
lOMoAR cPSD| 30361253
Software documentation
Software documentation is written text or illustration that accompanies computer software or is embedded
in the source code. The documentation either explains how the software operates or how to use it, and may
mean different things to people in different roles.
It includes the technical manuals and online material, such as online versions of manuals and help
capabilities. The term is sometimes used to refer to source information about the product discussed in design
documentation,code comments, white papers and session notes.
Software documentation is a way for engineers and programmers to describe their product and the process
theyused in creating it in formal writing. Early computer users were sometimes simply given the engineers'
or programmers' notes. As software development became more complicated and formalized, technical
writers andeditors took over the documentation process.
Software documentation shows what the software developers did when creating the software and what IT
staff and users must do when deploying and using it. Documentation is often incorporated into the software's
user interface and also included as part of help documentation. The information is often divided into task
categories,including the following:
• evaluating
• planning
• setting up or installing
• customizing
• administering
• using
• maintaining
• Software documentation provides information about a software program for everyone involved
in itscreation, deployment and use. Documentation guides and records the development process.
It also assists with basic tasks such as installation and troubleshooting.
• Effective documentation gets users familiar with the software and makes them aware of its
lOMoAR cPSD| 30361253
features. Itcan have a significant role in driving user acceptance. Documentation can also reduce
the burden on support teams, because it gives users the power to troubleshoot issues.
• Software documentation can be a living document that is updated over the software development
lifecycle. Its use and the communication it encourages with users provides developers with
information
on problems users have with the software and what additional features they need. Developers can
respond with software updates, improving customer satisfaction and user experience.
Developers and software engineers create internal documentation that is used inside a company. Internal
documentation may include the following:
• Developer documentation. This provides instructions to developers for building the software and
guides them through the development process. It includes requirements documentation, which
describes how the software should perform when tested. It also includes architectural documentation
that focuses onhow all the components and features work together, and details data flows throughout
the product.
lOMoAR cPSD| 30361253
Software developers create this documentation to provide IT managers and end users with information on
howto deploy and use the software. External documentation includes the following:
• End-user documentation. This type gives end users basic instructions on how to use, install and
troubleshoot the software. It might provide resources, such as user guides, knowledge bases, tutorials
and release notes.
• Enterprise user documentation. Enterprise software often has documentation for IT staff that
deploy the software across the enterprise. It may also provide documentation for the end users of the
software.
• Just-in-time documentation. This provides end users with support documentation at the exact time
they will need it. This allows developers to create a minimal amount of documentation at the release of
a software product and add documentation as new features are added. It is based on the Agile software
development These can be knowledge bases, FAQ pages etc.