0% found this document useful (0 votes)
6 views64 pages

1- Software Testing Introduction

Uploaded by

achillefotso43
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views64 pages

1- Software Testing Introduction

Uploaded by

achillefotso43
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 64

Software Testing

Fundamentals

Régis ATEMENGUE
Software Engineer | Technical Instructor.
@regis_ate | www.regisatemengue.com
Course Objectives
Understanding the fundamentals
of Software Quality

Understanding the fundamentals


of Software Testing

Understanding the difference between Testing and


Debugging

Explain the limits of testing

@regis_ate | www.regisatemengue.com
2
Course overview

Fundamentals of Software Quality

Software Engineering Refresher

Fundamentals of Software Testing

@regis_ate | www.regisatemengue.com
33
Fundamentals of Software Quality

@regis_ate | www.regisatemengue.com
4
Fundamentals of Software Quality

Importance of Quality Software

Goal of Software Quality

Definition of Software Quality

History Failtures

Modern Software Quality Management

@regis_ate | www.regisatemengue.com
5
Importance of Quality Software

@regis_ate | www.regisatemengue.com
6
Fundamentals of Software Quality
Importance of Quality Software

The mission of a software company is to develop high-quality innovative products


and services at a competitive price to its customers and to do so ahead of its
competitors.

This requires a clear vision of the business, a culture of innovation, an


emphasis on quality, detailed knowledge of the business domain, and a sound
product development strategy.

It requires a focus on software quality and customer satisfaction, and quality


must be built into the software product so that customers remain loyal to the
company

@regis_ate | www.regisatemengue.com
7
Fundamentals of Software Quality
Importance of Quality Software

Customers have very high expectations of quality and


expect high-quality software products to be consistently
delivered on time and within budget.

The focus on quality requires effective software processes to


be in place so that
quality software may be consistently produced.

Software quality is crucial for the success and


sustainability of any software product. It ensures that the
software meets user expectations, performs reliably, and
delivers value.

@regis_ate | www.regisatemengue.com
8
The goal of Software Quality

@regis_ate | www.regisatemengue.com
9
Fundamentals of Software Quality
The goal of Software Quality

The goal of software quality is to ensure that a


software product meets specified requirements,
functions correctly and provides a seamless,
reliable, and secure experience for users.

It focuses on delivering software that is efficient,


maintainable, scalable, and free of defects while
aligning with business objectives and user
expectations

@regis_ate | www.regisatemengue.com
10
The definition of Software Quality

@regis_ate | www.regisatemengue.com
11
Fundamentals of Software Quality
Definition of Software Quality

Software quality refers to the degree to which a software product


meets specified requirements, satisfies user needs, and functions
efficiently, securely, and reliably under different condition.

@regis_ate | www.regisatemengue.com
12
Software failures in the story

@regis_ate | www.regisatemengue.com
13
Fundamentals of Software Quality
Software failures in the story

Facebook's Outage (2021)

In October 2021, Facebook and its other


platforms, like Instagram and WhatsApp,
experienced a global outage that lasted for
several hours.

The outage was caused by a configuration


change with unintended consequences, making
the platforms inaccessible to users worldwide

@regis_ate | www.regisatemengue.com
14
Fundamentals of Software Quality
Software failures in the story

Microsoft's Azure Cloud (2020)

Microsoft's Azure cloud services faced a


widespread outage that affected multiple
Microsoft services for several hours.

An error caused the outage during a routine code


update, which resulted in servers becoming
overwhelmed and causing disruptions to services
like Office 365, Teams, and Azure

@regis_ate | www.regisatemengue.com
15
Fundamentals of Software Quality
Software failures in the story

The Boeing Starliner Orbital Flight Test (2019):

During an uncrewed test flight to the International


Space Station, Boeing's Starliner spacecraft
encountered software issues that prevented it from
reaching the intended orbit, leading to a premature
end of the mission.

source wikipedia: Boeing Orbital Flight Test

@regis_ate | www.regisatemengue.com
16
Fundamentals of Software Quality
Summary of Lessons

Importance of Thorough Testing

Importance of Thorough Testing: Comprehensive and rigorous testing of software


systems is crucial to identify and rectify potential issues before deployment. Testing
should cover various scenarios and edge cases to minimize the chances of critical
failures.

User Experience and Feedback Incorporation: Considering user feedback and focusing
on user experience during software development can help identify potential issues
before they become widespread problem

Source: Biggest Software Failures in History

@regis_ate | www.regisatemengue.com
17
Modern Software Quality Management

@regis_ate | www.regisatemengue.com
18
Fundamentals of Software Quality

Modern Software Quality Management


• Project management

• Estimation

• Risk management

• Requirements’ development and management

• Design and development

• Software development lifecycles

• Quality assurance/management

@regis_ate | www.regisatemengue.com
19
Fundamentals of Software Quality
Modern Software Quality Management

• Software inspections

• Software testing

• Supplier selection and management

• Configuration management

• Customer satisfaction process

• Continuous improvement.

@regis_ate | www.regisatemengue.com
20
Fundamentals of Software Quality
Modern Software Quality Management(Software Inspections)

Software Inspection: The process


mandates that requirement documents,
design documents, source code, and test
plans all be formally inspected by experts
independent of the author of the
deliverable.

@regis_ate | www.regisatemengue.com
21
Fundamentals of Software Quality
Modern Software Quality Management(Software Inspections)

Software testing plays a key role in verifying that the


software is fit for purpose, and two key types of
software testing are black box and white box
testing.

White box testing involves checking that every path


in a module has been tested and involves
defining and executing test cases to ensure code
and branch coverage.

The goal of black box testing is to verify the


functionality of a module or feature or the com-
plete system itself.

@regis_ate | www.regisatemengue.com
22
Software Engineering Refresher

What’s software Engineering (SE)

Software Process and Lifecycle

Software Development LifeCyle

@regis_ate | www.regisatemengue.com
23
What’s software Engineering ?

@regis_ate | www.regisatemengue.com
24
What’s software Engineering ?

The IEEE 610.12 definition is as follows:

Software engineering is the application of a systematic, disciplined, quantifiable


approach to the development, operation, and maintenance of software; that is,
the application of engineering to software, and the study of such approaches
inerized applications”

@regis_ate | www.regisatemengue.com
25
Software Engineering Refresher
Challenge

The challenge in software engineering is to


deliver high-quality software on time
and on budget to customers

@regis_ate | www.regisatemengue.com
26
Software Process and Lifecycle

@regis_ate | www.regisatemengue.com
27
Software Process and Lifecycle

There are several well-known lifecycles employed, such as the waterfall model
the spiral model, the Rational Unified Process, and the Agile methodology

The choice of a particular software development lifecycle for is determined from


the needs of the specific project.

Waterfall Lifecycle
Spiral Lifecycle

Agile Development

@regis_ate | www.regisatemengue.com
28
Software Process and Lifecycle
Waterfall Lifecycle

The waterfall model starts with requirements gathering and definition. It


is followed by the system specification (of the functional and non-functional
requirements), the design and implementation of the software, and
comprehensive testing.

The testing generally includes unit, system, and user acceptance testing.
The waterfall model is employed for projects where the requirements can be
identified early in the project lifecycle or are known in advance

@regis_ate | www.regisatemengue.com
29
Software Process and Lifecycle
Waterfall Lifecycle

@regis_ate | www.regisatemengue.com
30
Software Process and Lifecycle
The Spiral Model

The spiral model is useful for projects where the


requirements are not fully known at project
initiation, or where the requirements evolve as a
part of the development
lifecycle.

The development proceeds in a number of spirals,


where each spiral
implements new functionality and typically
involves determining objectives and
analysing the risks, updates to the requirements,
design, code, testing, and a user
review of the particular iteration or spiral
@regis_ate | www.regisatemengue.com
31
Fundamentals of Software Testing

What’s Testing ?

What’s Software Testing ?

What’s should we test ?

Principles of Testing

Refresh Concepts Functional and Non functional


Requirement

@regis_ate | www.regisatemengue.com
32
What’s Testing ?

@regis_ate | www.regisatemengue.com
31
What’s Testing ?

Testing is the process of executing the program with the intent of finding faults.

As we know Software testing is the fourth phase of the software development life
cycle (SDLC). About 70% of development time is spent on testing

Testing is not a one-time event but a continuous process that begins in the early
stages of development and continues throughout the software’s life cycle.

@regis_ate | www.regisatemengue.com
34
Debbuging vs Testing

@regis_ate | www.regisatemengue.com
35
Debbuging vs Testing

@regis_ate | www.regisatemengue.com
36
Debbuging vs Testing

@regis_ate | www.regisatemengue.com
37
Debbuging vs Testing

@regis_ate | www.regisatemengue.com
38
Debbuging vs Testing

@regis_ate | www.regisatemengue.com
39
Debbuging vs Testing

@regis_ate | www.regisatemengue.com
40
Debbuging vs Testing

Testing is different from debugging. Removing errors


from your programs is known as debugging but testing
aims to locate as yet undiscovered errors.

We test our programs with both valid and invalid inputs


and then compare our expected outputs as well as the
observed outputs (after execution of software).

Remark
Please note that testing starts from the requirements analysis
phase only and goes until the last maintenance phase
@regis_ate | www.regisatemengue.com
41
What’s Software Testing ?

@regis_ate | www.regisatemengue.com
42
What’s Software Testing ?

Software testing is a crucial part of the software development process. It is the


process of evaluating a software system or application to find defects, errors, or
bugs and verifying that it meets its intended requirements and functions
correctly.

@regis_ate | www.regisatemengue.com
43
What’s Software Testing ?

There are various definitions of testing that are given below:

“Testing is the process of exercising or evaluating a system or


system component by manual or automated means to verify that it
satisfies specified requirements.” [IEEE 83a]

“Software testing is the process of executing a program or system


with the intent of finding errors.” [Myers]

It involves any activity aimed at evaluating an attribute or


capability of a program or system and determining that it meets its
required results. [Hetzel]
@regis_ate | www.regisatemengue.com 44
What’s Software Testing ?

Testing is not:

The process of demonstrating that errors are not present.

The process of showing that a program performs its intended


functions correctly.

The process of establishing confidence that a program does


what it is supposed to do.

@regis_ate | www.regisatemengue.com
45
Why Should We Test?

@regis_ate | www.regisatemengue.com
46
Why Should We Test?
Testing is necessary. why:

The Technical Case:

Competent developers are not infallible.

The implications of requirements are not always foreseeable.

The behavior of a system is not necessarily predictable from its components.

Languages, databases, user interfaces, and operating systems


have bugs that can cause application failures.

@regis_ate | www.regisatemengue.com
47
Why Should We Test?
Testing is necessary. why:

The Business Case:

1 If you don’t find bugs, your customers or users will.


.
2 Post-release debugging is the most expensive form of development.
.
3 Buggy software hurts operations, sales, and reputation.

@regis_ate | www.regisatemengue.com
48
Why Should We Test?
Testing is necessary. why:

The Professional Case:

1 Test case design is a challenging and rewarding task.

2 Good testing allows confidence in your work.

3 Systematic testing allows you to be most effective.

4 Your credibility is increased and you have pride in your efforts

@regis_ate | www.regisatemengue.com
49
Why
WhyShould
ShouldWe
WeTest?
Test?

Some key figures:

About 70% of development time was spent on testing phase,

30 to 50% of the total project budget was spent on the testing


phase only.

Software testing constitutes about 40% of overall effort.

@regis_ate | www.regisatemengue.com
50
Principles of Testing

@regis_ate | www.regisatemengue.com
51
Principles of Testing

1. Testing should be based on user requirements: This is in order


to uncover any defects that might cause the program or system
to fail to meet the client’s requirements.

2. Testing time and resources are limited: Avoid redundant tests.

3. Exhaustive testing is impossible: As stated by Myer, it is


impossible to test everything due to the huge data space and the
large number of paths that a program flow might take.

@regis_ate | www.regisatemengue.com
52
Principles of Testing

5. Test planning should be done early: This is because test


planning can begin independently of coding and as soon as the
client requirements are set.

6. Testing should begin “in small” and progress toward testing


“in large”: The smallest programming units (or modules)
should be tested first and then expanded to other parts of the
system.

@regis_ate | www.regisatemengue.com
53
Principles of Testing

7. Testing should be conducted by an independent third party.

8. All tests should be traceable to customer requirements.

9. Assign best people for testing. Avoid programmers.


10. Test should be planned to show software defects and not their
absence.

@regis_ate | www.regisatemengue.com
54
Principles of Testing

7. Testing should be conducted by an independent third party.

8. All tests should be traceable to customer requirements.

9. Assign best people for testing. Avoid programmers.


10. Test should be planned to show software defects and not their
absence.

11. Prepare test reports including test cases and test results to
summarize the results of testing.
12. Advance test planning is a must and should be updated in a
timely manner.

@regis_ate | www.regisatemengue.com
55
Important Concepts Refresher

55
Important Concepts Refresher
Functional and non-functional requirements

In computer science the software requirements are the descriptions


of what the system should do and/or not do, and the constraints
on how it work. There are two types

Functional
Requirements
Non-Functional
Requirements

@regis_ate | www.regisatemengue.com
57
Important Concepts Refresher
Functional vs Non-functional
Functional Non-Functional

Description of what the system Description of how the system


should do should work

Defines a system or its Defines the quality attribute of


component. software.

Helps you verify the Helps you to verify the


functionality of the software. performance of the software.

Specified by User or Customer. Specified by Software


developer .
@regis_ate | www.regisatemengue.com
58
Important Concepts Refresher
Functionnals Requirement & Functional Testing

This type of testing is performed to validate that the software is working as


expected and meets the user’s requirements. The primary focus is on the
software’s functionality and includes various levels of testing such as unit
testing, integration testing, system testing, and acceptance testing

@regis_ate | www.regisatemengue.com
59
Important Concepts Refresher
Functionnals Requirement & Functional Testing

Test Pyramind
@regis_ate | www.regisatemengue.com 60
Important Concepts Refresher
Non Functionanl Requirement & Non functinal Testing

This type of testing focuses on the software’s nonfunctional aspects, such


as performance, security, and usability. The objective is to ensure that the
software meets its nonfunctional requirements and provides a positive
user experience.

@regis_ate | www.regisatemengue.com
4
Important Concepts Refresher
Non Functionanl Requirement & Non functinal Testing
Performance testing involves testing the software’s performance
under various conditions, such as load, stress, and scalability.

Security testing involves testing the software’s security features to


ensure that it is secure from various types of attacks and vulnerabilities.

Usability testing involves testing the software’s user interface and user
experience to ensure that it is user-friendly and easy to use.

Compatibility testing is testing whether the system can work with


different software, hardware, and operating systems.
Scalability testing is testing whether the system can handle increasing
amounts of data and users. 4
Limitations of Testing

@regis_ate | www.regisatemengue.com
16
Limitations of Testing

1. Testing can show the presence of errors—not their absence.


2. No matter how hard you try, you will never find the last bug in
an application.
3. The domain of possible inputs is too large to test.
4. There are too many possible paths through the program to test.
5. In short, maximum coverage through minimum test-cases. That
is the challenge of testing.
6. Various testing techniques are complementary in nature and it
is only through their combined use that one can hope to detect
most errors

@regis_ate | www.regisatemengue.com
4

You might also like