Professional Documents
Culture Documents
Software quality is defined as a field of study and practice that describes the desirable attributes of
software products. There are two main approaches to software quality: defect management and
quality attributes.
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:
Usability: A software product has better usability if various categories of users can
easily invoke the functions of the product.
1. Functional suitability
2. Reliability
3. Operability
4. Performance efficiency
5. Security
6. Compatibility
7. Maintainability
8. Transferability
1. Effectiveness
2. Efficiency
3. Satisfaction
4. Safety
5. Usability
A fixed software quality model is often helpful for considering an overall understanding of software
quality. In practice, the relative importance of particular software characteristics typically depends on
software domain, product type, and intended usage. Thus, software characteristics should be
defined for, and used to guide the development of, each product.
What is a Fault?
Software fault is also known as defect, arises when the expected result don't match with the
actual results. It can also be error, flaw, failure, or fault in a computer program. Most bugs arise
from mistakes and errors made by developers, architects.
Fault Types
Following are the fault types associated with any:
Business Logic Faults
Functional and Logical Faults
Faulty GUI
Performance Faults
Security Faults
Preventing Faults
Following are the methods for preventing programmers from introducing Faulty code during
development:
Programming Techniques adopted
Software Development methodologies
Peer Review
Code Analysis
Software Review
Software Review is systematic inspection of a software by one or more individuals who work together
to find and resolve errors and defects in the software during the early stages of Software Development
Life Cycle (SDLC). Software review is an essential part of Software Development Life Cycle (SDLC) that
helps software engineers in validating the quality, functionality and other vital features and components
of the software. It is a whole process that includes testing the software product and it makes sure that it
meets the requirements stated by the client.
Usually performed manually, software review is used to verify various documents like requirements,
system designs, codes, test plans and test cases.
(iii) Walkthrough:
Members of the development team is guided by author and other interested parties and
the participants ask questions and make comments about defects.
(v) Inspection:
In inspection the reviewers follow a well-defined process to find defects.
Software Metrics
A software metric is a measure of software characteristics which are measurable or
countable. Software metrics are valuable for many reasons, including measuring
software performance, planning work items, measuring productivity, and many other
uses.
Within the software development process, many metrics are that are all connected.
Software metrics are similar to the four functions of management: Planning,
Organization, Control, or Improvement.
External metrics: External metrics are the metrics used for measuring properties that
are viewed to be of greater importance to the user, e.g., portability, reliability,
functionality, usability, etc.
Hybrid metrics: Hybrid metrics are the metrics that combine product, process, and
resource metrics. For example, cost per FP where FP stands for Function Point Metric.
Project metrics: Project metrics are the metrics used by the project manager to check
the project's progress. Data from the past projects are used to collect various metrics,
like time and cost; these estimates are used as a base of new software. Note that as the
project proceeds, the project manager will check its progress from time-to-time and will
compare the effort, cost, and time with the original effort, cost and time. Also
understand that these metrics are used to decrease the development costs, time efforts
and risks. The project quality can also be improved. As quality improves, the number of
errors and time, as well as cost required, is also reduced.
In making inference about the effort to be put in the design and development of the
software systems.
In providing feedback to software managers about the progress and quality during
various phases of the software development life cycle.
AD
These are useful for managing software products but not for evaluating the
performance of the technical staff.
The definition and derivation of Software metrics are usually based on assuming which
are not standardized and may depend upon tools available and working environment.
Most of the predictive models rely on estimates of certain variables which are often not
known precisely.
Unit – 2
Defect density is counted per thousand lines of code also known as KLOC.
Module 1 = 10 bugs
Module 2 = 20 bugs
Module 3 = 10 bugs
Code complexity
The type of defects taken into account for the calculation
Time duration which is considered for Defect density calculation
Developer or Tester skills
SQA Activities
Software quality assurance is composed of a variety of functions 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 program is developed during
project planning and is reviewed by all stakeholders. The plan governs
quality assurance activities performed by the software engineering team
and the SQA group. The plan identifies calculation to be performed, audits
and reviews to be performed, standards that apply to the project,
techniques 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 (e.g. ISO-9001), and other parts of the
software project plan.
3. Reviews software engineering activities to verify compliance with the
defined software process: The SQA group identifies, reports, 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,
verify 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 method,
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 Assurance v/s Quality control
SQA Techniques
There are several techniques for SQA. Auditing is the chief technique that is widely adopted.
However, we have a few other significant techniques as well.
SQA Standards
Software quality assurance standards can be classified into two main classes −
Software quality assurance management standards, including certification and
assessment methodologies (quality management standards)
Software project development process standards (project process standards)
Quality Management Standards
These focus on the organization’s SQA system, infrastructure and requirements, while leaving
the choice of methods and tools to the organization. With quality management standards,
organizations can steadily assure that their software products achieve an acceptable level of
quality.
Example − ISO 9000-3 and the Capability Maturity Model (CMM)
Project Process Standards
These focus on the methodologies for implementing the software development and maintenance
projects. These standards include the following −
The standard’s
“What” to achieve “How” to perform
objective
AD
Elements of TQM:
Root Cause Analysis
Customer-focused
Active Employee Participation
Process-oriented
Internal and External self Assessment
Continuous improvement
Making Well Informed Decisions
Effective Communication
Validation:
That's why we have so many tools available in the market where some are open-source
and paid tools.
The significant difference between open-source and the paid tool is that the open-
source tools have limited features, whereas paid tool or commercial tools have no
limitation for the features. The selection of tools depends on the user's requirements,
whether it is paid or free.
With the help of testing tools, we can improve our software performance, deliver a high-
quality product, and reduce the duration of testing, which is spent on manual efforts.
Test management tools are used to keep track of all the testing activity, fast data
analysis, manage manual and automation test cases, various environments, and plan
and maintain manual testing as well.
For more details about test management tool, refers the below link: Click Here
The defect tracking tool is used to keep track of the bug fixes and ensure the delivery of
a quality product. This tool can help us to find the bugs in the testing stage so that we
can get the defect-free data in the production server. With the help of these tools, the
end-users can allow reporting the bugs and issues directly on their applications.
For more details about bug tracking tool, refers the below link: Click Here
Automation testing tool
This type of tool is used to enhance the productivity of the product and improve the
accuracy. We can reduce the time and cost of the application by writing some test
scripts in any programming language.
For more details about automation testing tool, refers the below link: Click Here
Performance or Load testing tools are used to check the load, stability, and scalability of
the application. When n-number of the users using the application at the same time,
and if the application gets crashed because of the immense load, to get through this
type of issue, we need load testing tools.
For more details about load testing tool, refers the below link: Click Here
This type of tool is used when we need to compare a web application in the various web
browser platforms. It is an important part when we are developing a project. With the
help of these tools, we will ensure the consistent behavior of the application in multiple
devices, browsers, and platforms.
For more details about the cross-browser testing tool, refers the below link: Click Here
This type of tool is used to test the interface between modules and find the critical bugs
that are happened because of the different modules and ensuring that all the modules
are working as per the client requirements.
For more details about the mobile and android testing tool, refers to the below
link: Click Here
This testing tool is used to help the programmers to improve their code quality, and
with the help of these tools, they can reduce the time of code and the overall cost of the
software.
For more details about the unit testing tool, refers the below link: Click Here
Mobile/android testing tool
We can use this type of tool when we are testing any mobile application. Some of the
tools are open-source, and some of the tools are licensed. Each tool has its functionality
and features.
For more details about the mobile or android testing tool, refers to the below link: Click
Here
GUI testing tool is used to test the User interface of the application because a
proper GUI (graphical user interface) is always useful to grab the user's attention. These
type of tools will help to find the loopholes in the application's design and makes its
better.
For more details about GUI testing tool, refers the below link: Click Here
The security testing tool is used to ensure the security of the software and check for the
security leakage. If any security loophole is there, it could be fixed at the early stage of
the product. We need this type of the tool when the software has encoded the security
code which is not accessible by the unauthorized users
These tools are used by developers as part of the These tools require the code to be in a
development and component testing process “running state”
code is not executed or run but tool itself is They analyse rather than testing
executed
Static testing tool Dynamic testing tool
It also perform static analysis of requirement or These tool used by developed in component
analysis of website integration testing,, middle ware , testing
robustness and security.
Helps to understand the structure of the code and Also performs web site testing to check
can also be useful to enforce coding standards. whether each link does actually link to
something else, it can find dead links .
Features /characteristics of static testing tools are: Features/characteristics of static testing tools
Checks cyclomatic complexity Enforces coding are: Detect memory leak Identify pointer
standards Analyse structures and dependencies arithmetic errors , null pointer Identify time
Helpful in understanding coding Identify defects dependence.
in code.
Examples. Flow analyzer, path tests, coverage coverage analyzers, Interface analyzers
analyzers, Interface analyzers Examples. Test driver, Test beds, Emulators,
Mutation analyzers
It is a type of software testing which is used to verify the functionality of the software
application, whether the function is working according to the requirement specification.
In functional testing, each function tested by giving the value, determining the output,
and verifying the actual output with the expected value. Functional testing performed as
black-box testing which is presented to confirm that the functionality of an application
or system behaves as we are expecting. It is done to verify the functionality of the
application.
o Basic Usability: Functional Testing involves the usability testing of the system. It checks
whether a user can navigate freely without any difficulty through screens.
o Accessibility: Functional testing test the accessibility of the function.
o Mainline function: It focuses on testing the main feature.
o Error Condition: Functional testing is used to check the error condition. It checks
whether the error message displayed.
Structural testing is a type of software testing which uses the internal design of the software for testing
or in other words the software testing which is performed by the team which knows the development
phase of the software, is known as structural testing.
Structural testing is basically related to the internal design and implementation of the software i.e. it
involves the development team members in the testing team. It basically tests different aspects of the
software according to its types. Structural testing is just the opposite of behavioral testing.
Mutation Testing:
Mutation Testing is a type of Software Testing that is performed to design new software tests and also
evaluate the quality of already existing software tests. Mutation testing is related to modification a
program in small ways. It focuses to help the tester develop effective tests or locate weaknesses in the
test data used for the program.
Sometimes it is expensive.
JBehave
Cucumber
Junit
Cfix
Error handling testing is a type of software testing that is performed to check whether the system is
capable of or able to handle the errors that may happen in future. This type of testing is basically
performed with the help of both developers and the testers. Error handling testing not only focuses on
the determination of error but also focuses on the exception handling.
To make sure errors can be handles properly by the system in the future.
5. Re-test:
If the testing is failed then after the analysis once more all the above steps are performed to test
the system. It also includes the testing of the system under new test cases generated recently.