CH 1 Software Quality Assurance Fundamentals-KM
CH 1 Software Quality Assurance Fundamentals-KM
CH 1 Software Quality Assurance Fundamentals-KM
Quality is meeting the requirement, expectation, and needs of the customer is free
from the defects, lacks and substantial variants. There are standards needs to
follow to satisfy the customer requirements.
Quality assurance activities monitor and verify that the processes used to manage
and create the deliverables have been followed and are operative.
What is Control?
Control is to test or verify actual results by comparing it with the defined
standards.
Many people think QA and QC are the same and interchangeable but this is not
true. Both are tightly linked and sometimes it is very difficult to identify the
differences. Fact is both are related to each other but they are different in origins.
QA and QC both are part of Quality Management however QA is focusing on
preventing defect while QC is focusing on identifying the defect.
Here is the exact difference between Quality Control and Quality Assurance
that one needs to know:
Quality Assurance Quality Control
QA does not involve executing the program. QC always involves executing the
program.
All team members are responsible for QA. Testing team is responsible for QC.
QA means Planning for doing a process. QC Means Action for executing the
planned process.
QA makes sure you are doing the right things. QC makes sure the results of what
you've done are what you expected.
QA Example:
Suppose our team has to work on completely new technology for an upcoming
project. Our team members are new to technology. So, for that, we need to create a
plan for getting the team members trained in the new technology.
This would be helpful while working on the new technology and even would be
useful for any newcomer in the team. This collection & distribution of
documentation and then kicking off the training program is a part of the QA
process.
QC Example:
Once the training is completed, how can we make sure that the training was
successfully done for all the team members?
For this purpose, we will have to collect statistics e.g. the number of marks the
trainees got in each subject and the minimum number of marks expected after
completing the training. Also, we can make sure that everybody has taken training
in full by verifying the attendance record of the candidates.
Another way to improve the training process would be collecting feedback from
the trainees at the end of the training program. Their feedback will tell us what was
good about the training and what are the areas where we can improve the quality of
training. So, such activities are a part of the QA process.
Conclusion
Key Points:
In QA, processes are planned to evade the defects
QC agreements with the discovery of the defects and modifying them while
making the product
QA detects weakness
QC detects defects
QA is process oriented
QC is product oriented
QA is a failure prevention system
QC is a failure detection system.
QA & QC both are different from each other and required as part of quality
management. They should not be misunderstood as interchangeable terms. QA is
process focused while QC is end-product focused.
Quality assurance, on the other hand, aims at preventing the issues from occurring
in the future by improving the process.
To summarize, we can say that Quality assurance does not eliminate the need for
Quality control as QC lies at the very core of Quality management.
Quality Testing:
Bug – Due to which program fail to perform its intended function correctly.
1. New: When the bug is posted for the first time, its state will be “NEW”.
This means that the bug is not yet approved.
2. Open: After a tester has posted a bug, the lead of the tester approves that
the bug is genuine and he changes the state as “OPEN”.
3. Assign: Once the lead changes the state as “OPEN”, he assigns the bug to
corresponding developer or developer team. The state of the bug now is
changed to “ASSIGN”.
4. Test: Once the developer fixes the bug, he has to assign the bug to the
testing team for next round of testing. Before he releases the software with
bug fixed, he changes the state of bug to “TEST”. It specifies that the bug
has been fixed and is released to testing team.
5. Deferred: The bug, changed to deferred state means the bug is expected
to be fixed in next releases. The reasons for changing the bug to this state
have many factors. Some of them are priority of the bug may be low, lack of
time for the release or the bug may not have major effect on the software.
6. Rejected: If the developer feels that the bug is not genuine, he rejects the
bug. Then the state of the bug is changed to “REJECTED”.
7. Duplicate: If the bug is repeated twice or the two bugs mention the same
concept of the bug, then one bug status is changed to “DUPLICATE”.
8. Verified: Once the bug is fixed and the status is changed to “TEST”, the
tester tests the bug. If the bug is not present in the software, he approves that
the bug is fixed and changes the status to “VERIFIED”.
9. Reopened: If the bug still exists even after the bug is fixed by the
developer, the tester changes the status to “REOPENED”. The bug traverses
the life cycle once again.
10. Closed: Once the bug is fixed, it is tested by the tester. If the tester feels
that the bug no longer exists in the software, he changes the status of the bug
to “CLOSED”. This state means that the bug is fixed, tested and approved.
B’coz of:
Increased competition
Customer Orientation
focus on Customer
Loss of reputation
Loss of customers
Business at stake
Imperative by law
SQA Benefits
SQA has a host of benefits. It ensures that that software built as per SQA
procedures are of specified quality. SOA helps to
During project planning, Test Manager makes an SQA plan where SQA audit is
scheduled periodically.
The SQA team is the group of person who plays the major role in the project.
Without QA, no business will run successfully. Therefore, the Test Manager has to
make clear the responsibility of each SQA member in SQA plan as below:
For example, in the SQA Plan of the project Guru99 Bank, you can create the list
members of SQA team as below
Test Manager also creates the scheduling of those SQA tasks. Normally, the SQA
schedule is driven by the project development schedule. Therefore, an SQA task is
performed in relationship to what software development activities are taking place.
In the SQA plan, Test Manager makes the schedule for management review. For
example
Personal in
Date SQA Tasks Description
charge
Importance of standards:
(i) Encapsulation of best practices – avoid repetitions of past mistakes.
(ii) They are framework for QA process.
(iii) They involved checking compliance to standards
(iv) They provide continuity
SQA Activities:
Software quality assurance is composed of a variety of tasks associated with
two different constituencies – the software engineers who do technical work
and an SQA group that has responsibility for quality assurance planning,
record keeping, analysis and reporting.
Following activities are performed by an independent SQA group:
1. Prepares an SQA plan for a project: The plan is developed during
project planning and is reviewed by all stakeholders. Quality assurance
activities performed by the software engineering team and the SQA group
are governed by the plan. The plan identifies evaluations to be performed,
audits and reviews to be performed, standards that are applicable to the
project, procedures for error reporting and tracking, documents to be
produced by the SQA team, and amount of feedback provided to the
software project team.
2. Participates in the development of the project’s software process
description: The software team selects a process for the work to be
performed. The SQA group reviews the process description for compliance
with organizational policy, internal software standards, externally imposed
standards (eg. ISO-9001), and other parts of software project plan.
3. Reviews software engineering activities to verify compliance with the
defined software process: The SQA group identifies, documents, and tracks
deviations from the process and verifies that corrections have been made.
4. Audits designated software work products to verify compliance with
those defined as a part of the software process : The SQA group reviews
selected work products, identifies, documents and tracks deviations, verifies
that corrections have been made, and periodically reports the results of its
work to the project manager.
5. Ensures that deviations in software work and work products are
documented and handled according to a documented
procedure: Deviations may be encountered in the project plan, process
description, applicable standards, or technical work products.
6. Records any noncompliance and reports to senior management: Non-
compliance items are tracked until they are resolved.
Quality Definitions
Factors
1 Correctness The extent to which a program satisfies its
specifications and fulfills the user’s mission /
objectives.
2 Reliability The extent to which a program can be expected to
perform its intended functions with required
precision.
3 Efficiency The amount of computing resources and code
requirement by a program to perform a function.
4 Integrity The extent to which access to software or data by
un-authorized person can control.
5 Usability The effort required to learn, operate, prepare input
pout and interpret output of a program.
6 Maintainability The effort required to locate and fix defects in an
operational program.
7 Testability The effort required to test a program to ensure that
it perform its intended functions.
8 Flexibility The effort required to modify an operational
program.
9 Portability The effort required to transfer a program from one
hardware or software environment to another.
10 Reusability The extent to which parts of software can be reused
in other applications.
11 Interoperability The effort required to couple one system with
another.
Software Quality Criteria / Metrics:
Software Reliability Measurement Techniques
Product metrics are those which are used to build the artifacts, i.e., requirement
specification documents, system design documents, etc. These metrics help in the
assessment if the product is right sufficient through records on attributes like
usability, reliability, maintainability & portability. In these measurements are taken
from the actual body of the source code.
3. Process Metrics
Process metrics quantify useful attributes of the software development process &
its environment. They tell if the process is functioning optimally as they report on
characteristics like cycle time & rework time. The goal of process metric is to do
the right job on the first time through the process. The quality of the product is a
direct function of the process. So process metrics can be used to estimate, monitor,
and improve the reliability and quality of software. Process metrics describe the
effectiveness and quality of the processes that produce the software product.
Examples are:
To achieve this objective, a number of faults found during testing and the failures
or other problems which are reported by the user after delivery are collected,
summarized, and analyzed. Failure metrics are based upon customer information
regarding faults found after release of the software. The failure data collected is
therefore used to calculate failure density, Mean Time between Failures
(MTBF), or other parameters to measure or predict software reliability.
Some reliability metrics which can be used to quantify the reliability of the
software product are as follows:
MTTF is described as the time interval between the two successive failures.
An MTTF of 200 mean that one failure can be expected each 200-time units. The
time units are entirely dependent on the system & it can even be stated in the
number of transactions. MTTF is consistent for systems with large transactions.
To measure MTTF, we can evidence the failure data for n failures. Let the failures
appear at the time instants t1,t2.....tn.
Thus, an MTBF of 300 denoted that once the failure appears, the next failure is
expected to appear only after 300 hours. In this method, the time measurements are
real-time & not the execution time as in MTTF.
POFOD is described as the probability that the system will fail when a service is
requested. It is the number of system deficiency given several systems inputs.
POFOD is the possibility that the system will fail when a service request is made.
A POFOD of 0.1 means that one out of ten service requests may fail.POFOD is an
essential measure for safety-critical systems. POFOD is relevant for protection
systems where services are demanded occasionally.
6. Availability (AVAIL)
Availability is the probability that the system is applicable for use at a given time.
It takes into account the repair time & the restart time for the system. An
availability of 0.995 means that in every 1000 time units, the system is feasible to
be available for 995 of these. The percentage of time that a system is applicable for
use, taking into account planned and unplanned downtime. If a system is down an
average of four hours out of 100 hours of operation, its AVAIL is 96%.