agilis hálózati szolgálatatásfejlesztés

52
Testing Gusztáv Adamis [email protected]

Upload: others

Post on 24-Jun-2022

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Agilis hálózati szolgálatatásfejlesztés

Testing

Gusztáv Adamis [email protected]

Page 2: Agilis hálózati szolgálatatásfejlesztés

› White box testing – typically during development

– Access to code

– Access to development environment

› Black box testing

– Internal structure of the code is not known/interested

– Checks the communication between the tested entity and its

environment

– IUT/SUT – Implementation/System Under Test

– Tester – may be decomposed

– PCO – Point of Control and Observation

White and Black box testing

Agilis hálózati szolgáltatásfejlesztés 2

Page 3: Agilis hálózati szolgálatatásfejlesztés

› Black box testing

– Implementation/System

Under Test

– Point of Control and

Observation

› Not possible to test all the

situations

– Test Purposes

Black Box Testing

Agilis hálózati szolgáltatásfejlesztés 3

IUT

PCO

! A

? B

Verdict:

pass,

fail,

inconclusive

Page 4: Agilis hálózati szolgálatatásfejlesztés

› Checks if IUT

conforms to its

specification

› Experiments

programmed into Test

Cases

conformance Testing

Agilis hálózati szolgáltatásfejlesztés 4

Informal

specification

Formal

specification

Implementation

Test cases

Page 5: Agilis hálózati szolgálatatásfejlesztés

› Verification:

– Check the correctness of formal model

› ATS – Abstract Test Suite

– High-level communication

– Test for every feature

– Parameters

› ETS – Executable Test Suite

– Coding/Decoding of messages

– Tests only for implemented features

– Parameters substituted by concrete

values

› Validation

– Checks the correctness of ATS

Test Suites

Agilis hálózati szolgáltatásfejlesztés 5

Protocol

specification

Modeling

Test results

ETS

ATS

Formal protocol

description

Test Purposes

Test execution

Validation

Verification

Page 6: Agilis hálózati szolgálatatásfejlesztés

› Implementation of a Test Purpose

– TP defines an experiment

› Focuses on a single requirement

› Returns verdict (pass, fail,

inconclusive)

› Typically a sequence of action-

observation-verdict update:

– Action (stimulus): non-blocking

(e.g. transmit PDU, start timer)

– Observation (event): takes care of

multiple alternative events (e.g.

expected PDU, unexpected PDU,

timeout)

Test cases in black-box test

Agilis hálózati szolgáltatásfejlesztés 6

alternatives

alternatives

P

P F I

I F

non-blocking

Stimulus non-blocking

blocking events

blocking events

Page 7: Agilis hálózati szolgálatatásfejlesztés

Test Tree

Agilis hálózati szolgáltatásfejlesztés 7

!A !A !A !A

?B ?B ?F ?B ?F

!C !C !C

?D ?F ?D ?F

!E !E

!A

?B

!C

?D

!E

?F

?F

Possible event

sequences Behaviour tree Alternatives

Page 8: Agilis hálózati szolgálatatásfejlesztés

› Manual test execution

› Automated test execution

– Test scripts

– Log files

Test Execution

Agilis hálózati szolgáltatásfejlesztés 8

Page 9: Agilis hálózati szolgálatatásfejlesztés

Test arrangement and its ttcn-3 model – tester is a peer entity of IUT

Agilis hálózati szolgáltatásfejlesztés 9

Test System

Network

IUT

SAP

ASPs ASPs

PCO

SUT

Network

Test Port

IUT

Port

MTC

System ASPs

Page 10: Agilis hálózati szolgálatatásfejlesztés

TTCN-3 view of testing – distributed tester

Agilis hálózati szolgáltatásfejlesztés 10

RNC1

Abstract Test System SUT

Network

Real Test System Interface

Abstract Test System Interface

IUT

(MSC1)

SAP SAP SAP SAP

RNC2

VLR HLR

MSC2

MTC

connection

coordination

mapping ASPs

Service

Primitives

PTC

Page 11: Agilis hálózati szolgálatatásfejlesztés

› Proprietary communication interface between TITAN and SUT (i.e. abstract TTCN-3 test configuration and real world)

› Translates abstract TTCN-3 messages into real-world messages

› It contains: – Formal Data Type Definitions

– Encoder/Decoder Functions

– (Utility Functions)

– Transport

Test System Architecture

What is a test Port (TP)?

TTCN-3 abstract environment

type record…

p.send(t_MyType)

010100110110….

SUT

TESTPORT

Formal Data Type Definitions

Encoder/Decoder Functions

Utility function

Transport

Test Port

Agilis hálózati szolgáltatásfejlesztés 11

Page 12: Agilis hálózati szolgálatatásfejlesztés

› Protocol modules implement the message structure of the related protocol in a formalized way, using the standard specification language TTCN-3.

› It contains: – Formal Data Type Definitions

– [Encoder/Decoder Functions]

– [Utility Functions]

Test System Architecture

What is a Protocol Module (PM)

PDU( FABABA12)

Protocol Module

11100 010100110110…. TestPort

SUT

Formal Data Type Definitions

Encoder/Decoder Functions

Utility function

Protocol Module

TTCN-3 abstract environment

type record…

p.send(t_MyType)

Agilis hálózati szolgáltatásfejlesztés 12

Page 13: Agilis hálózati szolgálatatásfejlesztés

TITAN Block diagram (simplified)

Agilis hálózati szolgáltatásfejlesztés 13

TTCN-3 ASN.1 compiler

Base

Library

Test port(s) C++ compiler

imports

TTCN-3

module(s)

ASN.1

module(s)

User code

C/C++

TITAN

Generated C++ source

Executable Test Suite

user code

Utilities Main Controller

skeleton

Config. file

Page 14: Agilis hálózati szolgálatatásfejlesztés

› Abstract test cases should contain

– preamble: sequence of test events

to drive IUT into initial testing state

from the starting stable testing state

– test body: sequence of test events

to achieve the test purpose

– postamble: sequence of test events

which drive IUT into a finishing stable

testing state

› Preamble/postamble may be

absent

Independence and structure of abstract test cases

Agilis hálózati szolgáltatásfejlesztés 14

idle

postamble

idle

preamble body

idle

Page 15: Agilis hálózati szolgálatatásfejlesztés

› All test cases in an ATS must be sound

– Sound test case results pass verdict if IUT is correct

(practically impossible with finite number of test cases)

– Exhaustive test case gives fail verdict if IUT behaves incorrectly

– Complete test case is both sound and exhaustive

› Must not terminate with none or error verdict

Requirements on test suites

Agilis hálózati szolgáltatásfejlesztés 15

Page 16: Agilis hálózati szolgálatatásfejlesztés

› Test outcome

– foreseen

– unforeseen – test case errors

› Verdict

– pass

– fail

– inconclusive

› Test log

› Requirements on test outcomes

– repeatable

– comparable

– auditable

Test Results

Agilis hálózati szolgáltatásfejlesztés 16

Page 17: Agilis hálózati szolgálatatásfejlesztés

› Capability Test

– Static analysis

› if protocol options selected correctly

› Basic Interconnection Test

– IUT able to communicate at all

› Behaviour Test

› Conformance Resolution Test

– Non standardised methods

– Multilayer tests

– Detects reasons of non-conform situations

› inconclusive

Conformance Test Phases

Agilis hálózati szolgáltatásfejlesztés 17

Page 18: Agilis hálózati szolgálatatásfejlesztés

› PICS: Protocol Implementation Conformance Statement

› PIXIT: Protocol Implementation eXtra Information on

Testing

› PCTR/SCTR: Protocol/System Conformance Test Report

Conformance Test Documents

Agilis hálózati szolgáltatásfejlesztés 18

SCTR

PIXIT

Protocol

Specification

Test Purposes

PICS Product

(IUT)

Abstract Test Suite (ATS)

Executable

Test Suite

(ETS)

PCTR

Test Log

Page 19: Agilis hálózati szolgálatatásfejlesztés

› Only observes

– waits for error

› no guarantee to happen

› Protocol Analyzer

Passive Tester

Agilis hálózati szolgáltatásfejlesztés 19

Protocol

Entity

Protocol

Entity

Protocol

Tester

Page 20: Agilis hálózati szolgálatatásfejlesztés

› Active

– can send messages

› Valid testing

› Provocative testing

– Invalid

› Sends syntactically incorrect messages

– Improper

› Sends syntactically correct messages, but at wrong time/state

› Test cases are generated before testing starts

Active Tester

Agilis hálózati szolgáltatásfejlesztés 20

Protocol

Entity

Protocol

Tester

Page 21: Agilis hálózati szolgálatatásfejlesztés

› ISO 9646

› Upper Tester

› Lower Tester

› Local Test Method

› Distributed Test Method

› Coordinated Test Method

› Remote Test Method

Test Arrangements

Agilis hálózati szolgáltatásfejlesztés 21

Page 22: Agilis hálózati szolgálatatásfejlesztés

Local Test Method

Agilis hálózati szolgáltatásfejlesztés 22

Page 23: Agilis hálózati szolgálatatásfejlesztés

Distributed Test Method

Agilis hálózati szolgáltatásfejlesztés 23

Page 24: Agilis hálózati szolgálatatásfejlesztés

Coordinated Test Method

Agilis hálózati szolgáltatásfejlesztés 24

Page 25: Agilis hálózati szolgálatatásfejlesztés

Remote Test Method

Agilis hálózati szolgáltatásfejlesztés 25

Page 26: Agilis hálózati szolgálatatásfejlesztés

Agilis hálózati szolgáltatásfejlesztés 26

Page 27: Agilis hálózati szolgálatatásfejlesztés

› Component testing

– also known as unit, module and program testing,

› Searches for defects in, and verifies the functioning of

software

– e.g. modules, programs, objects, classes, etc.

that are separately testable

› Focuses on one class or method

› Small, fast

– Unit tests run fast. If they don’t run fast, they aren’t unit tests.

– All the unit tests shall run in less than ~10 seconds

Component / Unit test

27 Agilis hálózati szolgáltatásfejlesztés

Page 28: Agilis hálózati szolgálatatásfejlesztés

› White-box testing type

– Access to code

– Access to development environment

– Writes the programmer/developer

› Sometimes a different one

– Defects fixed when found

› They test how the code is implemented rather the concept

Component / Unit test

Agilis hálózati szolgáltatásfejlesztés 28

Page 29: Agilis hálózati szolgálatatásfejlesztés

Component / Unit test

› All code must have unit tests

› All code must pass all unit tests before it can be released

› When a bug is found, tests shall be created

29 Agilis hálózati szolgáltatásfejlesztés

Page 30: Agilis hálózati szolgálatatásfejlesztés

› Mocking:

– substitutes its own object (the “mock object”) for an object that talks

to the outside world

– checks that it is called correctly and provides a pre-scripted

response

› Stubs and Drivers

Unit tests

30 Agilis hálózati szolgáltatásfejlesztés

Page 31: Agilis hálózati szolgálatatásfejlesztés

› Integration testing tests interfaces between components,

interactions to different parts of a system such as an

operating system, file system and hardware or interfaces

between systems

› Checks how code communicates with the rest of world

– talks to a database

– communicates across a network

– touches the file system

– special things to your environment (such as editing configuration

files) to be done to run it

› Focused integration test

– Tests just one interaction

Integration Tests

31 Agilis hálózati szolgáltatásfejlesztés

Page 32: Agilis hálózati szolgálatatásfejlesztés

› Component integration testing

– tests the interactions between software components and is done

after component testing;

› System integration testing

– tests the interactions between different systems and may be done

after system testing.

› The greater the scope of integration, the more difficult it

becomes to isolate failures to a specific interface

Levels of Integration Testing

Agilis hálózati szolgáltatásfejlesztés 32

Page 33: Agilis hálózati szolgálatatásfejlesztés

› ‘Big-bang' integration testing

– All components or systems are integrated simultaneously

– Advantage: everything is finished before integration testing starts

› no need to simulate (as no yet unfinished) parts

– Disadvantage: time-consuming, difficult to trace the cause of failures

with this late integration

– Good if expecting to find no problems

› Incremental testing

– All components are integrated one by one, and a test is carried out

after each step

– Advantage: defects are found early in a smaller assembly when it is

relatively easy to detect the cause.

– Disadvantage: it can be time-consuming since stubs and drivers

have to be developed and used in the test

Integration test approaches

Agilis hálózati szolgáltatásfejlesztés 33

Page 34: Agilis hálózati szolgálatatásfejlesztés

› Top-down: testing takes place from top to bottom, following

the control flow or architectural structure (e.g. starting from

the GUI or main menu)

– Components or systems are substituted by stubs.

› Bottom-up: testing takes place from the bottom of the

control flow upwards

– Components or systems are substituted by drivers

› Functional incremental: integration and testing takes place

on the basis of the functions or functionality, as

documented in the functional specification

Types of incremental integration tests

Agilis hálózati szolgáltatásfejlesztés 34

Page 35: Agilis hálózati szolgálatatásfejlesztés

› Start with testing high-risk interfaces

– Prevents major defects at the end of the integration test stage

– If integration tests are planned before components or systems are

built, they can be developed in the order required for most efficient

testing

› Integration tests concentrate solely on the integration itself

– Checks the communication between the integrated components not

the functionality of them

› Testing of specific non-functional characteristics (e.g.

performance) may also be included

› May be carried out by developers or by testers

Integration tests

Agilis hálózati szolgáltatásfejlesztés 35

Page 36: Agilis hálózati szolgálatatásfejlesztés

› Shall run in the same way

– If e.g. a data-base value needed – write it before the test

– Independently the execution order

› Shall run on its own

– Set up its environment

– Restore the previous environment at the end

› Even if fails or exception thrown (!)

› Not needed too many

– Each shall test just one aspect of the communication

– Number is proportional to the external interaction types

– If lot of needed can indicate design problem

› Business logic is not well separated from communication

Integration tests

36 Agilis hálózati szolgáltatásfejlesztés

Page 37: Agilis hálózati szolgálatatásfejlesztés

› System testing is concerned with the behavior of the whole

system/product

– It may include tests based on risks and/or requirements

specification, business processes, use cases

– System testing is most often the final test on behalf of development

to verify that the system to be delivered meets the specification

– Purpose: to find as many defects as possible

– Investigate both functional and non-functional requirements

› Typical non-functional tests include performance and reliability

– Requires a controlled test environment

› should correspond to the final target or production environment

System Tests

Agilis hálózati szolgáltatásfejlesztés 37

Page 38: Agilis hálózati szolgálatatásfejlesztés

› When development organization has performed system

test, system will be delivered to the user or customer for

acceptance testing

– Acceptance testing is the responsibility of the user or customer

– The execution of the acceptance test requires a test environment

that is representative of the production environment

– Acceptance testing determines whether the system is fit for its

purpose

– Finding defects should not be the main focus in acceptance testing

– Although it assesses the system's readiness for deployment and

use

– Not necessarily the final level of testing

› large-scale system integration test may come after the

acceptance of a system.

Acceptance Tests

Agilis hálózati szolgáltatásfejlesztés 38

Page 39: Agilis hálózati szolgálatatásfejlesztés

› User acceptance test

– Focuses on the functionality: validates the fitness-for-use of the

system by the business user

› Operational (or production) acceptance test

– Validates whether the system meets the requirements for operation

– May include testing of backup/restore, disaster recovery,

maintenance tasks and periodic check of security vulnerabilities

› Contract acceptance testing

– Contract acceptance testing is performed against a contract's

acceptance criteria

– Acceptance should be formally defined when the contract is agreed

› Compliance (regulation) acceptance testing

– Performed against the regulations which must be adhered to, such

as governmental, legal or safety regulations

Types of Acceptance Testing

Agilis hálózati szolgáltatásfejlesztés 39

Page 40: Agilis hálózati szolgálatatásfejlesztés

› If the system has been developed for the mass market

– Feedback is needed from potential or existing users before the

software product is put out for sale commercially.

› Alpha testing

– Takes place at the developer's site.

– A cross-section of potential users and members of the developer's

organization are invited

– Developers observe the users and note problems

› Beta testing,

– A cross-section of users invited, who install it and use it under real-

world working conditions.

– The users send records of incidents with the system to the

development organization where the defects are repaired.

Alpha/Beta tests

Agilis hálózati szolgáltatásfejlesztés 40

Page 41: Agilis hálózati szolgálatatásfejlesztés

› Typically tests use cases

– Acceptance tests

– Functional tests

› Touches (almost) all components of the system

– User interface, business layer, database

› Slow

– Labor intensive setup, configuration, teardown

– Tend to break when the system/labor configuration changes

– Tests a lot of branches in code

– Run seldom – at releasing

End-to-End tests

41 Agilis hálózati szolgáltatásfejlesztés

Page 42: Agilis hálózati szolgálatatásfejlesztés

› A test type is focused on a particular test objective

– testing of a function to be performed by the component or system;

– a nonfunctional quality characteristic, such as reliability or usability;

– the structure/architecture of the component or system;

– related to changes,

› i.e. confirming that defects have been fixed (confirmation testing,

or re-testing)

› looking for unintended changes (regression testing).

› Depending on its objectives, testing will be organized

differently

– E.g component testing aimed at performance would be quite

different to component testing aimed at achieving decision

coverage.

TEST TYPES: THE TARGETS OF TESTING

Agilis hálózati szolgáltatásfejlesztés 42

Page 43: Agilis hálózati szolgálatatásfejlesztés

› The function of a system (or component) is 'what it does'.

– Typically described in a requirements specification, a functional

specification, or in use cases

› Functional tests are based on these functions, described in

documents

› Functional testing considers the specified behavior

– Black-box testing

– Based upon ISO 9126

– Can focus on suitability, interoperability, security, accuracy and

compliance

Testing of function (functional testing)

Agilis hálózati szolgáltatásfejlesztés 43

Page 44: Agilis hálózati szolgálatatásfejlesztés

› Requirements-based testing

– Uses a specification of the functional requirements

– A good way to start is to use the table of contents of the

requirements specification

– Decide what to test (or not to test)

– Prioritize the requirements based on risk criteria

› This ensures that the most important/critical tests are included

› Business-process-based testing

– Uses knowledge of the business processes

– E.g business processes of a personnel and payroll system can be:

› someone joins the company,

› is paid on a regular basis

› leaves the company, etc.

Versions of Function testing

Agilis hálózati szolgáltatásfejlesztés 44

Page 45: Agilis hálózati szolgálatatásfejlesztés

› Testing of product quality characteristics or non-functional

attributes of the system

– how well or how fast the system works

› performance testing (different load)

› load testing (expected load)

› stress testing (overloading)

› usability testing

› maintainability testing

› reliability testing

› portability testing

non-functional testing

Agilis hálózati szolgáltatásfejlesztés 45

Page 46: Agilis hálózati szolgálatatásfejlesztés

› Test how the system behaves in real environment

–Expected traffic

› Testing with (high) traffic

–Different traffic models

–Simulating a lot of users

–Need automation

–Time limits

› Off-line, on-line

› Very expensive tools

Load Test

Agilis hálózati szolgáltatásfejlesztés 46

Page 47: Agilis hálózati szolgálatatásfejlesztés

› Functionality (Functional testing)

– suitability, accuracy, security, interoperability;

› Reliability

– Maturity (robustness), fault-tolerance, recoverability

› Usability

– understandability, learnability, operability, attractiveness

› Efficiency

– time behavior (performance), resource utilization

› Maintainability

– analyzability, changeability, stability, testability

› Portability

– adaptability, installability, co-existence, replaceability

Quality Characteristics iso 9126

Agilis hálózati szolgáltatásfejlesztés 47

Page 48: Agilis hálózati szolgálatatásfejlesztés

› Testing of software structure/architecture

› 'white-box' or 'glass-box‘ testing

› Coverage of a set of structural elements

– tool support to measure code coverage

– Statements, decisions, functions, etc

› If coverage is not 100%, additional tests need to be written

and run to cover those parts that have not yet been

exercised

– Depending on the exit criteria

– Test Driven Development

Structural Testing

Agilis hálózati szolgáltatásfejlesztés 48

Page 49: Agilis hálózati szolgálatatásfejlesztés

› Confirmation testing (re-testing)

– Test fails -> determine the cause -> defect is reported -> new

version of the software in which defect fixed

– Execute the failed test again to confirm that the defect has indeed

been fixed

› Important to ensure that the test is executed in exactly the

same way as it was the first time using the same

– Inputs

– Data

– Environment

Testing related to changes - 1

Agilis hálózati szolgáltatásfejlesztés 49

Page 50: Agilis hálózati szolgálatatásfejlesztés

› Regression testing

– Check if the modification of software/environment do not introduce

bug in the non-modified part

› Also executes test cases that have been executed before

– for regression testing, the test cases probably passed the last time

they were executed

– but in confirmation testing - they failed the last time

› Designed to collectively exercise most functions

Testing related to changes - 2

Agilis hálózati szolgáltatásfejlesztés 50

Page 51: Agilis hálózati szolgálatatásfejlesztés

› All the regression tests shall be executed every time a new

version of software is produced

– After bug-fixes

– Change existing functionality

– Introduce new functionality

– Environment changes

› E.g. new Data-base, new complier

› Ideal candidates for automation

Regression tests – cTD.

Agilis hálózati szolgáltatásfejlesztés 51

Page 52: Agilis hálózati szolgálatatásfejlesztés

› Maintenance of a regression test suite is necessary

– Shall evolve in line with the software

› When new functionality is added to a system

– new regression tests should be added

› If old functionality is changed or removed

– regression tests be changed or removed

› If becomes too large

– subset of the test cases has to be chosen

– keep the new/recently failed tests

– eliminate test cases that have not found a defect for a long time

(though this approach should be used with some care!)

Evolution of regression Test Suite

Agilis hálózati szolgáltatásfejlesztés 52