Alea jacta test
Bienvenue dans le monde des tests !
Pierre-Yves Lapersonne
✿✿✿✿ ʕ •ᴥ•ʔ/ ︻デ═一 Cette œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution 4.0 International.
Version 15 - 18/12/2017
Au menu...
● les clichés sur les tests
● exemples de tests ratés
● pourquoi en faire ?
● les tests en détails
● quelques outils
Slide 5
Slide 5 text
quelques... trucs.
Slide 6
Slide 6 text
6
● 9ème Journée Française des Tests Logiciels
11 / 04 / 2017
Montrouge, France
● CFTL
Comité Français des Tests Logiciels
Perros Guirrec, Bretagne
● ISTQB
International Software Testing Qualifications Board
Bruxelles, Belgique
Slide 7
Slide 7 text
quelques chiffres
Slide 8
Slide 8 text
8
● 40 % du budget projet dédiés aux tests
● 39 % des devs sont en mode TDD
● 46 % des devs estiment ne pas avoir
assez de temps pour les tests
Chiffres : 2016
Slide 9
Slide 9 text
les clichés sur les tests
Slide 10
Slide 10 text
10
Source : CommitStrip
Slide 11
Slide 11 text
11
ça ne sert à rien !
Slide 12
Slide 12 text
12
ça prend trop de temps !
Slide 13
Slide 13 text
13
ça coûte trop cher !
Slide 14
Slide 14 text
14
le client est le meilleur testeur !
Slide 15
Slide 15 text
15
ça ajoute des sources à maintenir !
Slide 16
Slide 16 text
inutiles les tests ?
Slide 17
Slide 17 text
17
Therac 25
1980’
Image : Wikidot
Slide 18
Slide 18 text
18
● outil de traitement de cancers par
radiations
● exposition prévue de 200 rad
● exposition réelle de 20 000 rad
● au moins 6 morts
Slide 19
Slide 19 text
19
AT&T
15 Janvier 1990
Slide 20
Slide 20 text
20
● mise à jour du réseau téléphonique
● transmissions de mauvais messages
entre les antennes
● 9h de panne
● 60 millions $ de pertes
Slide 21
Slide 21 text
21
Mars Climate Orbiter
23 Septembre 1999
Image : Wikipédia
Slide 22
Slide 22 text
22
● plusieurs équipes internationales...
● utilisant le système anglo-saxon...
● ... ET le système métrique
● navigation totalement défectueuse
● 900 millions $ perdus
Slide 23
Slide 23 text
23
vol 501 de Ariane 5
4 Juin 1996
Slide 24
Slide 24 text
24
● récupération d’éléments logiciels d’Ariane 4
● overflow dans les calculs de trajectoire
● problème de conversion
float 64 bits unsigned 16 bits
● destruction de la fusée
● +370 millions $ ... à l’eau
Slide 25
Slide 25 text
25
retournement d’un F-18
Slide 26
Slide 26 text
26
● retournement une fois passé l’équateur
● mauvaise gestion des coordonnées
Slide 27
Slide 27 text
27
Louvois
2011
Image : LeMagIT
Slide 28
Slide 28 text
28
● retards de paiement
● mauvais soldes versés
● les familles des militaires en danger
● 465 millions d’euros d’erreur... juste en 2012
selon la Cour des Comptes
Slide 29
Slide 29 text
29
Stagefright
2015
Slide 30
Slide 30 text
30
● AOSP, Firefox, Firefox OS
● librairie multimédia obsolète
● débordement mémoire
● execution de code arbitraire, ...
Slide 31
Slide 31 text
31
iOS et le killer text
2015
Slide 32
Slide 32 text
32
● réception d’un message particulier
● affichage dans les notifications
● débordement d’un buffer
● comportements dangereux de l’iPhone
redémarrage, blocage, boot loop, ...
Slide 33
Slide 33 text
33
SNCF et Linux...
2015
Slide 34
Slide 34 text
34
● sur Windows ? Ça fonctionne.
● sur OS X ? Ça fonctionne.
● Linux ? Android ? Oups.
Slide 35
Slide 35 text
35
Castorama
8 Juin 2016
Image : Hitek
Slide 36
Slide 36 text
36
● suggestions douteuses selon les requêtes
● fermeture du site en catastrophe
donc manque à gagner pour l’entreprise
Slide 37
Slide 37 text
37
SAIP
14 Juillet 2016
Image : Google Play
Slide 38
Slide 38 text
38
● notification des usagers 3h après la tragédie
● retard d’information par rapport à d’autres
Facebook, Twitter, QWIDAM, les SMS...
Slide 39
Slide 39 text
pourquoi faire des tests ?
Slide 40
Slide 40 text
39
● prouver la qualité du produit
● identifier des comportements incohérents
● repérer d’éventuelles failles
● avoir des clients cont€nts
● éviter les surcharges liées aux bugs
● et puis avoir la conscience tranquille aussi...
Slide 41
Slide 41 text
mais qu’est-ce qu’un test ?
Slide 42
Slide 42 text
définitions
mais qu’est-ce qu’un test ?
Slide 43
Slide 43 text
43
Testing
The process consisting of all lifecycle
activities, both static and dynamic,
concerned with planning, preparation and
evaluation of software products and related
work products to determine that they
satisfy specified requirements, to
demonstrate that they are fit for purpose
and to detect defects.
Slide 44
Slide 44 text
44
Verification
Confirmation by examination and through
provision of objective evidence that
specified requirements have been fulfilled.
Are we building the product right?
Slide 45
Slide 45 text
45
Confirmation by examination and through
provision of objective evidence that the
requirements for a specific intended use or
application have been fulfilled.
Validation
Are we building the right product?
Slide 46
Slide 46 text
46
The exit criteria that a component or
system must satisfy in order to be accepted
by a user, customer or other authorized
entity.
Acceptance
Is the feature good enough?
Slide 47
Slide 47 text
concrètement
mais qu’est-ce qu’un test ?
Slide 48
Slide 48 text
48
● pré-conditions, post-conditions, invariants
● paramètres, valeurs de retour
● succès, échec, en cours, pas fait, planté
Slide 49
Slide 49 text
49
● tests statiques
■ vérification des sources
dead / unreachable code, métriques, syntaxe, standards...
■ pas d’exécution de code
Slide 50
Slide 50 text
50
● tests dynamiques
■ black box
se baser sur les spécifications, comportements macros,
abstraction de la conception
■ white box
se baser sur la conception, comportements micros
Slide 51
Slide 51 text
51
user
acceptance
smoke
portability
integration
unit
stress
alpha
beta
friendly user
accessibility
attack-based
bottom-up
component
integrity
load
monkey
regression
usability
Source : http://glossary.istqb.org/search/testing/
instrumented
Slide 52
Slide 52 text
les 6 commandements
Slide 53
Slide 53 text
53
1. Automatisable et rejouable
2. Facile à concevoir
3. Pérenne
4. Exécutable par tous
5. Facilement exécutable
6. Rapide d’exécution
Slide 54
Slide 54 text
et les bugs dans tout ça ?
Slide 55
Slide 55 text
55
● niveaux de bugs
new, open, assign, test, deferred, rejected, duplicate, verified, closed
● sévérités
minor / low, average / medium, major / high, critical
Slide 56
Slide 56 text
Test-Driven Development
Slide 57
Slide 57 text
57
● méthodologie de projet
Kent Beck, 2003
● héritage de eXtreme Programming
revues de codes, tests unitaires, cycles très courts, test-first
● Test Driven Development: By Example, Kent Beck
Addison-Wesley Longman, 2002, ISBN 0-321-14653-0, ISBN 978-0321146533
Slide 58
Slide 58 text
58
● proche du programme
JUnit, Espresso, QUnit, UnitJS, Mocha, ...
● vise le code source, l’implémentation
bas niveau, côté développeurs
Slide 59
Slide 59 text
59
Image : apollossc.com
Slide 60
Slide 60 text
60
Image : Wikipédia
Slide 61
Slide 61 text
Behaviour-Driven Development
Slide 62
Slide 62 text
62
● méthodologie de projet
Dan North, 2003
● héritage de Test-Driven Development
mélange de XP, TDD, YAGNI, domain driven design, DSL
● basé sur des stories et vise les spécifications
Cucumber, Gherkin
Slide 63
Slide 63 text
63
● proche des fonctionnalités
● vise le comportement du produit
et ne considère pas d’abord l’implémentation
66
● méthodologie de projet
● héritage de Behaviour-Driven Development
mélange de BDD, TDD
● basé sur des stories
Robot Framework
Slide 67
Slide 67 text
67
● proche de l’utilisateur
● vise l’acceptance du produit
● permet de guider le développement
implique tous les membres du projet qui savent ce qui
doit être fait
89
● les tests sont indispensables
● les développeurs sont de bons testeurs du
programme
● les utilisateurs sont de bons testeurs du
produit
● ce ne sont pas les outils qui manquent...