Software testing and introduction to quality

1,155 views 36 slides Feb 04, 2022
Slide 1
Slide 1 of 36
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36

About This Presentation

Introduction about Software Testing, Software Quality


Slide Content

SOFTWARE TESTING AND
QUALITY ASSURANCE




By
Ms. Dhanashri Ambare
Assistant Professor
Dnyandeep College, Morvande_Boraj



T.Y.B.SC. Computer Science(Semester V)

Course Code:USCS503

Software Testing and
Introduction to quality

Introduction
What is a software Testing?

Software Testing is a process to investigation
about the quality.
OR
Process of finding defects i.e. variance
between Expected and actual result.

Why testing is necessary
Software testing is necessary to make sure the product or application
is defect free, as per the customer specification.

Software testing identifies fault whose removal increase the software
quality and increase the software reliability.

Testing efforts is directly proportional to the complexity of the
program.

Software should be
Error free as per requirement.
Efficient
Secured

The nature of errors
Specifications are a common source of faults.

A software system has an overall specification,
derived from requirements analysis.

The specification for a component can be:
ambiguous (unclear)
incomplete
Faulty

Any such problems should, of course, be detected and
remedied by verification of the specification prior to
development of the component.

Contd....
But this verification cannot and will not be totally effective.

This is not all – there are other problems with specifications. During
programming, the developer of a component may misunderstand
the component specification.

The next type of error is where a component contain faults so that
it does not meet its specification. This may be due to two kinds of
problem:
1. errors in the logic of the code – an error of commission
2. code that fails to meet all aspects of the specification – an error
of omission.
Finally, the kinds of errors that can arise in the coding of a
component are:
data not initialized
loops repeated an incorrect number of times.
boundary value errors.

Software Development Life Cycle
The software-development life-cycle is used to facilitate the
development of a large software product in a systematic, well-
defined, and cost-effective way.
An information system goes through a series of phases from
conception to implementation. This process is called the Software-
Development Life-Cycle.
Various reasons for using a life-cycle model include:
Helps to understand the entire process
 Enforces a structured approach to development
 Enables planning of resources in advance
 Enables subsequent controls of them
 Aids management to track progress of the system
The SDLC consists of several phases and these phases need to be
identified along with defining the entry and exit criteria for every
phase.
 SDLC can be divided into 5-9 phases.

SDLC Model
Project initiation
and planning
Project
identification and
selection
Project analysis
System design
Coding
Testing
Implementation
Maintenance
Project initiation
and planning
Project
identification and
selection
Project analysis
System design
Coding
Testing
Implementation
Maintenance

1) Project initiation and planning/ Recognition of need/
Preliminary investigation

It is a brief investigation of the system under consideration.

This investigation provides the organization’s computer
steering committee and any project team a set of terms or
references for more detailed work.

 This is carried out by a senior manager and will result in a
study proposal.

At this stage the need for changes in the existing system are
identified and shortcomings of the existing system are
detected.

2) Project identification and selection/Feasibility study
A feasibility study is a preliminary study which investigates the information needs of
prospective users and determines the resource requirements, costs, benefits, and
feasibility of a proposed project.

The feasibility of a proposed system can be evaluated in terms of four major
categories:

i. Organizational Feasibility: Organizational feasibility is how well a proposed
information system supports the objectives of the organization and is a strategic
plan for an information system.

ii. Economic Feasibility: Economic feasibility is concerned with whether expected
cost savings, increased revenue, increased profits, reductions in required
investments, and other types of benefits will exceed the costs of developing and
operating a proposed system.

iii. Technical Feasibility: Technical feasibility can be demonstrated if reliable hardware
and software capable of meeting the needs of a proposed system can be acquired
or developed by the business in the required time.

iv. Operational Feasibility: Operational feasibility is the willingness and ability of
management, employees, customers, suppliers, and others to operate, use, and
support a proposed system.

3) Project analysis
 Project analysis is a detailed study of the various operations performed
by a system and their relationships within and outside the system.

The tasks to be carried out should be clearly defined such as:
◦Examine and document the relevant aspects of the existing system, its
shortcomings and problems.
◦ Analyze the findings and record the results.
◦ Define and document in an outline the proposed system.
◦Test the proposed design against the known facts.
◦Produce a detailed report to support the proposals.
◦Estimate the resources required to design and implement the system.

The objectives at this stage are to provide solutions to stated problems,
usually in the form of specifications to meet the users requirements and
to make recommendations for a new computer-based system.

Analysis is an iterative and progressive process, examining information
flows and evaluating various alternative design solutions until a
preferred solution is available.

4) System design
System design is the most creative and challenging phase of the
system development life-cycle. The term design describes the
final system and process by which it is developed.

 This is a creative as well as a technical activity including the
following tasks:
oAppraising the terms of reference.
◦Appraising the analysis of the existing system, particularly problem
areas.
◦Defining precisely the required system output
◦Determining data required to produce the output
◦Deciding the medium and opening the files
◦Devising processing methods and using software to handle files and
to produce output
◦Determining methods of data capture and data input
◦Designing the output forms
◦Defining detailed critical procedures
◦Calculating timings of processing and data movements
◦Documenting all aspects of design

Fig: Cycle of Design Phase

5) Coding
The goal of the coding phase is to translate the design of the
system into code in a given programming language.

In this phase the aim is to implement the design in the best
possible manner.

This phase affects both testing and maintenance phases. Well-
written code can reduce the testing and maintenance effort.

Coding can be subject to company-wide standards that may
define the entire layout of programs, such as headers for
comments in every unit, naming conventions for variables,
classes and functions, the maximum number of lines in each
component, and other aspects of standardization.

6) Testing
Testing is the major quality-control measure used during software development.

Its basic function is to detect errors in the software. Thus, the goal of testing is to
uncover requirement, design, and coding errors in the program.

Testing is an extremely critical and time-consuming activity.

It requires proper planning of the overall testing process. During the testing of the
unit, the specified test cases are executed and the actual results are compared with the
expected output.

The final output of the testing phase is the test report and the error report, or a set of
such reports (one for each unit tested). Each test report contains the set of test cases
and the result of executing the code with these test cases.

The error report describes the errors encountered and the action taken to remove the
errors.

During the testing phase emphasis should be on the following:
◦Tests should be planned long before testing begins.
◦All tests should be traceable to customer requirements.
◦ Tracing should begin “in the small” and progress toward testing “in the large.”
◦ For most effective testing, independent, third parties should conduct testing.

7) Implementation
The implementation phase is less creative than system design. It is
mainly concerned with user training, site selection, and preparation
and file conversion.

It includes the final testing of the complete system to user
satisfaction, and supervision of initial operation of the system.

Implementation of the system also includes providing security to
the system.

 Types of Implementation
There are three types of implementation:
◦Implementation of a computer system to replace a manual system.

◦Implementation of a new computer system to replace an existing one.

◦Implementation of a modified application (software) to replace an
existing one using the same computer.

8) Maintenance
Maintenance is an important part of the SDLC. If there is any error
to correct or change then it is done in the maintenance phase.

Many times maintenance may consume more time than the time
consumed in the development. Also, the cost of maintenance varies
from 50% to 80% of the total development cost.

Maintenance is not as rewarding or exciting as developing the
systems. It may have problems such as:

◦Availability of only a few maintenance tools.
◦ User may not accept the cost of maintenance.
◦ Standards and guidelines of project may be poorly defined.
◦A good test plan is lacking.
◦Maintenance is viewed as a necessary evil often delegated to junior
programmers.
◦Most programmers view maintenance as low-level drudgery.

Types of Maintenance
(i) Corrective Maintenance: Corrective maintenance means
repairing processing or performance failures or making
changes because of previously uncorrected problems.

(ii) Adaptive Maintenance: Adaptive maintenance means
changing the program function. This is done to adapt to the
external environment change.

(iii) Perfective Maintenance: Perfective maintenance means
enhancing the performance or modifying the programs to
respond to the user’s additional or changing needs.

(iv) Preventive Maintenance: Preventive maintenance is the
process by which we prevent our system from being obsolete.
Preventive maintenance involves the concept of re-engineering
and reverse engineering in which an old system with an old
technology is re-engineered using new technology. This
maintenance prevents the system from dying out.

Software Quality
Definition of Software Quality
Software quality is the:
“Conformance to explicitly stated functional and performance
requirements, explicitly documented development standards, and
implicit characteristics that are expected of all professionally
developed software”.

The above definition emphasizes three important points:
1. Software requirements are the foundation from which quality is
measured. Lack of conformance to requirements is lack of quality.

2. Specified standards define a set of development criteria that guide the
manner in which software is engineered. If the criteria are not
followed, lack of quality will almost surely result.

3. There is a set of implicit requirements that often goes unmentioned. If
software conforms to its explicit requirements but fails to meet implicit
requirements, software quality is suspect.

Classification of Software Qualities
External versus Internal Qualities
The external qualities are visible to the users of the
system: the internal qualities are those that concern
the developers of the system. For example, the
internal quality of verifiability is necessary for
achieving the external quality of reliability.

Product and Process Qualities
We use a process to produce the software product.
For example, if the process requires careful planning
of system test data before any design and
development of the system starts, products
reliability will increase.

Software Quality Attributes
Software quality is comprised of six main attributes
(called characteristics).

1. Functionality: The capability to provide functions which meet
stated and implied needs when the software is used.
2. Reliability: The capability to maintain a specified level of
performance.
3. Usability: The capability to be understood, learned, and used.
4. Efficiency: The capability to provide appropriate performance
relative to the amount of resources used.
5. Maintainability: The capability to be modified for purposes of
making corrections, improvements, or adaptation.
6. Portability: The capability to be adapted for different specified
environments without applying actions or means other than those
provided for this purpose in the product.

Quality assurance
Quality assurance means ensuring that a software system meets its
quality goals.
To achieve its goals, a project must use effective tools and methods.
Also checks must be carried out during the development process at
every available opportunity to see that the process is being carried
out correctly.
To be effective, quality assurance must be planned in advance –
along with the planning of all other aspects of a software project.
The project manager:

1. decides which quality factors are important for the particular
project.
2. selects standards and procedures from the quality manual that are
appropriate to meeting the quality goals
3. assembles these into a quality assurance plan for the project. This
describes what the procedures and standards are, when they will be
done, and who does them.

Quality Control
A quality control is an activity that checks that
the project’s quality factors are being achieved
and produces some documentary evidence.

Quality Management
Quality management is the act of overseeing all
activities and tasks that must be accomplished
to maintain a desired level of excellence.

Difference between Quality
Assurance (QA) and Quality Control
(QC)

Quality Assurance (QA) Quality Control (QC)
•It is a procedure that focuses on
providing assurance that quality
requested will be achieved
•It is a procedure that focuses on
fulfilling the quality requested.
•QA aims to prevent the defect •QC aims to identify and fix defects
•It's a Preventive technique •It's a Corrective technique
•It's a Proactive measure •It's a Reactive measure
•t is the procedure to create the
deliverables
•It is the procedure to verify that
deliverables
•QA involves in full software
development life cycle
•QC involves in full software testing
life cycle
•In order to meet the customer
requirements, QA defines
standards and methodologies
•QC confirms that the standards
are followed while working on the
product

•Its main motive is to prevent
defects in the system. It is a
less time-consuming activity
•Its main motive is to identify
defects or bugs in the system.
It is a more time-consuming
activity
•QA ensures that everything is
executed in the right way, and
that is why it falls under
verification activity
•QC ensures that whatever we
have done is as per the
requirement, and that is why it
falls under validation activity
•It requires the involvement of the
whole team
•It requires the involvement of the
Testing team
•The statistical technique applied
on QA is known as SPC or
Statistical Process Control (SPC)
•The statistical technique applied
to QC is known as SQC or
Statistical Quality Control
•It is performed before Quality
Control
•It is performed only after QA
activity is done

SOFTWARE QUALITY ASSURANCE
“Software Quality Assurance is a set of
activities designed to evaluate the process
by which software is developed and/or
maintained”.

“Quality assurance is a planned and
systematic pattern of all actions necessary
to provide adequate confidence that the
item or product conforms to established
technical requirements (IEE83)”.

The process of the SQA:
1. Defines the requirements for software
controlled system fault/failure detection,
isolation, and recovery;

2. Reviews the software-development processes
and products for software error prevention
and/or controlled change to reduced
functionality states;

3. Defines the process for measuring and
analyzing defects as well as reliability and
maintainability factors.

SQA Objectives
The various objectives of SQA are as follows:
1. Quality management approach.
2. Measurement and reporting mechanisms.
3. Effective software-engineering technology.
4. A procedure to assure compliance with software-
development standards where applicable.
5. A multi-testing strategy is drawn.
6. Formal technical reviews that are applied throughout
the software process.

SQA Goals
The major goals of SQA are as follows:

SQA activities are planned.

Non-compliance issues that cannot be resolved within
the software project are addressed by senior
management.

Adherence (commitment) of software products and
activities to the applicable standards, procedures, and
requirements is verified objectively.

 Affected groups and individuals are informed of SQA
activities and results.

SQA Plan
An SQA plan defines the quality processes and
procedures that should be used. This involves
selecting and instantiating standards for
products and processes and defining the required
quality attributes of the system.

The SQA plan provides a roadmap for
instituting software quality assurance.
Developed by the SQA group ,the plan serves as
a template for SQA activities that are instituted
for each software project.

An outline structure for a quality plan includes:
1. Product introduction: A description of the product, its
intended markets, and the quality expectations for the product.

2. Product plans: The critical release dates and responsibilities
for the product along with plans for distribution and product
servicing.

3. Process descriptions: The development and service
processes that should be used for product development and
management.

4. Quality goals: The quality goals and plans for the product
including an identification and justification of critical product
quality attributes.

5. Risks and risk management: The key risks that might affect
product quality and the actions to address these risks.

McCall’s Quality Factors

McCall, Richards, and Walters [MCC77] propose a
useful categorization of factors that affect software
quality.
This focus on three important aspects of a software
product: its operational characteristics, its ability to
undergo change, and its adaptability to new
environments.

Product Operation Quality Factors
Correctness: The extent to which a program satisfies its
specifications and fulfils the user’s objectives.

 Reliability: The extent to which a program can be
expected to perform its intended function with required
precision.

 Efficiency: The amount of computer resources required
by the software.

 Integrity: The extent to which access to software or
data by unauthorized persons can be controlled.

 Usability: The effort required for learning, operating,
preparing input, and interpreting output.

Product Revision Quality Factors
Maintainability: The effort required to
locate and fix an error in an operational
program.

 Testability: The effort required to test a
program to ensure it performs its intended
function.

 Flexibility: The efforts required to modify
an operational program

Product Transition Quality Factors
Portability: The effort required for
transferring a program from one hardware
configuration and software system
environment to another.

 Reusability: The extent to which a program
can be used in other applications.

 Interoperability: The efforts required to
couple one system to another.

References
References:-
Software Engineering for Students, A Programming Approach, Douglas Bell, 4th Edition,
Pearson Education, 2005
Software Engineering – A Practitioners Approach, Roger S. Pressman, 5th Edition, Tata
McGraw Hill, 2001
Quality Management, Donna C. S. Summers, 5th Edition, Prentice-Hall, 2010.
Total Quality Management, Dale H. Besterfield, 3rd Edition, Prentice Hall, 2003.
Software engineering: An Engineering approach, J.F. Peters, W. Pedrycz , John Wiley,
2004
Software Testing and Quality Assurance Theory and Practice, Kshirsagar Naik,
Priyadarshi Tripathy , John Wiley & Sons, Inc. , Publication, 2008
Software Engineering and Testing, B. B. Agarwal, S. P. Tayal, M. Gupta, Jones and
Bartlett Publishers, 2010