You are on page 1of 5

Introduction to Software Testing

What is Software Testing

Software testing is not about making sure that everything is ok .

Software Testing is Relentless Learning

Software Testing is exploring software with the intent of finding bugs.

Why is Software Testing Important?

Software testing is an integral part of the software development life cycle because
people are prone to making mistakes/errors. Some errors are insignificant, others
may have costly repercussions.

Since everyone makes mistakes, we have to thoroughly verify the result of our work,
as well as the work of others in everything we do.

Software Development Lifecycle Models

Sequential

A sequential development model describes the software development process as a


linear, sequential flow of activities. Any phase in the development process begins
when the previous phase is complete.

Incremental

Incremental development involves establishing requirements, designing, building,


and testing a system in pieces, the software’s features grow incrementally.

Sequential development models.

The Waterfall Model

● The waterfall model has a natural timeline where tasks are executed in a
sequential fashion.
● It is easy to manage and the process is well-documented.
● It is hard to get feedback passed up the waterfall. Test activities only occur after
all other development activities have been completed.
● High cost of defects.
The V-Model

● The V-model associates test levels with corresponding development phases.


● The V-model provides guidance that testing needs to begin as early as possible.
● Testing activities are carried out in parallel with development activities.
● It still has limited built-in ability to respond to adjustment.
● Testing is constrained by rigid time frames.
● There is a strict link between the corresponding level of development and testing.

Iterative development model

Iterative development occurs when groups of features are specified, designed, built,
and tested together in a series of cycles, often of a fixed duration.

Regression testing is increasingly important on all iterations after the first one.

Agile development

● Individuals and interactions over processes and tools


● Working software over comprehensive documentation
● Customer collaboration over contract negotiation
● Responding to change over following a plan

Types of Software Testing

● Functional Testing
● Non-functional Testing
● Change-related Testing
Functional testing

The functions are “what” the system should do.

Non-functional testing

Non-functional testing is the testing of “how well” the system behaves.

Functional Testing Types

● Unit Testing
● Integration Testing
● Smoke/Sanity
● User Acceptance
● Localization
● Globalization
● Interoperability

And so on…

Non-Functional Testing

● Performance
● Endurance
● Load
● Volume
● Scalability
● Usability

And so on...

Functional testing methods

● Requirements-based testing
● Business-process-based testing
● Experience-based testing

Testing functionality can be done from three perspectives:

● Functional correctness
● Functional appropriateness
● Functional completeness
Change-Related Testing

Confirmation testing

Confirmation testing (retesting) is re-execution of all test cases that failed due to the
defect to confirm that the defect has indeed been fixed.

Regression testing

The purpose of regression testing is to verify that modifications in the software have
not caused unintended adverse side effects and that the system still meets its
requirements.

Product and Project Risks

Risk - what can go wrong

Risk evaluation -- it’s an estimation of probability of this risk to happen

PRODUCT Risks

Product Risk - what can be wrong with the result (with the software you are
developing) (i.e. defects in production)

● Software cannot perform its intended functions.


● A system architecture may not adequately support some non-functional
requirements.
● A particular computation may be performed incorrectly in some circumstances.
● A loop control structure may be coded incorrectly.
● Response-times may be inadequate for a high-performance transaction
processing system.
● User experience feedback might not meet product expectations.

PROJECT Risks

Project Risks - what can go wrong in the process of development (i.e. lack of
specialists at a project)

● Organizational issue
● Project issues
● Political issues
● Technical issues
● Supplier issues

What to do with the RIsks?

a) mitigate - you can reduce the impact of a risk


b) contingency - prepare a plan for a case when risk worked
c) transfer - move that risk from your side to someone else’s
d) ignore - do nothing

Proper risk management involves:


a) analyze of what went and what can go wrong on a regular basis
b) prioritisation of the risks to determine the most important ones
c) understand how to reduce the risks (for some of them)
d) prepare contingency plans (for other)

Risk-based Testing and Product Quality

To determine

● The test techniques to be used.


● The particular levels and types of testing to be performed.
● The extent of testing to be carried out for the different levels and types of testing.
● Whether any activities in addition to testing could be employed to reduce risk.

To prioritize testing

What is risk-based testing?

● The ideas is to reduce PRODUCT risks


● You need to start Requirement based Testing as early as possible
● You need examine aspects of a product (i.e. requirements)
● You can use techniques
● You can involve related teams

You might also like