Alea jacta test - Bienvenue dans le monde des tests

Preview:

Citation preview

Alea jacta testTester n’est pas (que) douter

Pierre-Yves Lapersonne / Orange

✿✿✿✿ ʕ •ᴥ•ʔ/ ︻デ═一 Cette œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution 4.0 International.Version 8 - 08/11/2016

PY LAPERSONNE

Développeur mobile

@pylapp

Alea jacta test

Plan de test● les clichés sur les tests

● exemples de tests manqués

● pourquoi en faire ?

● les tests en détails

● quelques outils

● démos !

quelques... trucs.

6

● 8ème Journée Française des Tests Logiciels12 / 04 / 2016Montrouge

● CFTLComité Français des Tests LogicielsPerros Guirrec

● ISTQBInternational Software Testing Qualifications BoardBruxelles

quelques chiffres

8

● 40 % du budget projet dédiés aux tests

● 39 % des devs sont en mode TDD

● 46 % des devs estiment ne pas avoirassez de temps pour les tests

les clichés sur les tests

10

tester c’est douter !

11

ça ne sert à rien !

12

ça prend trop de temps !

13

ça coûte trop cher !

14

le client est le meilleur testeur !

15

ça ajoute des sources à maintenir !

inutiles les tests ?

17

Therac 251980’

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

19

AT&T15 Janvier 1990

20

● mise à jour du réseau téléphonique

● transmissions de mauvais messages entre les antennes

● 9h de panne

● 60 millions $ de pertes

21

Mars Climate Orbiter23 Septembre 1999

22

● plusieurs équipes internationales...

● utilisant le système anglo-saxon...

● ... ET le système métrique

● navigation totalement défectueuse

● 900 millions $ perdus

23

vol 501 de Ariane 54 Juin 1996

24

● récupération d’éléments logiciels Ariane 4

● overflow dans les calculs de trajectoire

● problème de conversionfloat 64 bits unsigned 16 bits

● destruction de la fusée

● +370 millions $ ... à l’eau

25

retournement d’un F-18

26

● retournement une fois passé l’équateur

● mauvaise gestion des coordonnées

27

Louvois2011

28

● retards de paiement

● mauvais soldes versés

● les familles des militaires en danger

● 465 millions d’euros d’erreur... juste en 2012selon la Cour des Comptes

29

Stagefright2015

30

● AOSP, Firefox, Firefox OS

● librairie multimédia obsolète

● débordement mémoire ● execution de code arbitraire, etc.

31

iOS et le killer text2015

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, ...

33

SNCF et Linux...2015

34

● sur Windows ? Ça fonctionne.

● sur OS X ? Ça fonctionne.

● Linux ? Android ? Oups.

35

Castorama8 Juin 2016

36

● suggestions douteuses selon les requêtes

● fermeture du site en catastrophedonc manque à gagner pour l’entreprise

37

SAIP14 Juillet 2016

38

● notification des usagers 3h après la tragédie

● retard d’information par rapport à d’autresFacebook, Twitter, QWIDAM, les SMS...

pourquoi faire des tests ?

39

● prouver la qualité du logiciel

● identifier des comportements incohérents

● repérer d’éventuelles failles

● avoir des clients cont€nts

● éviter les surcharge$ liées aux bugs

● et puis avoir la conscience tranquille aussi...

mais qu’est-ce qu’un test ?

définitions ISTQB / IEEE

mais qu’est-ce qu’un test ?

43

44

45

concrètement

mais qu’est-ce qu’un test ?

47

● pré-conditions, post-conditions, invariants

● paramètres, valeurs de retour

● succès, échec, en cours, pas fait, planté

48

● tests statiques

■ vérification des sourcesdead / unreachable code, métriques, syntaxe, standards...

■ pas d’exécution de code

49

● tests dynamiques

■ black boxse baser sur les spécifications, comportements macros / extérieurs,abstraction de la conception

■ white boxse baser sur la conception, comportements micros / intérieurs

50

● smoke / sanity / confidence tests

■ les autres tests pourront ou non démarrerlogiciel peut démarrer ? connexion faite ? etc.

● monkey tests

■ tester sans savoir ce que l’on faitrépétitif, générations probabilisées d’inputs, random...

51

● plusieurs types

■ utilisateursalpha / beta tests, utilisabilité, retours directs du public cible

■ systèmestress tests, performances, conformité envers les specifications

52

● plusieurs types

■ intégrationcommunication entre les composants via leurs interfaces

■ unitairesisoler les composants, chercher les défauts dans les API

le cycle de vie d’un test

54

1. planningscope, méthodologie, gestion des defects...

2. développementcas de tests, scénarios, scripts

3. exécutionexécution, résultats

55

4. defects reportingrejouer les tests, rapports

5. product delivery

les 6 commandements

57

1. Il doit être automatisé et rejouable

2. Il doit être facile à concevoir

3. Une fois écrit, il demeurera

4. Tout le monde peut le lancer

5. Il doit être lancé aussi simplement qu’un click sur un bouton

6. Il doit être rapide d’exécution

et les bugs dans tout ça ?

59

● niveaux de bugsnew, open, assign, test, deferred, rejected, duplicate, verified, closed

● sévéritésminor / low, average / medium, major / high, critical

Test-Driven Development

61

● méthodologie de projetKent Beck, 2003

● héritage de eXtreme Programmingrevues de codes, tests unitaires, cycles très courts, test-first

● Test Driven Development: By Example, Kent BeckAddison-Wesley Longman, 2002, ISBN 0-321-14653-0, ISBN 978-0321146533

62

63

la (grosse) boîte à outils

67

68

69

70

71

72

73

74

75

Monkey

adb shell monkey -p com.package.myApp --throttle 300 -s 123456 10

adb shell monkey -p com.package.myApp --pct-touch 50 -pct-motion 25 --pct-trackball 25 10000

76

Monkeyrunner

77

78

one more slide

81

● les tests sont indispensables

● les développeurs sont de bons testeurs du code

● les utilisateurs sont de bons testeurs du produit

● ce ne sont pas les outils qui manquent...

Merci !

@pylapp

Dura test, sed test. Alea jacta test !

● Des frameworks de tests

○ JUnit■ http://junit.org/

○ QUnit■ https://qunitjs.com/

○ UnitJS■ http://unitjs.com/

○ JSUnit■ http://www.jsunit.net/

○ Jasmine■ http://jasmine.github.io/

○ Mocha■ https://mochajs.org/

○ Appium■ http://appium.io/introduction.html?lang=en■ http://appium.io/slate/en/tutorial/android.html?java#■ https://github.com/appium/java-client

○ Robotium■ http://robotium.com/■ https://github.com/robotiumtech/robotium

○ Robotframework■ http://robotframework.org/

○ UIAutomator■ http://developer.android.com/tools/testing-support-library/index.html#UIAutomator

○ And others links...■ https://google.github.io/android-testing-support-library/■ https://google.github.io/android-testing-support-library/docs/androidjunitrunner-guide/index.html■ https://github.com/googlesamples/android-testing■ https://developer.android.com/tools/testing-support-library/index.html■ https://medium.com/@nileshjarad/how-to-do-tdd-in-android-90f013d91d7f#.dhvrjw8ug■ https://medium.com/@nileshjarad/why-developers-scared-to-refactor-code-47efd1b854e7#.ojtyerioc■ https://developer.android.com/studio/test/monkey.html■ https://developer.android.com/studio/test/monkeyrunner/index.html

● Des plateformes de tests

○ Google Cloud Test Lab■ https://developers.google.com/cloud-test-lab/

○ Sauce Labs■ http://saucelabs.com/

● Des robots de tests

○ Tapster■ https://www.tindie.com/products/hugs/tapster/■ http://bitbeam.org/■ https://www.youtube.com/watch?v=c_rfTvQs4YU■ https://www.youtube.com/watch?v=in2av9LtCfE

○ Rob5X■ http://www.keolabs.com/automation.html

○ Chrome Touch Bot■ http://www.frandroid.com/marques/google/291985_chrome-touchbot-robot-teste-reactivite-appareils-de-google

● D’autres liens chouettes

○ http://fr.slideshare.net/tfrommen/an-introduction-to-software-testing○ http://www.slideshare.net/UdayaSree/software-testing-life-cycle-presentation○ http://blog.hubstaff.com/why-you-should-write-unit-tests/○ http://blog.hubstaff.com/survey-many-developers-write-unit-tests/○ http://artofunittesting.com/○ http://programmers.stackexchange.com/questions/21133/how-to-write-good-unit-tests○ http://blog.stevensanderson.com/2009/08/24/writing-great-unit-tests-best-and-worst-practises/○ https://en.wikipedia.org/wiki/List_of_unit_testing_frameworks○ http://android-developers.blogspot.fr/2015/12/leveraging-product-flavors-in-android.html○ http://www.journaldugeek.com/2015/05/28/un-bug-qui-permet-a-un-sms-de-redemarrer-votre-iphone/○ http://www.numerama.com/tech/135593-sncf-empeche-achat-de-billets-train-ter-sous-linux.html○ https://fr.wikipedia.org/wiki/Logiciel_unique_%C3%A0_vocation_interarm%C3%A9es_de_la_solde○ https://jenkins-ci.org/○ http://www.marmiton.org/recettes/recette_pate-a-crepes-des-plus-raffinees_49665.aspx○ http://radonc.wikidot.com/radiation-accident-therac25○ http://users.csc.calpoly.edu/~jdalbey/SWE/Papers/att_collapse.html○ https://www.youtube.com/watch?v=_p3Qxl4736A○ https://www.nirgal.net/mco_end.html

Recommended