16
Testing

Software testing- an introduction

Embed Size (px)

DESCRIPTION

Software testing is a vital part in developing software.Software testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test.

Citation preview

Page 1: Software testing- an introduction

Testing

Page 2: Software testing- an introduction

Outline

AMBIKA J Asst.Professor Kings College Of Engineering2

TerminologyTypes of errorsDealing with errorsQuality assurance vs

TestingComponent Testing

Unit testingIntegration testing

Testing StrategyDesign Patterns &

Testing

System testingFunction testingStructure TestingPerformance testingAcceptance testingInstallation testing

Page 3: Software testing- an introduction

Some Observations

AMBIKA J Asst.Professor Kings College Of Engineering3

It is impossible to completely test any nontrivial module or any systemTheoretical

limitations: Halting problem

Practial limitations: Prohibitive in time and cost

Testing can only show the presence of bugs, not their absence (Dijkstra)

loop 200 timesloop 200 times

Page 4: Software testing- an introduction

Testing Activities

AMBIKA J Asst.Professor Kings College Of Engineering4

GlobalRequirements

User’s understandingTests by developerTests by developer

Performance

Client’s Understanding

of Requirements

FunctioningSystem

TestFunctional Test

User Environment

Use

UsableSystem

ValidatedSystem

AcceptedSystem

Tests (?) by userTests (?) by user

Tests by clientTests by client

Page 5: Software testing- an introduction

AMBIKA J Asst.Professor Kings College Of Engineering5

Levels of Testing in V ModelLevels of Testing in V Model

systemrequirement

s

systemintegration

softwarerequirement

s

preliminarydesign

detaileddesign

code &debug

acceptancetest

softwareintegration

componenttest

unittest

Time

Leve

l of

ab

stra

ctio

n

analyze and design

test and integrate

N.B.: component test vs. unit test; acceptance test vs. system integration

Page 6: Software testing- an introduction

Test Planning

AMBIKA J Asst.Professor Kings College Of Engineering6

A Test Plan:covers all types and

phases of testingguides the entire

testing processwho, why, when, whatdeveloped as

requirements, functional specification, and high-level design are developed

should be done before implementation starts

A test plan includes: test objectives schedule and logistics test strategies test cases

procedure data expected result

procedures for handling problems

Page 7: Software testing- an introduction

Testing

Fault Handling

Fault AvoidanceFault Tolerance

Fault Detection

Debugging

UnitTesting

IntegrationTesting

SystemTesting

VerificationConfigurationManagement

AtomicTransactions

ModularRedundancy

CorrectnessDebugging

PerformanceDebugging

ReviewsDesign

Methodology

AMBIKA J Asst.Professor Kings College Of Engineering7

Fault Handling Techniques

Page 8: Software testing- an introduction

Unit Testing:Individual subsystem

Carried out by developersGoal: Confirm that subsystems is correctly coded and carries out the intended functionality

Integration Testing:Groups of subsystems (collection of classes) and eventually the entire systemCarried out by developersGoal: Test the interface among the subsystem

AMBIKA J Asst.Professor Kings College Of Engineering 8

Page 9: Software testing- an introduction

System Testing:The entire systemCarried out by developersGoal: Determine if the system meets the requirements (functional and global)

Acceptance Testing:Evaluates the system delivered by developersCarried out by the client. May involve executing typical transactions on site on a trial basisGoal: Demonstrate that the system meets customer requirements and is ready to use

Implementation (Coding) and testing go hand in hand

AMBIKA J Asst.Professor Kings College Of Engineering 9

Page 10: Software testing- an introduction

Informal: Incremental coding

Static Analysis:Hand execution: Reading the source codeWalk-Through (informal presentation to others)Code Inspection (formal presentation to others)Automated Tools checking for

syntactic and semantic errorsdeparture from coding standards

Dynamic Analysis:Black-box testing (Test the input/output behavior)White-box testing (Test the internal logic of the subsystem or object)Data-structure based testing (Data types determine test cases)

AMBIKA J Asst.Professor Kings College Of Engineering10

Unit Testing

Page 11: Software testing- an introduction

Black-box Testing

AMBIKA J Asst.Professor Kings College Of Engineering11

Focus: I/O behavior. If for any given input, we can predict the output, then the module passes the test.Almost always impossible to generate all possible

inputs ("test cases") Goal: Reduce number of test cases by equivalence

partitioning:Divide input conditions into equivalence classesChoose test cases for each equivalence class.

(Example: If an object is supposed to accept a negative number, testing one negative number is enough)

Page 12: Software testing- an introduction

Black-box Testing (Continued)

AMBIKA J Asst.Professor Kings College Of Engineering12

Selection of equivalence classes (No rules, only guidelines):Input is valid across range of values. Select test cases

from 3 equivalence classes:Below the range Within the range Above the range

Input is valid if it is from a discrete set. Select test cases from 2 equivalence classes:Valid discrete valueInvalid discrete value

Another solution to select only a limited amount of test cases: Get knowledge about the inner workings of the unit being

tested => white-box testing

Page 13: Software testing- an introduction

White-box Testing

AMBIKA J Assistant Professor / Kings College Of Engineering, Thanjavur.13

Focus: Thoroughness (Coverage). Every statement in the component is executed at least once.

Four types of white-box testingStatement TestingLoop TestingPath TestingBranch Testing

Page 14: Software testing- an introduction

White-box Testing (Continued)

AMBIKA J Asst.Professor Kings College Of Engineering14

Statement Testing (Algebraic Testing): Test single statements

Loop Testing:Cause execution of the loop to be skipped completely.

(Exception: Repeat loops)Loop to be executed exactly onceLoop to be executed more than once

Path testing:Make sure all paths in the program are executed

Branch Testing (Conditional Testing): Make sure that each possible outcome from a condition is tested at least once

Page 15: Software testing- an introduction

Loop Testing

AMBIKA J Asst.Professor Kings College Of Engineering15

Nested Nested LoopsLoops

ConcatenatedConcatenated Loops Loops Unstructured Unstructured

LoopsLoops

Simple Simple looploop

White-Box Testing

Why is loop testing important?

[Pressman]

Page 16: Software testing- an introduction

AMBIKA J Asst.Professor Kings College Of Engineering16

THANK U