l7.ppt [modalità compatibilità] -...

107
1 1 11 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software Systems Engineering a.a. 2012-2013 Gigliola Vaglini 2 Software Testing Lecture 11

Upload: vophuc

Post on 02-Apr-2018

215 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

1

11 1

Corso di Laurea Magistralein

Ingegneria Informatica

Module B-Software Systems Engineeringa.a. 2012-2013

Gigliola Vaglini

2

Software Testing

Lecture 11

Page 2: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

2

3

Verification&Validation

Verification:– Are we building the software right?

The software should conform to its specification.

Validation:– Are we building the right software?

The software should do what the user really requires.

4

V&V comincia appena si decide di cominciare a realizzare un prodotto software V&V dura oltre la consegna e finché il

software è in uso

Page 3: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

3

5

V & V confidence Aim of V & V is to establish confidence that the system is

‘fit for purpose’.

Depends on system’s purpose, user expectations and marketing environment Software purpose

The level of confidence depends on how critical the software is to an organisation.

User expectations Users may have low expectations of certain kinds of software.

Marketing environment Getting a product to market early may be more important than finding

defects in the program.

6

Deve essere specificato il livello di “dependability” (rispondenza alle necessità) che il software deve raggiungere Il progettista deve essere in grado di

determinare quando questo livello è raggiunto

Page 4: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

4

7

Differenti misure di dependability

Availability (disponibilità): misura il QoS in termini di rapporto tra il tempo di funzionamento e il tempo in cui il sistema è giù

Reliability (affidabilità): si misura in termini della frazione delle operazioni terminate con successo rispetto a tutte quelle tentate

Il QoS si può misurare anche in termini del tempo che passa tra due fallimenti successivi

8

Verification theory: definitions

Failure: observable event that the user see as anomalous Fault: the cause of a failure Error: it has two meanings

– A difference between the computed and the expected result

– An action (generally of a person) that causes a fault

Page 5: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

5

9

Verification theory

P : D R. P(d) is a correct result if it satisfies the program specification, i.e. ok(P,d)=true P is correct (written ok(P)) if ok(P,d)=true for each dD

10

What kind of techniques

Testing: dynamic technique– The behavior of the product is experimented– We are looking for counterexamples

Analysis: static thecnique– Properties are proved

V&V should include both dynamic and validation techniques.

Page 6: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

6

11

Program testing Testing is intended to show that a program does what it is

intended to do and to discover program defects before it is put into use.

When you test software, you execute a program using artificial data.

You check the results of the test run for errors, anomalies or information about the program’s non-functional attributes.

12

Program testing goals To demonstrate to the developer and the customer that the software

meets its requirements.

For custom software, this means that there should be at least one test for every requirement in the requirements document. For generic software products, it means that there should be tests for all of the system features, plus combinations of these features, that will be incorporated in the product release.

To discover situations in which the behavior of the software is incorrect, undesirable or does not conform to its specification.

Defect testing is concerned with rooting out undesirable system behavior such as system crashes, unwanted interactions with other systems, incorrect computations and data corruption.

Page 7: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

7

13

Validation and defect testing The first goal leads to validation testing

You expect the system to perform correctly using a given set of test cases that reflect the system’s expected use.

A successful test shows that the system operates as intended.

The second goal leads to defect testing

The test cases are designed to expose defects. The test cases in defect testing can be deliberately obscure and need not reflect how the system is normally used.

A successful test is a test that makes the system perform incorrectly and so exposes a defect in the system.

14

An input-output model of program testing

The system is executed with test data and its operational behaviour is observed.

Page 8: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

8

15

Software inspections Concerned with analysis of the static system representation to discover problems(static verification) Do not require execution of a system so may

be used before implementation

May be supplement by tool-based document and code analysis.

Inspections and testing

16

Inspections and testing

Page 9: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

9

17

Advantages of inspections During testing, errors can mask (hide) other errors.

Because inspection is a static process, you don’t have to be concerned with interactions between errors.

Incomplete versions of a system can be inspected without additional costs. If a program is incomplete, then you need to develop specialized test harnesses to test the parts that are available.

As well as searching for program defects, an inspection can also consider broader quality attributes of a program, such as compliance with standards, portability and maintainability.

18

Inspections and testing Inspections and testing are complementary and not

opposing verification techniques.

Both should be used during the V & V process.

Inspections can check conformance with a specification but not conformance with the customer’s real requirements.

Inspections cannot check non-functional characteristics such as performance, usability, etc.

Page 10: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

10

19

A model of the software testing process

20

La verifica nell’ingegneria tradizionale

Quando si progettano ponti un test assicura infinite situazioni corrette Se un ponte può sopportare un carico di

10000 tonnellate, può sopportare qualunque carico di peso inferiore

Page 11: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

11

21

La verifica in SE

I programmi non hanno un comportamento continuo Verificare una funzione in un punto non

dice niente su tutti gli altri punti– A=…/(x+20)– Ogni valore di x è corretto eccetto x=-20

22

Tesi di Dijkstra Program testing can be used to show the

presence of bugs, but never to show their absence (Dijkstra’s thesis 1972)

Non vi è garanzia che, se alla n-esima prova, un modulo od un sistema ha risposto correttamente (ovvero non sono stati più riscontrati difetti), altrettanto possa fare alla (n+1)-esima

Impossibile produrre tutte le possibili configurazioni di valori di input (test case) in corrispondenza di tutti i possibili stati interni di un sistema software

Page 12: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

12

23

Impatto di nuove tecnologie

Tecniche di sviluppo più avanzate possono ridurre la frequenza di alcuni tipi di errori, ma non eliminano del tutto gli errori Nuovi approcci introducono nuovi tipi di

errori: ad esempio il deadlock per i programmi concorrenti.

24

Page 13: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

13

25

Come trattare i risultati dell’analisi

Ottimistica inaccuratezza– Si possono accettare programmi che non rispettano

alcune proprietà: testing Pessimistica inaccuratezza

– Si possono non accettare programmi che possiedono le proprietà volute: tecniche di analisi automatica, theorem proving

Proprietà semplificate– Si riduce il grado di libertà per semplificare le

proprietà da verificare: model checking

26

Proprietà dei risultati dell’analisi

Soundness: si accettano programmi solo se hanno una certa proprietà Completeness: si accetta ogni programma

che ha una certa proprietà

Page 14: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

14

27

The oracle

An oracle is any (human or mechanical) agent which decides whether a program behaves correctly in a given test, and accordingly produces a verdict of “pass” or “fail.” There exist many different kinds of

oracles, and oracle automation can be very difficult and expensive.

28

Come derivare un buon oracolo Nella fase della specifica dei requisiti

– Rendere le proprietà verificabili Gli oracoli di sistema vanno progettati durante il

progetto del sistema. Ad es. in un progetto UML– Una message sequence chart indica un caso di test e

un’uscita attesa– Una statechart è una macchina a stati finiti che

descrive tutti i comportamenti ammissibili

Page 15: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

15

29

Stages of testing Development testing, where the system is tested during

development to discover bugs and defects.

Release testing, where a separate testing team test a complete version of the system before it is released to users.

User testing, where users or potential users of a system test the system in their own environment.

30

Development testing Development testing includes all testing activities that are

carried out by the team developing the system.

Unit testing, where individual program units or object classes are tested. Unit testing should focus on testing the functionality of objects or methods.

Component testing, where several individual units are integrated to create composite components. Component testing should focus on testing component interfaces.

System testing, where some or all of the components in a system are integrated and the system is tested as a whole. System testing should focus on testing component interactions.

Page 16: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

16

31

Unit testing One module is tested in isolation It is a defect testing process: we are looking for logical

errors It is performed directly by the module programmer Units may be: Individual functions or methods within an object Object classes with several attributes and methods Composite components with defined interfaces used

to access their functionality.

32

Object class testing Testing of a class involves

Testing all operations associated with an object

Setting and interrogating all object attributes

Exercising the object in all possible states.

Inheritance makes it more difficult to design object class tests as the information to be tested is not localised.

Page 17: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

17

33

Automated testingWhenever possible, unit testing should be automated so

that tests are run and checked without manual intervention.

In automated unit testing, you make use of a test automation framework to write and run your program tests.

Unit testing frameworks provide generic test classes that you extend to create specific test cases. They can then run all of the tests that you have implemented and report, often through some GUI, on the success of otherwise of the tests.

34

Automated test components A setup part, where you initialize the system with the test

case, namely the inputs and expected outputs.

A call part, where you call the object or method to be tested.

An assertion part where you compare the result of the call with the expected result. If the assertion evaluates to true, the test has been successful if false, then it has failed.

Page 18: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

18

35

Unit test effectiveness The test cases should show that, when used as expected,

the component that you are testing does what it is supposed to do.

If there are defects in the component, these should be revealed by test cases.

This leads to 2 types of unit test case:

The first of these should reflect normal operation of a program and should show that the component works as expected.

The other kind of test case should be based on testing experience of where common problems arise. It should use abnormal inputs to check that these are properly processed and do not crash the component.

36

Testing strategies Partition testing, where you identify groups of inputs that

have common characteristics and should be processed in the same way.

You should choose tests from within each of these groups.

Guideline-based testing, where you use testing guidelines to choose test cases.

These guidelines reflect previous experience of the kinds of errors that programmers often make when developing components.

Page 19: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

19

37

Partition testing Input data and output results often fall into different classes

where all members of a class are related.

Each of these classes is an equivalence partition or domain where the program behaves in an equivalent way for each class member.

Test cases should be chosen from each partition.

38

Equivalence partitioning

Page 20: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

20

39

Equivalence partitions

40

Testing guidelines (sequences) Test software with sequences which have only a single

value.

Use sequences of different sizes in different tests.

Derive tests so that the first, middle and last elements of the sequence are accessed.

Test with sequences of zero length.

Page 21: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

21

41

General testing guidelines Choose inputs that force the system to generate all error

messages

Design inputs that cause input buffers to overflow

Repeat the same input or series of inputs numerous times

Force invalid outputs to be generated

Force computation results to be too large or too small.

42

Component (Integration) testing

For testing A before B,C and D are built, their behavior must be simulated through components with the same interface, called stubs.

For testing B,C and D without A, the calling environment must be simulated through components called drivers.

Page 22: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

22

43

Big bang o integrazione incrementale

Si parla di test di integrazione big bang quando tutti i moduli (già testati separatamente) sono integrati in un sol colpo

Si parla di test di integrazione incrementale quando i moduli sono integrati via via che vengono prodotti e testati singolarmente.– Eventuali anomalie nelle interfacce possono essere rilevate ed

eliminate durante lo sviluppo, e non si propagano sul prodotto finale

– E’ più facile localizzare (e quindi rimuovere) eventuali anomalie– Il test incrementale esercita più a lungo ciascun modulo

44

Component testing Software components are often composite components

that are made up of several interacting objects.

For example, in the weather station system, the reconfiguration component includes objects that deal with each aspect of the reconfiguration.

You access the functionality of these objects through the defined component interface.

Testing composite components should therefore focus on showing that the component interface behaves according to its specification.

You can assume that unit tests on the individual objects within the component have been completed.

Page 23: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

23

45

Interface testing

46

Interface testing Objectives are to detect faults due to interface errors or

invalid assumptions about interfaces.

Interface types

Parameter interfaces Data passed from one method or procedure to another.

Shared memory interfaces Block of memory is shared between procedures or functions.

Procedural interfaces Sub-system encapsulates a set of procedures to be called by other sub-systems.

Message passing interfaces Sub-systems request services from other sub-systems

Page 24: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

24

47

Interface errors Interface misuse

A calling component calls another component and makes an error in its use of its interface e.g. parameters in the wrong order.

Interface misunderstanding

A calling component embeds assumptions about the behaviour of the called component which are incorrect.

Timing errors

The called and the calling component operate at different speeds and out-of-date information is accessed.

48

Interface testing guidelines Design tests so that parameters to a called procedure are

at the extreme ends of their ranges.

Always test pointer parameters with null pointers.

Design tests which cause the component to fail.

Use stress testing in message passing systems.

In shared memory systems, vary the order in which components are activated.

Page 25: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

25

49

System testing System testing during development involves integrating

components to create a version of the system and then testing the integrated system.

The focus in system testing is testing the interactions between components.

System testing checks that components are compatible, interact correctly and transfer the right data at the right time across their interfaces.

System testing tests the emergent behaviour of a system.

50

System testing

È applicato sul sistema software completo ed integrato L'obiettivo e' valutare l'adesione del ai

requisiti specificati Lo esegue il team addetto al testing

(esterno al gruppo di sviluppo)

Page 26: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

26

51

System testing

Testing with respect to– Functional requirements– Non functional requirements

System requirements are also Performance, Reliability, Maintainability, Usability...

52

Test di … Configurazione: tutti i comandi per

scambiare/cambiare le relazioni fisiche logiche dei componenti HW Recovery: capacità di reazione del sistema

a cadute Stress: affidabilità in condizione di carico

limite Sicurezza: invulnerabilità del sistema

rispetto ad accessi non autorizzati

Page 27: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

27

53

Use-case testing The use-cases developed to identify system interactions

can be used as a basis for system testing.

Each use case usually involves several system components so testing the use case forces these interactions to occur.

The sequence diagrams associated with the use case documents the components and interactions that are being tested.

54

Testing policies Exhaustive system testing is impossible so testing policies

which define the required system test coverage may be developed.

Examples of testing policies:

All system functions that are accessed through menus should be tested.

Combinations of functions that are accessed through the same menu must be tested.

Where user input is provided, all functions must be tested with both correct and incorrect input.

Page 28: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

28

55

Test-driven development Test-driven development (TDD) is an approach to program

development in which you inter-leave testing and code development.

Tests are written before code and ‘passing’ the tests is the critical driver of development.

You develop code incrementally, along with a test for that increment. You don’t move on to the next increment until the code that you have developed passes its test.

TDD was introduced as part of Extreme Programming. However, it can also be used in plan-driven development processes.

56

Test-driven development

Page 29: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

29

57

TDD process activities Start by identifying the increment of functionality that is

required. This should normally be small and implementable in a few lines of code.

Write a test for this functionality and implement this as an automated test.

Run the test, along with all other tests that have been implemented. Initially, you have not implemented the functionality so the new test will fail.

Implement the functionality and re-run the test.

Once all tests run successfully, you move on to implementing the next chunk of functionality.

58

Benefits of test-driven development Code coverage

Every code segment that you write has at least one associated test so all code written has at least one test.

Simplified debugging

When a test fails, it should be obvious where the problem lies. The newly written code needs to be checked and modified.

System documentation

The tests themselves are a form of documentation that describe what the code should be doing.

Page 30: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

30

59

Regression testing Regression testing is the “selective retesting of a

system or component to verify that modifications have not caused unintended effects...”

Regression testing is testing the system to check that changes have not ‘broken’ previously working code.

This kind of testing is easy to automatize: the new program is executed with the old test data and the results are compared against the old ones stored in a data base.

60

Requirements based testing Requirements-based testing involves examining each

requirement and developing a test or tests for it.

MHC-PMS requirements:

If a patient is known to be allergic to any particular medication, then prescription of that medication shall result in a warning message being issued to the system user.

If a prescriber chooses to ignore an allergy warning, they shall provide a reason why this has been ignored.

Page 31: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

31

61

Requirements tests Set up a patient record with no known allergies. Prescribe medication for

allergies that are known to exist. Check that a warning message is not issued by the system.

Set up a patient record with a known allergy. Prescribe the medication to that the patient is allergic to, and check that the warning is issued by the system.

Set up a patient record in which allergies to two or more drugs are recorded. Prescribe both of these drugs separately and check that the correct warning for each drug is issued.

Prescribe two drugs that the patient is allergic to. Check that two warnings are correctly issued.

Prescribe a drug that issues a warning and overrule that warning. Check that the system requires the user to provide information explaining why the warning was overruled.

62

Specific testing

Performance tests usually involve planning a series of tests where the load is steadily increased until the system performance becomes unacceptable.

Stress testing is a form of performance testing where the system is deliberately overloaded to test its failure behaviour.

Page 32: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

32

63

User testing User or customer testing is a stage in the testing process in

which users or customers provide input and advice on system testing.

User testing is essential, even when comprehensive system and release testing have been carried out.

The reason for this is that influences from the user’s working environment have a major effect on the reliability, performance, usability and robustness of a system. These cannot be replicated in a testing environment.

64

Types of user testing Alpha testing

Users of the software work with the development team to test the software at the developer’s site.

Beta testing

A release of the software is made available to users to allow them to experiment and to raise problems that they discover with the system developers.

Acceptance testing

Customers test a system to decide whether or not it is ready to be accepted from the system developers and deployed in the customer environment. Primarily for custom systems.

Page 33: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

33

65

Alpha and beta testing

Before the software is released, it is sometimes given to a small, representative set of potential users for trial use, either in-house (alpha testing) or external (beta testing).

66

Acceptance testing

Acceptance testing checks the system behavior against the customer’s requirements; the customers undertake, or specify, typical tasks to check that their requirements have been met. This testing activity may or may not involve the developers of the system.

Page 34: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

34

67

The acceptance testing process

68

Stages in the acceptance testing process

Define acceptance criteria

Plan acceptance testing

Derive acceptance tests

Run acceptance tests

Negotiate test results

Reject/accept system

Page 35: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

35

69

Agile methods and acceptance testing

In agile methods, the user/customer is part of the development team and is responsible for making decisions on the acceptability of the system.

Tests are defined by the user/customer and are integrated with other tests in that they are run automatically when changes are made.

There is no separate acceptance testing process.

Main problem here is whether or not the embedded user is ‘typical’ and can represent the interests of all system stakeholders.

70

Testing theory

Lecture 12

Page 36: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

36

71

Testing theory

Given a test T (T is a subset of D), T is successful for P if ok(P,T), otherwise it is called inadequate. T is called ideal if ok(P,T) ok(P) One goal of the testing theory is the definition of methods to choice tests that approximate the ideal tests.

72

Test selection criteria

A test selection criterium C for a program P is a set of predicates on D. Test T is chosen through criterium C if it

satisfies C. – C = {<x1, x2,..., xn> | n ≥ 3 i, j, k, ( xi<0 xj=0 xk>0)}

– <-5, 0, 22> and <-10, 2, 8, 33, 0, -19> satisfy C– <1, 3, 99> does not satisfiy C

Page 37: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

37

73

Raffinamento dei test

Un criterio C1 è più fine di un altro C2 se, per ogni programma P, per ogni test T1 che soddisfa C1 ne esiste un sottoinsieme T2 che soddisfa C2.

74

Test selection criteria properties

C is consistent for P, if, for each pair of tests T1 and T2 chosen by C,

ok(P,T1) ok(P,T2)• C is complete for P if it exists at least a test T such that ok(P,T1) whenever ok(P) A consistent and complete selection

criterium chooses ideal tests.

Page 38: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

38

75

Teorema di Goodenough e Gerhart

Il fallimento di un test T per un programma P selezionato da un criterio C consistente e completo permette di dedurre la correttezza del programma P, cioè:– consistente(C,P) completo(C,P) selezionato(C,T) ¬ successo(T,P) ok(P)

La consistenza del criterio C garantisce lo stesso risultato (in termini di rilevamento dei malfunzionamenti) per tutti i test selezionati.

La completezza di C garantisce che, se P non è corretto, non lo è neppure per uno dei test selezionati da C

76

Particular test selection criteria

A selection criterium C that includes all elements of D is complete but not consistent. Proof? A selection criterium C that is satisfied

by no element of D is consistent but not complete. A selection criterium C satisfied by a

test T=D is consistent and complete (exhaustive test)

Page 39: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

39

77

Proof

If a failure exists, it will occurr for a input datum d; C chooses at least a test T containing d and thus T will cause the failure. On the other hand, not each test T

satisfying C contains d.

78

Howden’s theorem

No algorithm exists for any P able to define a finite ideal test (no consistent and complete selection criterium exists).

Page 40: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

40

79

Howden’s theorem Non si dice che il criterio consistente e completo non esiste (basta prendere il criterio che seleziona tutti e soli i dati che causano un malfunzionamento), dice solo che non è effettivo (non può essere tradotto in un algoritmo in grado di produrre il risultato in un tempo finito) Il teorema di HOWDEN corrisponde alla tesi di Dijkstra

80

Indecidable problems

Indecidable problems are greatly influencing testing

A problem is indecidable if it is possible to prove that no algorithm exists solving it

Page 41: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

41

81

Problemi di decisione

82

Linguaggi computazionalmente completi

Un linguaggio di programmazione si dice computazionalmente completo se vi si possono definire tutte le funzioni ricorsive oppure tutte le funzioni calcolabili da una Macchina di Turing

Page 42: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

42

83

Tesi di Church-Turing (1936) Ogni algoritmo che può essere eseguito da

un umano o da un computer può essere eseguito da una macchina di Turing Per dimostrare che una funzione è

calcolabile (la funzione caratteristica di un insieme, ad esempio), basta scrivere un algoritmo che la calcoli: la tesi di Church-Turing ci assicura che può essere eseguito da una macchina di Turing

84

Un problema è indecidibile se è possibile dimostrare che non esiste una macchina di Turing che risolve il problema Es. stabilire se l'esecuzione di un programma termina a fronte di un input arbitrario e' un problema indecidibile

Page 43: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

43

85

Problema della terminazione

86

Page 44: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

44

87

Indecidable problems It is not possible to decide whether two

programs compute the same function or not

Consequence– Given a program C known correct (the

specification of P?) , we cannot prove that P is correct through the proof of the equivalence of P and C

88

Weyuker’s theorem

For each program P the following are undecidable problems“at least an input datum exists that causes the execution of instruction i or of branch b”.“at least an input datum exists that causes the execution of all instructions of P or of all branch of P”

Page 45: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

45

89

Weyuker’s theorem Esiste un dato di ingresso che causa una particolare

sequenza di esecuzione di istruzioni? Esiste un dato di ingresso che causi l’esecuzione di

ogni possibile sequenza di istruzioni di un programma? Questo teorema è importante per i metodi di test

che richiedono l’esecuzione di particolari elementi del programma.

Tuttavia, dato un problema indecidibile, è possibile individuare sottoproblemi significativi decidibili, per i quali è possibile formulare algoritmi in grado di risolvere parzialmente il problema.

Inoltre si possono sempre risolvere problemi indecidibili in maniera creativa e non meccanica

90

Testing techniques The main classification is based on how tests

are generated from the software engineer’s intuition and experience, the specifications, the code structure, the (real or artificial) faults to be discovered, the field usage, or, finally, the nature of the application.

Sometimes these techniques are classified as white-box, if the tests rely on information about how the software has been designed or coded, or as black-box if the test cases rely only on the input/output behavior.

Page 46: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

46

91

White-box testing

Coverage criteria Statement coverage Edge coverage Condition coverage Path coverage Data flow (syntactic dependency)

coverage

92

Black-box testing: three steps

Decompose the system specification in a set of independent functions. Identify the relevant values: special

cases, normal cases, wrong cases.. Constraints the possible combinations of

values

Page 47: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

47

93

Black-box vs. white-box

94

Testing process

Planning the quality

Page 48: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

48

95

Testing and quality

Testing is the analysis and the controlled execution of a program with the aim of revealing defects. Testing is planning, designing,

costruction, maintenance of test and testing environments

96

The testing process

Testing concepts, strategies, techniques, and measures need to be integrated into a defined and controlled process which is run by people. The test process supports testing activities and provides guidance to testing teams, from test planning to test output evaluation, in such a way as to provide justified assurance that the test objectives will be met costeffectively.

Page 49: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

49

97

Thus the testing is a process This process must produce deliverables. i.e. documents– IEEE Standard for Software Test Documentation (Std. 829-1998 – Revised Std. 829-1983).

98

Std IEEE 829 The standard defines 8 types of documents to

be used in 3 distinct phases Tests design

– Test plan– Test design specification– Test case specification– Test procedure– Test item transmittal report

Tests execution– Test log– Test incident report

Tests end– Test summary report

Page 50: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

50

99

Test plan

The Test plan is a document describing the scope, approach, resources, and schedule of intended testing activities. It identifies test items, the features to be tested, the testing tasks, who will do each task, and any risks requiring contingency planning.”

100

Test plan outline Test Plan Identifier

– A unique identifier Introduction

– Summary of the items and features to be tested

– Need for an history of each item (optional)– References to related documents such as project authorization, project plan, QA plan, configuration management plan, relevant policies, relevant standards

– References to lower level test plans

Page 51: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

51

101

Test plan outline (cont.)

Test Items– Test items and their version– Characteristics of their transmittal media– References to related documents such as requirements specification, design specification, users guide, operations guide, installation guide

– References to bug reports related to test items

– Items which are specifically not going to be tested (optional)

102

Test plan outline (cont.) Features to be Tested

– All software features and combinations of features to be tested

– References to test-design specifications associated with each feature and combination of features

Features Not to Be Tested– All features and significant combinations of features

which will not be tested– The reasons these features won’t be tested

Page 52: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

52

103

Test plan outline (cont.) Approach

– For each major group of features or combinations of features, specify the approach

– Specify major activities, techniques, and tools which are to be used to test the groups

– Specify a minimum degree of comprehensiveness required– Identify which techniques will be used to judge

comprehensiveness– Specify any additional completion criteria– Specify techniques which are to be used to trace

requirements– Identify significant constraints on testing, such as test-item

availability, testing-resource availability, and deadline

104

Test plan outline (cont.) Item Pass/Fail Criteria

– Specify the criteria to be used to determine whether each test item has passed or failed testing

– Suspension Criteria and Resumption Requirements– Specify criteria to be used to suspend the testing activity– Specify testing activities which must be redone when testing

is resumed Testing Tasks

– Identify tasks necessary to prepare for and perform testing– Identify all task interdependencies– Identify any special skills required

Page 53: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

53

105

Test plan outline (cont.) Environmental Needs

– Specify necessary and desired properties of the test environment: physical characteristics of the facilities including hardware, communications and system software, the mode of usage (i.e., stand-alone), and any other software or supplies needed

– Specify the level of security required– Identify special test tools needed– Identify any other testing needs– Identify the source for all needs which are not currently

available Test Items section

– Identify groups responsible for providing the environmental needs identified in the Environmental Needs section

106

Test plan outline (cont.)

Test Deliverables– Identify the deliverable documents: test plan, test design specifications, test case specifications, test procedure specifications, test item transmittal reports, test logs, test incident reports, test summary reports

– Identify test input and output data– Identify test tools (optional)

Page 54: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

54

107

Test plan outline (cont.) Staffing and Training Needs

– Specify staffing needs by skill level– Identify training options for providing necessary skills

Responsibilities– Identify groups responsible for managing, designing, preparing,

executing, witnessing, checking and resolving– Identify groups responsible for providing the test items

identified in the Test Items section– Identify groups responsible for providing the environmental

needs identified in the Environmental Needs section

108

Test plan outline (cont.) Schedule

– Specify test milestones– Specify all item transmittal events– Estimate time required to do each testing task– Schedule all testing tasks and test milestones– For each testing resource, specify its periods of use

Risks and Contingencies– Identify the high-risk assumptions of the test plan– Specify contingency plans for each

Approvals– Specify the names and titles of all persons who must

approve the plan– Provide space for signatures and dates

Page 55: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

55

109

Test process documents

110

Hierarchy of planning and specification documents

Page 56: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

56

111

Tracciamento del processo di testing

112

Tracciamento del processo di testing

Lo scopo è tracciare i progressi nei test e paragonarli al piano

Test progress S Curve Asse Y: Test case Asse X: time (week) 3 informazioni: Attempted, Successful, Planned

– Una S Curve rappresenta il fatto che i dati sono cumulativi nel tempo e la forma di S risulta da un periodo di intensa attività di test

Page 57: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

57

113

114

Page 58: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

58

115

116

Tracciamento del processo di testing

Sistemi che richiedono alta stabilità: uso sotto stress (20 ore per giorno)– Utilizzo della CPU– Si traccia il tempo di utilizzo durante il

funzionamento tra release differenti– Associato alla misurazione dei crash non

previsti nelle varie release

Page 59: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

59

117

118

Page 60: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

60

119

120

Page 61: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

61

121

Tracciamento del processo di testing

Misure dello sforzo

Matrice di celle che confronta l’effettività del testing (righe) con il numero di difetti trovati (colonne)

122

Page 62: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

62

123

124

Alcuni esempi di processo

Page 63: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

63

125

Cleanroom

126

Il processo Cleanroom Il “Cleanroom Software Engineering process” è

un processo di sviluppo teso a produrre software con un livello certificabile di reliability.

Il processo fu sviluppato da Harlan Mills e altri all’IBM nella metà degli anni ‘80.

Cleanroom mira alla prevenzione dei difetti, piuttosto che alla loro rimozione (il nome richiama le camere pulite usate nell’industria elettronica per prevenire l’introduzione di difetti nella fabbricazione di circuiti integrati).

Page 64: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

64

127

Principi base Lo sviluppo del software è basato sull’uso di metodi formali. La verifica che la specifica è rispettata dal progetto è realizzata

tramite “team review”. L’implementazione è sviluppata in modo incrementale con un

“controllo di qualità statistico”.– La qualità di ogni incremento è misurata a confronto di standard

prestabiliti per verificare che il processo sta procedendo in modo accettabile. Un fallimento nel raggiungere uno standard produce l’interruzione del testing per l’incremento attuale e il ritorno alla fase di progetto.

– Il testing viene portato avanti come un esperimento statistico. I comportamenti di input/output selezionati e testati sono poi analizzati statisticamente per ottenere una stima dell’affidabilità del software e un livello di confidenza in quella stima.

128

Page 65: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

65

129

Extreme programming

130

Extreme programming

Extreme Programming (XP) è una metodologia di tipo “agile”: cioè mette l’accento più sull’adattabilità che sulla predicibilità. Successivi cambiamenti dei requisiti sono

visti come naturali durante il progetto, anzi più naturali che il tentativo di definire tutti i requisiti all’inizio.

Page 66: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

66

131

Scopo The main aim of XP is to reduce the cost of

change. In traditional system development methods the cost of changing the requirements at a later stage will be high.

XP sets out to reduce the cost of change by introducing basic values, principles and practices.

By applying XP, a system development project should be more flexible with respect to changes.

132

Principi base

XP fornisce un insieme di pratiche che incoraggiano particolari valori. I valori sono 5

– Communication– Simplicity– Feedback– Courage– Respect (the latest value)

Page 67: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

67

133

134

Page 68: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

68

135

Basic techniques

Graphs

136

Grafi utilizzati

CFG(P) Execution tree CDG(P) Grafi di dominanza Grafi di dipendenza DFD(P) …..

Page 69: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

69

137

Flusso del controllo

Il codice è rappresentato tramite un grafo, il grafo del flusso di controllo (Control flow Graph - CFG), i cui nodi rappresentano statement (istruzioni e/o predicati) del programma e gli archi il passaggio del flusso di controllo.

138

Elementi di base di un CFG

Un grafo è costruito secondo la seguente notazione Istruzioni=nodo Passaggio del flusso del controllo=arco

etichettato con {true, false, uncond}

Page 70: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

70

139

Definizione di un CFG Dato un programma P, CFG(P)=<N, AC,

nI,nF>, dove– <N, AC> è un grafo con archi etichettati– N= { nI,nF }Ns Np– nI e nF sono il nodo iniziale e il nodo finale– Ns e Np sono insiemi disgiunti di nodi

istruzione e nodi predicato, rispettivamente– AC (N-{nF})x(N-{nI})x{true,false,uncond}

rappresenta la relazione di flusso di controllo

140

Costruzione di un CFG

Un CFG può essere costruito in modo strutturato– Si definiscono i sottografi delle varie

strutture di controllo– Si compongono i sottografi

Page 71: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

71

141

Strutture di controllo in un CFG

142

Page 72: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

72

143

Alcune definizioni

144

Semplificazioni Un nodo ed il suo successore immediato che

hanno entrambi un solo punto d’ingresso ed un solo punto di uscita si possono ridurre ad un solo nodo nel grafo

La riduzione può essere applicata n volte (sequenze di nodi); il nodo risultante può essere etichettato con le etichette dei nodi in esso ridotti

I self-loops possono essere sostituiti da un solo nodo (loop naturale ha una sola uscita e un solo ingresso)

Page 73: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

73

145

146

Accompagnano i CFG

Il CFG rappresenta la struttura del programma Si possono associare ai CFG altri grafi (in

generale alberi) che rappresentano altri aspetti, anche dinamici, legati all’esecuzione

Page 74: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

74

147

Esecuzioni simboliche

In realtà i programmi vengono eseguiti in modo simbolico (o astratto) Valori simbolici per le variabili si

propagano lungo i cammini di esecuzione Gli statement si considerano eseguibili

solo se gli input soddisfano determinate condizioni Come si caratterizzano queste condizioni?

148

Path conditions Una Path Condition (pc), per un determinato statement,

indica le condizioni che gli input devono soddisfare affinché un’esecuzione percorra un cammino lungo cui lo statement sia eseguito.

Una pc è un’espressione Booleana sugli input simbolici di un programma; all’inizio dell’esecuzione simbolica essa assume il valore vero (pc:= true ).

Per ogni condizione che si incontrerà lungo l’esecuzione, pc assumerà differenti valori a seconda dei differenti casi relativi ai diversi cammini dell’esecuzione.

Page 75: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

75

149

Evoluzione di una pc

150

Esempio

Page 76: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

76

151

CFG con accompagnamento di ET

152

Execution tree Ogni foglia dello execution tree rappresenta

un cammino percorso per classi di valori di input (pc associata)

Le pc associate a due differenti foglie sono distinte

Non esistono esecuzioni per cui sono vere contemporaneamente più pc (per linguaggi di programmazione sequenziali).

Se l’output ad ogni foglia è corretto allora il programma è corretto.

Page 77: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

77

153

Cammini eseguibili

'cammino eseguibile‘ è un cammino per il quale esiste un insieme di dati di ingresso che soddisfa la path condition 'cammino non eseguibile' ( 'infeasible path') è un cammino per il quale non esiste un insieme di dati di ingresso che soddisfa la path condition

154

Call-Direct-Graph CDG(P)

Page 78: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

78

155

Esempio

156

Proprietà dei nodi

Dato un grafo, CFG o CDG o.., si possono stabilire alcune proprietà dei nodi che risultano interessanti dal punto di vista del comportamento del programma Le proprietà valgono per grafi aciclici, ma

è sempre possibile eliminare i cicli interni di un grafo

Page 79: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

79

157

Relazione di dominanza

158

Dominatori

Page 80: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

80

159

Dominatori

160

Esempio

Page 81: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

81

161

Dominanza diretta

162

Albero delle dominanze

Page 82: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

82

163

Albero delle dominanze per un CDG

164

Postdominanza

Dato un grafo CFG(P) = <N, AC, nI, nF>, e due nodi n, m N: m postdomina n se e solo se per ogni cammino in CFG(P) del tipo n=p0, p1,..., pk=nF, m{p1,..., pk} La relazione di postdominanza è transitiva

e non riflessiva

Page 83: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

83

165

Postdominatori

166

Postdominatori

Page 84: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

84

167

Esempio

168

Postdominanza diretta

Page 85: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

85

169

Albero delle postdominanze

170

Dipendenze sul controllo

Dato CFG(P) = <N, AC, nI, nF>, e due nodi x, yN, y si dice dipendente sul controllo da x se e solo se:– esiste un cammino x=p0, p1,..., pk=y tale che i, 1 ≤ i ≤ k-1, pi è postdominato da y;

– x non è postdominato da y.

Page 86: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

86

171

In pratica

172

Dipendenze unitarie sul controllo

Page 87: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

87

173

In pratica

174

Esempio

Page 88: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

88

175

CD Graph

Le dipendenze sul controllo possono essere espresse mediante apposito grafo. Ogni arco del grafo è etichettato con vero, falso o incond indicando una dipendenza sul controllo per valore di un predicato uguale a vero o falso, oppure per ogni valore, rispettivamente.

176

Regioni Affinchè ogni nodo predicato abbia al più due

archi uscenti (l’uno etichettato con vero e l’altro con falso), ulteriori nodi, chiamati nodi regione, vengono inseriti nel grafo.

I nodi regione riassumono l’insieme delle dipendenze sul controllo per ogni predicato.

Gli archi uscenti da un nodo regione sono etichettati con incond.

Page 89: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

89

177

CD Graph

178

Esempio

Page 90: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

90

179

Proprietà

180

DF Graph Al grafo del controllo viene associata una

relazione che descrive il flusso dei dati e che rappresentata l’evoluzione del valore delle variabili in base alle operazioni eseguite sulla variabile stessa in ogni istruzione:– definizione: alla variabile è assegnato un valore– uso: il valore della variabile è usato in un’espressione

o un predicato– annullamento: al termine di un’istruzione il valore

associato alla variabile non è più significativo Es. nell’espressione a:=b+c la variabile a è

definita mentre b e c sono usate

Page 91: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

91

181

Esempio

182

Relazione DEF_USO

Page 92: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

92

183

Variabili live

Definizione: la variabile x è live al nodo v se esiste un cammino nel CFG da v a n tale che x non è ridefinito in tale cammino, e n usa x. Proprietà: la relazione lvx non è riflessiva

né transitiva.

184

Esempio

Page 93: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

93

185

Testing strutturale

186

Tecniche di testing strutturale Tecniche in generale fondate sull'adozione di

metodi di copertura degli oggetti che compongono la struttura dei programmi

COPERTURA: definizione di un insieme di casi di test ( in particolare dati di input) in modo tale che gli oggetti di una definita classe (es. strutture di controllo, istruzioni, archi del CFG, predicati,..etc.) siano attivati almeno una volta nell'esecuzione dei casi di test

Page 94: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

94

187

Criteri di copertura basati sul flusso del controllo

Statement coverage Edge coverage Condition coverage Path coverage Data flow (syntactic dependency)

coverage

188

Page 95: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

95

189

190

Page 96: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

96

191

Il caso di test è sufficiente per garantire la copertura delle istruzioni?

Quali possibili fault non rivela?– Fault nel trattamento di valori positivi di A[i]

192

Page 97: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

97

193

194

Page 98: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

98

195

Il caso di test usato in precedenza copre tutti rami del grafo?– No. Non viene coperto l’arco corrispondente al caso

false dell’istruzione if E se aggiungo il caso (N=1, A[0]=7, X=9)?

– Posso scoprire eventuali fault per valori positivi di A[i].

Quali fault sicuramente non rivelerò?– Fault in uscita dal loop per la condizione A[i] ≥ X

196

Copertura delle condizioni

Dato un programma P, viene definito un insieme di casi di test tale che tutti i possibili valori delle componenti di condizioni composte sono provati almeno una volta. La copertura di tutte le condizioni NON

implica la copertura di tutte le decisioni

Page 99: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

99

197

198

Page 100: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

100

199

Copro tutte le condizioni?– No

Quali casi devo aggiungere?– Entrambe le condizioni (i<N), (A[i]<X) devono essere

false e vere in differenti test.– Devo aggiungere un test i cui dati causino l’uscita dal

loop per un valore più grande di X Quali fault eventualmente non scoprirò?

– Fault che si verificano dopo diverse iterazioni del loop.

200

Copertura di condizioni multiple

Dato un programma P, viene definito un insieme di casi di test la cui esecuzione implica l'esecuzione, per ogni decisione, di tutte le combinazioni di condizioni

La copertura di tutte le combinazioni di condizioni implica la copertura di tutte le condizioni e di tutte le decisioni

Page 101: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

101

201

202

N-copertura dei cicli

Un test T soddisfa il criterio di n-copertura dei cicli se e solo se ogni cammino contenente un numero intero di iterazioni di ogni ciclo non superiore ad n è eseguito per almeno un caso di test T

Problema: stabilire il numero ottimale di iterazioni....

Page 102: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

102

203

Copertura dei cammini DEVE ESSERE ATTIVATO OGNI CAMMINO

DEL GRAFO I problema: il numero dei cammino è,

generalmente, infinito II problema: infeasible path Soluzione: selezione in base a condizioni di un

numero finito ed eseguibile di cammini:– metodi fondati sui grafi di controllo– metodi data flow

(… naturalmente un buon testatore cerca anche le ragioni della presenza di infeasible path …)

204

Metodi basati sui CFG L’insieme (o un sottoinsieme definito) dei

cammini di un CFG viene partizionato in un numero finito di classi di equivalenza– Metodo dei cammini esemplari– Metodo dei cammini linearmente indipendenti

(McCabe)

Criterio di copertura: un insieme di casi di test che assicuri l’attraversamento almeno una volta di almeno un cammino per ogni classe.

Page 103: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

103

205

Cammini esemplari Un cammino privo di circuiti è detto cammino

elementare– Il numero di cammini elementari in un grafo è finito

Si considerano i cammini elementari e totali di CFG(P)

Classi di cammini: un cammino elementare totale e tutti i cammini che da esso differiscono unicamente per il numero di attraversamenti di circuiti che sul cammino giacciono

206

Page 104: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

104

207

Cammini linearmente indipendenti

Un cammino si dice linearmente indipendente se introduce almeno un nuovo inseme di istruzioni o una nuova condizione; in un CFG un cammino è l. indipendente se attraversa almeno un arco non ancora percorso (teoria dei grafi)

208

Cammini linearmente indipendenti

Il numero dei cammini linearmente indipendenti di un programma è pari al numero ciclomatico di McCabe (metrica del SW basata sull’analisi della complessità del flusso di controllo):

V(G) = E - N +2– E: n.ro di archi in G– N: n.ro di nodi in G

V(G) = P + 1– P: n.ro di predicati in G

V(G) = n.ro di regioni chiuse in G + 1 Test case esercitanti questi cammini garantiscono

l’esecuzione di ciascuna istruzione almeno una volta

Page 105: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

105

209

210

Page 106: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

106

211

212

Page 107: L7.ppt [modalità compatibilità] - unipi.itelearn.ing.unipi.it/pluginfile.php/7432/mod_resource/content/1/L7.pdf1 111 Corso di Laurea Magistrale in Ingegneria Informatica Module B-Software

107

213