Model Based Testing des applications du protocole MQTT

Click here to load reader

  • date post

    13-Apr-2017
  • Category

    Software

  • view

    258
  • download

    2

Embed Size (px)

Transcript of Model Based Testing des applications du protocole MQTT

  • Josu Melka

    Model Based Testing desapplications du protocole MQTT

    Mmoire de Master Recherche Informatiqueencadr par Fabrice Bouquet, Professeur des Universits

    27 Septembre 2016

  • Table des matires

    1 Introduction 4

    2 Le protocole MQTT 72.1 Fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    2.1.1 Connexion et Dconnexion . . . . . . . . . . . . . . . 102.1.2 Abonnements et Publications . . . . . . . . . . . . . . 102.1.3 Qualit de service . . . . . . . . . . . . . . . . . . . . 112.1.4 Persistance . . . . . . . . . . . . . . . . . . . . . . . . 132.1.5 Messages retenus . . . . . . . . . . . . . . . . . . . . . 132.1.6 Testament . . . . . . . . . . . . . . . . . . . . . . . . . 13

    2.2 Scurit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.2.1 Confidentialit . . . . . . . . . . . . . . . . . . . . . . 142.2.2 Authentification . . . . . . . . . . . . . . . . . . . . . 142.2.3 Intgrit . . . . . . . . . . . . . . . . . . . . . . . . . . 142.2.4 Gestion des droits . . . . . . . . . . . . . . . . . . . . 15

    2.3 Format binaire . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3.1 CONNECT . . . . . . . . . . . . . . . . . . . . . . . . 162.3.2 CONNACK . . . . . . . . . . . . . . . . . . . . . . . . 172.3.3 PUBLISH . . . . . . . . . . . . . . . . . . . . . . . . . 172.3.4 PUBACK, PUBREC, PUBREL, PUBCOMP . . . . . 182.3.5 SUBSCRIBE . . . . . . . . . . . . . . . . . . . . . . . 182.3.6 SUBACK . . . . . . . . . . . . . . . . . . . . . . . . . 192.3.7 UNSUBSCRIBE . . . . . . . . . . . . . . . . . . . . . 202.3.8 UNSUBACK . . . . . . . . . . . . . . . . . . . . . . . 202.3.9 PINGREQ, PINGRESP . . . . . . . . . . . . . . . . . 212.3.10 DISCONNECT . . . . . . . . . . . . . . . . . . . . . . 21

    2.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    3 Problmatiques de modlisation de MQTT 233.1 Model-Based-Testing du protocole . . . . . . . . . . . . . . . 24

    3.1.1 Sujet du test et observation . . . . . . . . . . . . . . . 263.1.2 Non dterminisme . . . . . . . . . . . . . . . . . . . . 26

    3.2 Altration des changes MQTT . . . . . . . . . . . . . . . . . 27

    1

  • TABLE DES MATIRES 2

    3.2.1 Suivi et validation des trames . . . . . . . . . . . . . . 273.2.2 Critres de transformation . . . . . . . . . . . . . . . . 283.2.3 Intgration . . . . . . . . . . . . . . . . . . . . . . . . 28

    3.3 Analyse des tests . . . . . . . . . . . . . . . . . . . . . . . . . 28

    4 Travail ralis 304.1 Outils utiliss . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    4.1.1 Smartesting CertifyIt . . . . . . . . . . . . . . . . . . 314.1.2 Eclipse Paho project . . . . . . . . . . . . . . . . . . . 334.1.3 Wireshark . . . . . . . . . . . . . . . . . . . . . . . . . 34

    4.2 Modlisation fonctionnelle du protocole MQTT . . . . . . . . 354.2.1 Mise en uvre . . . . . . . . . . . . . . . . . . . . . . 364.2.2 Fonctionnalits modlises . . . . . . . . . . . . . . . . 384.2.3 Gnration des tests . . . . . . . . . . . . . . . . . . . 404.2.4 Verdict . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    4.3 Proxy de test MQTT . . . . . . . . . . . . . . . . . . . . . . . 414.3.1 Ralisation . . . . . . . . . . . . . . . . . . . . . . . . 424.3.2 Modlisation du protocole . . . . . . . . . . . . . . . . 424.3.3 Intgration au script de test . . . . . . . . . . . . . . . 43

    4.4 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444.4.1 Tests gnrs avec CertifyIt . . . . . . . . . . . . . . . 444.4.2 Modlisation du format des trames . . . . . . . . . . . 444.4.3 Excution des test . . . . . . . . . . . . . . . . . . . . 454.4.4 Validation . . . . . . . . . . . . . . . . . . . . . . . . . 45

    5 Conclusion 47

    Bibliographie 49

    Remerciements 51

    A Codes sources (extraits) 52A.1 Suite de tests . . . . . . . . . . . . . . . . . . . . . . . . . . . 52A.2 Adaptateur pour le client MQTT . . . . . . . . . . . . . . . . 54A.3 Modlisation binaire des trames . . . . . . . . . . . . . . . . . 55

    B Log des tests excuts 57

    C Extraits de lannexe B de la norme MQTT 64

  • Table des figures

    1.1 IoT protocol stack . . . . . . . . . . . . . . . . . . . . . . . . 5

    2.3 Format dun paquet CONNECT . . . . . . . . . . . . . . . . 162.4 Format dun paquet CONNACK . . . . . . . . . . . . . . . . 172.5 Format dun paquet PUBLISH . . . . . . . . . . . . . . . . . 182.6 Format dun paquet PUB[ACK/REC/REL/COMP] . . . . . 182.7 Format dun paquet SUBSCRIBE . . . . . . . . . . . . . . . 192.8 Format dun paquet SUBACK . . . . . . . . . . . . . . . . . 202.9 Format dun paquet UNSUBSCRIBE . . . . . . . . . . . . . . 202.10 Format dun paquet UNSUBACK . . . . . . . . . . . . . . . . 212.11 Format dun paquet PING[REQ/RESP] . . . . . . . . . . . . 212.12 Format dun paquet DISCONNECT . . . . . . . . . . . . . . 21

    4.4 Processus du test de MQTT bas sur les modles . . . . . . 354.5 Modlisation UML du protocole MQTT . . . . . . . . . . . . 364.8 Architecture du proxy de test MQTT . . . . . . . . . . . . . 424.9 Notre processus du test pour MQTT . . . . . . . . . . . . . 43

    3

  • Chapitre 1

    Introduction

    Les objets connects se dmocratisent de plus en plus, le cabinet dana-lyse Gartner estimant leur nombre actuel plusieurs milliards dunits, etprdisant que leur nombre en 2020 pourra atteindre 25 milliards [5].

    La fiabilit des produits, les questions dinteroprabilit et les failles descurit sont des problmes encore trs largement rencontrs dans ce do-maine, ce qui freine lmergence du march. De par leur nature, les objetsconnects forment des systmes complexes qui rendent ces problmes lafois plus cruciaux et plus difficiles apprhender.

    Pouvoir certifier efficacement ces produits apparait donc comme une n-cessit majeure, alors mme que la diversit et la quantit de loffre ne cessede croitre.

    Le test est sans doute lune des techniques de validation la plus mmede rpondre ce besoin. Malgr le fait quil ne puisse apporter de garantieabsolue sur labsence dimperfection, cest un moyen efficace et relativementpeu coteux pour apporter un certain degr de confiance sur un systme.

    Toutefois, la mise en place de tests sur une gamme de produits aussidiversifie nest pas sans poser des problmes dchelle. En effet, validerchaque composant peut ncessiter un grand nombre de cas de test pourfournir une couverture suffisante, et il faut une certaine expertise pour dfinirdes cas de test pertinents.

    La mthodologie du test dirig par les modles offre sur ce terrain unesolution intressante : une fois le systme tester modlis, la gnration descas de tests est automatisable et configurable. Ainsi lon peut se contenterdtablir un modle de test, et de le faire voluer en fonction des besoins.

    Toutefois, la complexit inhrente des systmes connects impose dtu-dier soigneusement la modlisation que lon va adopter pour gnrer destests. Nous avons voulu approfondir cette question en exprimentant lap-plication du model based testing une problmatique concrte.

    4

  • CHAPITRE 1. INTRODUCTION 5

    Lun des aspects essentiels dune architecture IoT est celui de la commu-nication entre les divers composants du systme global. Il existe bien srde multiples moyens de connecter et de faire communiquer les composantsen question (un aperu des diffrentes couches de communication couram-ment employs est donn Figure 1.1), mais on assiste dans ce domaine lmergence de certains protocoles mieux adapts que dautres pour remplirce besoin.

    Figure 1.1 IoT protocol stack - Source : [13]

    Ainsi, avec son modle Publish/Subscribe et sa trs grande lgret, leprotocole MQTT est actuellement considr comme lun des candidats lesplus srieux pour assurer le transport des donnes au sein des architecturesIoT [10]. Dj largement utilis cest par exemple le protocole fourni parla plateforme Amazon Webservices IoT 1, on en trouve de nombreuses im-plmentations dans divers langages de programmation, dont beaucoup sontopen-source.

    Nous avons considr ce protocole comme tant la fois suffisammentsimple et intressant pour constituer lobjet de notre exprimentation, qui

    1. http://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.html

    http://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.htmlhttp://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.html

  • CHAPITRE 1. INTRODUCTION 6

    portera donc sur la mise en uvre de tests bass sur les modles afin devalider le support du protocole MQTT par des objets connects.

    Comme objectif de cette tude, nous avons souhait analyser les problma-tiques qui dcoulent de la mise en uvre de tels tests, et si possible proposerles solutions qui nous semblent adaptes et gnralisables.

    Dans le Chapitre 2, nous prsentons en dtail partir de sa spcificationle fonctionnement de MQTT ainsi que les diffrents aspect susceptibles dtremodliss et tests.

    Au Chapitre 3, nous discutons des implications de ce fonctionnement surla modlisation dun systme MQTT, et tentons de trouver des solutionsralisables aux problmes que nous avons rencontrs.

    Enfin, le Chapitre 4 exposera notre exprimentation de modlisation duprotocole et ses rsultats, ainsi que les outils utiliss et ceux qui ont d trecrs pour loccasion.

  • Chapitre 2

    Le protocole MQTT

    MQ Telemetry Transport est un protocole de messaging bas sur le pu-blish/subscribe la fois extrmement simple et lger, lui permettant ainsidtre utilisable partir dun matriel de trs faible puissance, ainsi que travers des rseaux forte latence voire peu fiables.

    Initialement cr en 1999 par Andy Stanford-Clark (IBM) et Arlen Nip-per (Eurotech), le protocole est alors pens pour alimenter les systmes detlmesure, et est connu lorigine sous le nom de MQ Integrator SCADADevice Pr