0% found this document useful (0 votes)
36 views36 pages

Chapter 7 - Software Quality Assurance

Uploaded by

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

Chapter 7 - Software Quality Assurance

Uploaded by

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

Hawassa University Bensa Daye

Campus
DEPARTMENT OF COMPUTER
SCIENCE

Software Engineering (InSy3033)

Chapter 7
Software Testing and Quality Assurance

Compiled by Talegeta G.
.
Software testing is:
Software testing determines the correctness, completeness and quality of software
being developed.
an activity of checking whether the actual results match the expected results and
to ensure that the software is defect free.
the process of verifying and validating a software application to check whether it
is working as expected or not.
The intent is to find defects and improve the product quality.

It also helps to identify errors, gaps or missing requirements in contrary to the
actual requirements.
It can be done either manually or using automated tools.
Software testing is aimed at identifying any bugs, errors, defect, or failures present in the
software.
Error: A human action that produces an incorrect result.
It refers to a missing or incorrect human action resulting in certain fault(s) being
injected into a software.
Fault: An incorrect step, process, or data definition in a computer program.
Fault refers to an underlying condition within a software that causes certain failure(s) to
occur;
Failure: The inability of a system or component to perform its required functions within
specified performance requirements.
If a build* does not meet the requirements.
Failures, faults, and errors are collectively referred to as defects in literature.
Software problems or defects, are also commonly referred to as “Bugs/Issues”
Why software testing is required?
Generally, software testing is required:

✓ To ensure that the product is inline with the requirement of the client.

✓ To ensure that the system is free from any bug that can cause any kind of failure.

✓ To ensure the quality of the product.

✓ To check the reliability of the software.

✓ To make sure that the final product is user friendly.

✓ To stay in the business.


Who does the software testing?
There is often a debate on who should actually test the software.

A developer generally checks his code several times before he submits it for
testing and still in most cases it is never error-free because a developer is
generally blind to his own mistakes.

A tester on the other hand looks at software from clients’ point of view.

He is unbiased and his focus is only on the specifications and the requirements.

So, a tester is able to look into areas that a developer may ignore.

So, the testing should always be carried out by independent testers.


What has to be really tested?
When is the software testing done?
The earlier the testing team starts testing the software, the easier it would be for the
developers to complete the project on time and this would also save a lot of time, money
and effort.

Starting testing in the later stages of development can turn out to be an expensive matter
as it is very difficult to rectify defects once the software has reached the final stages of
development.

Dividing software development into stages and then testing work done in every stage
before moving on to the next stage helps in finishing the software development in time
with good results.
Advantages of testing
It removes errors, which prevent software from producing outputs which are
not according to user requirements.

It removes errors that lead to software failure.

It ensures that the software conforms to business as well as user’s needs.

It ensures that the software is developed according to user requirements.

It improves the quality of the software by removing maximum possible errors
from it.
Software Verification and Software Validation
Software testing is closely related to the terms verification and validation.

Verification: refers to the process of ensuring that the software is developed


according to its specification.

Is the software being developed in the right way?

Validation: refers to the process of checking that the developed software


meets the requirements specified by the user.

Is the right software being developed?


Software Verification vs Software Validation
Software Testing Principles
Principle 1. Testing shows the presence of bugs

Testing shows the defects but cannot prove that there are no defects. Meaning that the
testing team cannot say that the product is 100% defect-free.

Principle 2. Exhaustive testing is impossible

It is impossible to test all possible combinations of input cases and data.

Principle 3. Early testing

The sooner we start the testing activities, the better we can utilize the available time.

Principle 4. Defect clustering

During testing, it can be observed that most of the reported defects are related to small
number of modules within a system.
….cont’d
Principle 5. The pesticide paradox

 If you keep running the same set of tests over and over again, no more new
defects will be discovered by those test cases.

Principle 6. Testing is context dependent

Different methods, techniques and types of testing are related to the type and
nature of the application.

Principle 7. Absence of errors fallacy

Just because testing didn’t find any defects in the software, it doesn’t mean that the
software is ready to be shipped.
Software Testing Life Cycle (STLC)
Software testing life cycle defines the stages in testing of software.

It is executed in a systematic and planned manner.

In STLC process, various activities are carried out to improve the quality of the product.

STLC, in general, comprises of the following phases:


1. Requirement Analysis
Before we go for designing any software, we need to analyze the requirements.
Like:
What is the purpose of the application?

How many users are going to use this?

What is the traditional process of the client and how our software is
going to help our client?
2. Test Planning
Test plan has to have sufficient information on:

✓test tasks, (what)

✓test strategy, (how)

✓test approach, (how)

✓testing objectives, (why)

✓resources (manpower, software, hardware) required for testing,

✓test schedule, (when)

✓test estimation and (how much)

✓test deliverables. (outputs)


How to write a Software Test Plan?
Follow the eight steps below to create a test plan as per IEEE 829 standard.
3. Test Design
In software engineering, test design is the process of creating and writing test
artifacts for testing a software.

Tasks include:

✓Identifying test basis

✓Developing test scenarios

✓Identifying and describing test cases

✓Developing test suite

✓Identifying and structuring test scripts


4. Test Environment Setup

Every software is developed by considering hardware and software


requirement.

Here we setup the testing environment (e. g. server/client/network, or install


the setup if it is window’s application etc.) with the goal of replicating the end-
users’ environment.

This step decides on which Platform/OS the tester needs to perform testing of
project.
5. Test Execution

The tester has to execute his written test cases against the software that he has
written during the test case design phase.

The tester executes the test cases, checks the response of the software and verify
the response of software whether is it as expected or not.

After executing each test cases, the tester verifies the output and if that output is
not as expected then it means that the test case has failed and a bug has found then
tester report that bug to team lead.

Then bugs will be reported back to the development team for correction and

retesting will be performed.


6. Test Reporting

This is the last phase of software testing life cycle. It is conducted after testing and
releasing of the software.

During this phase, all the testing team meet and discuss about the software and the
issues they faced during the testing.

Also they collect all the testing artifacts (documents). This meet up will help the
testing team to improve the testing process
Software Test Management
Software test management is a process of planning, executing, monitoring and
controlling software testing activities.

It is the practice of organizing and controlling the processes and artifacts required
for the testing effort throughout the project cycle.

Software test management often has multifunctional capabilities such as test ware
management, test scheduling, the logging of results, test tracking, incident
management and test reporting.
Types of Software Testing
The software testing is generally divided into two major categories, which further
consist of numerous testing methods within them.
1. Functional testing
2. Non-functional testing
….cont’d
.

Unit testing is performed by the team of developers before the setup is handed over to the testing
team to formally execute the test cases.
In integration testing, individual software modules are integrated logically and tested as a group.

System Testing is the first level of functional testing where the application is tested as a whole.

User acceptance testing, is conducted by the Quality Assurance (QA) Team or customers to
check whether the application meets the intended specifications and satisfies clients’
requirements.
UAT includes:
a) Alpha Testing
b) Beta Testing
c) Gamma Testing
….
.
cont’d
Alpha testing:- where the system is run in a simulated environment using simulated data.

Alpha testing is a type of acceptance testing performed to identify all possible


issues/bugs before releasing the product to everyday users or public.

Beta testing:- where the system is run in a live environment using real data.

Beta testing is done outside the software developing organization, not by its personnel.

Gamma testing:- is a final stage of software testing before an appropriate public release,
it is conducted primarily for safety purposes. It is intended to identify and fix minor
defects that were found during beta testing.
Unit testing

Is performed to test the individual units of software.

Unit testing is not just performed once during the software development, but
repeated whenever the software is modified or used in a new environment.

Each unit is tested separately regardless of other units of software.

The developers themselves perform this testing.

The methods of white box testing are used in this testing.


Unit testing performs the following:

It tests data structures that represent relationships among individual data elements.

It checks the range of inputs given to units.

It ensures that the data entered in variables is of the same data type as defined in
the unit.

It checks all arithmetic calculations present in the unit with all possible
combinations of input values.

Tests all control paths to uncover maximum errors that occur during the execution
of conditions present in the unit being tested.

It ensures that all statements in the unit have been executed at least once.
Integration test
In integration test the units validated during unit testing are combined to form a subsystem

Is aimed at ensuring that all the modules work properly as per the user requirements when
they are put together .

The objective is to take all the tested individual modules. integrate them, test them again,
and develop the software, which is according to design specification.

It ensures that all modules work together properly and transfer accurate data across their
interfaces.

It is performed with an intention to uncover errors that lie in the interfaces among the
integrated components.

It tests those components that are new or have been modified or affected due to a change.
System testing

Is testing conducted on a complete, integrated system to evaluate the system’s


compliance with its specified requirement.

The system is tested against non functional requirements such as accuracy, reliability,
and speed.

Is to validate and verify the functional design specifications and to check how integrated
modules work together.

Evaluates the system’s interfaces to other applications and utilities as well as the
operating environment.

Test some properties of the developed software(usable, secure, compatible, documented


Acceptance testing
Is formal testing with respect to users needs, requirements, and business processes
conducted to determine whether or not a system satisfies the acceptance criteria and to
enable the user, customers or other authorized entity to determine whether or not to
accept the system.

Is performed to ensure that the functional, behavioral, and performance requirements of
the software are met.

The software is tested and evaluated by a group of users either at developer’s site(alpha
testing) or user’s site(beta testing).

To perform acceptance testing, a predetermine set of data is given to the software.
Software Testing Techniques

Software testing technique includes the various strategies or approaches


used to test an application to ensure how it functions and behaves as
expected.

Methods in which the internal structure, design or implementation of a


software is tested
.
. Static software testing techniques
Static software testing techniques are used for testing code, requirements and design
documents and put review comments on the work document.

In this type of testing, the code is not executed.

It can be done manually or by a set of tools/software.

Informal reviews are applied many times during the early stages of the life cycle of the
document.
 A two persons team can conduct an informal review.

Walkthrough is not a formal process of review and is carried out by authors.

The authors guide the participants through the document and try to understand their
thought processes.
….. cont’d
A technical review is carried out by a trained moderator or technical expert.

Static code review is a systematic review of the software source code,


without executing the code.

The management review is a cross-functional review undertaken by an


organization’s top management.

An inspection is the most formal type of review and is conducted by trained


moderators.

An audit is an independent examination of all the documents related to the


software, carried out by an external agent.
Dynamic software Testing Techniques

Dynamic testing involves execution of the test object (application) on a


computer.

This testing technique is also called execution technique or validation testing

1. Specification-Based / Black Box Testing Technique uses the software’s


external descriptions
This implies that a tester who does not have any knowledge about the code
or internal structure can also perform the test.
….
. cont’d
2. Structure-based / White Box Test Technique :The exact opposite of the black box
test design technique, white box test design technique necessitates knowledge of the
internal structure of a program.

Software Quality Assurance:

A planned and systematic pattern of all actions necessary to provide adequate


confidence that an item or product conforms to established technical requirements.

A set of activities designed to evaluate the process by which the products are
developed or manufactured. Contrast with: quality control.
.

You might also like