SlideShare une entreprise Scribd logo
from pycon.pyconfr import talk




           Testons en Python
     un retour d'expérience sur l'optimisation
             d'un process validation
class myTalk(talk):

    # introduction générale

    def __init__(self,
                 ISTQB=CFTL,
                 goals=[tester,
                        team] ):

        ...
Introduction
Qui suis-je ?

● Ingénieur Validation Logiciel chez Parrot depuis près de
  3 ans

● Python comme moteur des scripts de validation
  logicielle, des librairies et de l'automatisation des tests.

● Certification ISTQB (International Software Testing
  Qualifications Board) - Niveau Fondation
Introduction
Ce n'est pas...
Introduction
Ce n'est pas...
Introduction
c'est :
● Un retour d'expérience pour :
       ■ partager les idées...
       ■ ... et les erreurs !


● Python utilisé dans le domaine de la
  validation des logiciels embarqués

● Un exemple d'application des pratiques
  courantes
Introduction
Qu'est ce que la Validation Logicielle ?

ISTQB : Norme ISO 9126 (qualité logicielle)

   ●   Fonctionnabilité
   ●   Fiabilité
   ●   Utilisabilité
   ●   Rendement
   ●   Maintenabilité
   ●   Portabilité
Introduction

Que recherche le        Que recherche le
testeur ?               département validation ?

● découvrir de          ● Réaliser un maximum
  nouveaux bugs au        de tests en un
  sein du produit         minimum de temps

● tester de nouvelles   ● Trouver un maximum
  features                de bugs
Introduction

               let's do it FAST !

● Factoriser    (librairies)
● Automatiser (outils)
● Scénariser    (pool de script)
● Tester
def Part1(test_case, framework):

    # base de la validation

    import unittest
    ...
Validation Logicielle en Python
Qu'est ce qu'un cas de test ?

  Cas de test : un ensemble de valeurs d'entrée, de
  préconditions d‘exécution, de résultats attendus et de
  postconditions d‘exécution, développées pour un
  objectif ou une condition de tests particulier, tel
  qu'exécuter un chemin particulier d'un programme ou
  vérifier le respect d‘une exigence spécifique [d‘après
  ISTQB - IEEE 610]

Ce qui est facilement transposable au sein d'un
script
Validation Logicielle en Python
Un wrapper de unittest (Fast)

                  Pytestemb

Historique :
   ● Développé en interne, puis open source
   ● https://github.com/biluti/pytestemb
   ● version actuelle : 1.4.0
   ● version 2.0 en cours de développement
Validation Logicielle en Python
Un wrapper de unittest - Pytestemb
permet de gérer les scénarios des tests :
  ●   valeurs d'entrée
  ●   préconditions d‘exécution
  ●   résultats attendus
  ●   postconditions d‘exécution
  ●   objectif/condition de tests particulier
  ●   chemin particulier d'un programme
Validation Logicielle en Python
Un wrapper de unittest - Pytestemb
Exemple de script avec pytestemb
     import pytestemb as test

     if __name__ == "__main__":

       test.set_setup(pre_conditions)
       test.add_test_case(disconnect_during_playing_iPod)
       test.set_cleanup(post_conditions)

       test.run_script()
Validation Logicielle en Python
Un wrapper de unittest - Pytestemb
Exemple de script avec pytestemb

     def pre_conditions():
       pipe.create()
       pipe.connect()

     def post_conditions():
       pipe.disconnect()
       pipe.destroy()
Validation Logicielle en Python
Un wrapper de unittest - Pytestemb
Exemple de script avec pytestemb
     def disconnect_during_playing_iPod():
       # test coded here...
       pytestemb.assert_equal(exp1, exp2, "exp1 is != exp2")
       ....

       pytestemb.assert_true_fatal(is_present, "iPod not connected")
Validation Logicielle en Python
De la nécessité d'avoir un pool de test (faSt)

- Plusieurs scénarios
   - Plusieurs test cases
       -Plusieurs scripts
- La gestion des paramètres locaux
- La réutilisation de scénarios basiques (test
unitaires) pour des scénarios plus complexes
(test fonctionnels / recettes)
Validation Logicielle en Python
L'automatisation (fAst)
  test automation: The use of software to
  perform or support test activities, e.g. test
  management, test design, test execution
  and results checking. [ISTQB Glossary]

En cela, le Python permet de répondre à
certaines problématiques...
Validation Logicielle en Python
L'automatisation (fAst)


         ... MAIS NE PAS EN ABUSER
             AU SEIN DES SCRIPTS !
def Part2(*tools):

    # présentation des outils

    for tool in tools:
        tool.present()
Outils et Librairies
Pourquoi une librairie métier ?
  ● Des aspects spécifiques impliquent une
     factorisation du code orienté métier
  ● Certaines opérations seront réalisées par
     TOUS les testeurs, plusieurs fois par jour

Restreinte ? Open-source ?
  ● Au choix...
  ● ... mais le choix open-source n'est pas
     toujours utile pour le reste du monde !
Outils et Librairies
Que mettre dans la librairie ?

● modules d'automatisation
   ○ spécifique métier (pyserial, pybluez, ...)


● modules d'import/export resultats et tests
   ○ interface avec les bases de données


● modules d'installation-distribution
   ○ pour la release au sein de l'équipe (setuptools)
Outils et Librairies
Les campagnes de tests
      <XMLProjectVersion Version="2.1"/>
      <MetaCampaigns>
        <MetaCampaign Info="" Name="PLAYER">
          <Campaign Name="PLAYER_MSC"/>
          <Campaign Name="PLAYER_STARTUP"/>
        </MetaCampaign>
      </MetaCampaigns>
      <Campaigns>
        <Campaign Info="" Name="PLAYER_MSC">
          <Script Path="script.command.PLAYER" Type="TST" Name="cmd_CSSV_(MSC)"/>
          <Script Path="script.command.PLAYER" Type="TST" Name="cmd_CWNG_(MSC)"/>
        </Campaign>
        <Campaign Info="" Name="PLAYER_STARTUP">
          <Script Path="script.command.PLAYER" Type="TST" Name="cmd_CGPS_(startup)"/>
...
Outils et Librairies
Outils et Librairies
Les serveurs de tests
def Conclusion(Part1, Part2):

    # listing des notions vues

    dir(Part1)
    dir(Part2)
Quel gain ?
Pour le testeur ?              Pour le département ?

● Les scripts à écrire sont    ● Le pool de scripts gère
  plus faciles car l'univers     les regressions et les
  validation est déjà en         campagnes, tout est
  place                          facilement réutilisable

● L'automatisation permet      ● Les outils permettent un
  de rejouer et réutiliser       gain de temps dans la
  des scénarios                  gestion et l'import/export
                                 des résultats
Utilisation de Python
Python comme moteur des scripts
Mais aussi dans les outils et librairies

Python est utilisé de bout en bout
  ● idéal pour les changements dans l'équipe
  ● idéal pour la maintenance
  ● idéal pour la gestion des packages
Merci !

Mail:    guillaume.buret@parrot.com
Twitter: @g_buret

Contenu connexe

Tendances

Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDD
Xavier NOPRE
 
Traits : de la théorie à la pratique
Traits : de la théorie à la pratiqueTraits : de la théorie à la pratique
Traits : de la théorie à la pratiqueFrederic Hardy
 
J Unit
J UnitJ Unit
Robot Framework Introduction
Robot Framework IntroductionRobot Framework Introduction
Robot Framework Introduction
laurent bristiel
 
Test unitaire
Test unitaireTest unitaire
Test unitaire
IsenDev
 
Xhprof
XhprofXhprof
Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et Web
Christophe Rochefolle
 
Présentation de Robot framework
Présentation de Robot frameworkPrésentation de Robot framework
Présentation de Robot frameworkgilleslenfant
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
Jonathan Bonzy
 
Flex Unit Testing
Flex Unit TestingFlex Unit Testing
Flex Unit Testing
Christophe Keromen
 
Tester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue techTester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue tech
Marine Karam
 
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileLes cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Denis Voituron
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transcolaurent_opnworks
 
Intro sur les tests unitaires
Intro sur les tests unitairesIntro sur les tests unitaires
Intro sur les tests unitairesPHPPRO
 
Université du soir - TDD
Université du soir - TDDUniversité du soir - TDD
Université du soir - TDD
Jean-Baptiste Vigneron
 
JAVA 8
JAVA 8JAVA 8
Testinfra pyconfr 2017
Testinfra pyconfr 2017Testinfra pyconfr 2017
Testinfra pyconfr 2017
Logilab
 
Architecture Plug-in en LabVIEW : de la conception à la réalisation
Architecture Plug-in en LabVIEW : de la conception à la réalisationArchitecture Plug-in en LabVIEW : de la conception à la réalisation
Architecture Plug-in en LabVIEW : de la conception à la réalisation
SAPHIR - Signal Physique & Instrumentation
 
Les tests behat par la pratique
Les tests behat par la pratiqueLes tests behat par la pratique
Les tests behat par la pratique
Guilhem Bourgoin
 

Tendances (20)

Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDD
 
Traits : de la théorie à la pratique
Traits : de la théorie à la pratiqueTraits : de la théorie à la pratique
Traits : de la théorie à la pratique
 
J Unit
J UnitJ Unit
J Unit
 
Robot Framework Introduction
Robot Framework IntroductionRobot Framework Introduction
Robot Framework Introduction
 
Test unitaire
Test unitaireTest unitaire
Test unitaire
 
Xhprof
XhprofXhprof
Xhprof
 
Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et Web
 
Présentation de Robot framework
Présentation de Robot frameworkPrésentation de Robot framework
Présentation de Robot framework
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Test unitaire
Test unitaireTest unitaire
Test unitaire
 
Flex Unit Testing
Flex Unit TestingFlex Unit Testing
Flex Unit Testing
 
Tester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue techTester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue tech
 
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileLes cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
 
Intro sur les tests unitaires
Intro sur les tests unitairesIntro sur les tests unitaires
Intro sur les tests unitaires
 
Université du soir - TDD
Université du soir - TDDUniversité du soir - TDD
Université du soir - TDD
 
JAVA 8
JAVA 8JAVA 8
JAVA 8
 
Testinfra pyconfr 2017
Testinfra pyconfr 2017Testinfra pyconfr 2017
Testinfra pyconfr 2017
 
Architecture Plug-in en LabVIEW : de la conception à la réalisation
Architecture Plug-in en LabVIEW : de la conception à la réalisationArchitecture Plug-in en LabVIEW : de la conception à la réalisation
Architecture Plug-in en LabVIEW : de la conception à la réalisation
 
Les tests behat par la pratique
Les tests behat par la pratiqueLes tests behat par la pratique
Les tests behat par la pratique
 

En vedette

Test planning & estimation
Test planning & estimationTest planning & estimation
Test planning & estimation
Leslie Smart
 
Code Week 2014 - atelier d'initiation à la programmation avec python
Code Week 2014 - atelier d'initiation à la programmation avec pythonCode Week 2014 - atelier d'initiation à la programmation avec python
Code Week 2014 - atelier d'initiation à la programmation avec python
bbourgois
 
Programmation objet
Programmation objetProgrammation objet
Programmation objet
Antoine Taly
 
Biopython
BiopythonBiopython
Biopython
Antoine Taly
 
Présentation de l'appication Nao Beer Buddy
Présentation de l'appication Nao Beer BuddyPrésentation de l'appication Nao Beer Buddy
Présentation de l'appication Nao Beer Buddy
bbourgois
 
Grile évaluation rappel de cours
Grile évaluation rappel de coursGrile évaluation rappel de cours
Grile évaluation rappel de coursAntoine Taly
 
PhD Proposal
PhD ProposalPhD Proposal
PhD Proposal
Antoine Taly
 
Cryptography basics
Cryptography basicsCryptography basics
Cryptography basics
Shellmates
 
Algorithmique_et_programmation_part2
Algorithmique_et_programmation_part2Algorithmique_et_programmation_part2
Algorithmique_et_programmation_part2Emeric Tapachès
 
Python et les bases de données non sql
Python et les bases de données non sqlPython et les bases de données non sql
Python et les bases de données non sql
bchesneau
 
Base NoSql et Python
Base NoSql et PythonBase NoSql et Python
Base NoSql et Python
yboussard
 
Python in Computer Vision
Python in Computer VisionPython in Computer Vision
Python in Computer Vision
Brian Thorne
 
Cours fabrication mécanique5
Cours fabrication mécanique5Cours fabrication mécanique5
Cours fabrication mécanique5
bendrisk
 
Cours fabrication mécanique1
Cours fabrication mécanique1Cours fabrication mécanique1
Cours fabrication mécanique1
bendrisk
 
Test de logiciels
Test de logiciels Test de logiciels
Test de logiciels
Bilel Abed
 
Python et son intégration avec Odoo
Python et son intégration avec OdooPython et son intégration avec Odoo
Python et son intégration avec Odoo
Hassan WAHSISS
 
Chap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec pythonChap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec python
Mohammed TAMALI
 
Notion de fonction en Python
Notion de fonction en PythonNotion de fonction en Python
Notion de fonction en Python
Sylvain Leroux
 
ModèLes DexéCution
ModèLes DexéCutionModèLes DexéCution
ModèLes DexéCution
Sylvain Leroux
 
Cours python avancé
Cours python avancéCours python avancé
Cours python avancépierrepo
 

En vedette (20)

Test planning & estimation
Test planning & estimationTest planning & estimation
Test planning & estimation
 
Code Week 2014 - atelier d'initiation à la programmation avec python
Code Week 2014 - atelier d'initiation à la programmation avec pythonCode Week 2014 - atelier d'initiation à la programmation avec python
Code Week 2014 - atelier d'initiation à la programmation avec python
 
Programmation objet
Programmation objetProgrammation objet
Programmation objet
 
Biopython
BiopythonBiopython
Biopython
 
Présentation de l'appication Nao Beer Buddy
Présentation de l'appication Nao Beer BuddyPrésentation de l'appication Nao Beer Buddy
Présentation de l'appication Nao Beer Buddy
 
Grile évaluation rappel de cours
Grile évaluation rappel de coursGrile évaluation rappel de cours
Grile évaluation rappel de cours
 
PhD Proposal
PhD ProposalPhD Proposal
PhD Proposal
 
Cryptography basics
Cryptography basicsCryptography basics
Cryptography basics
 
Algorithmique_et_programmation_part2
Algorithmique_et_programmation_part2Algorithmique_et_programmation_part2
Algorithmique_et_programmation_part2
 
Python et les bases de données non sql
Python et les bases de données non sqlPython et les bases de données non sql
Python et les bases de données non sql
 
Base NoSql et Python
Base NoSql et PythonBase NoSql et Python
Base NoSql et Python
 
Python in Computer Vision
Python in Computer VisionPython in Computer Vision
Python in Computer Vision
 
Cours fabrication mécanique5
Cours fabrication mécanique5Cours fabrication mécanique5
Cours fabrication mécanique5
 
Cours fabrication mécanique1
Cours fabrication mécanique1Cours fabrication mécanique1
Cours fabrication mécanique1
 
Test de logiciels
Test de logiciels Test de logiciels
Test de logiciels
 
Python et son intégration avec Odoo
Python et son intégration avec OdooPython et son intégration avec Odoo
Python et son intégration avec Odoo
 
Chap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec pythonChap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec python
 
Notion de fonction en Python
Notion de fonction en PythonNotion de fonction en Python
Notion de fonction en Python
 
ModèLes DexéCution
ModèLes DexéCutionModèLes DexéCution
ModèLes DexéCution
 
Cours python avancé
Cours python avancéCours python avancé
Cours python avancé
 

Similaire à PyConFR - testons en python

Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2
Christophe Rochefolle
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
Sylvain Leroy
 
Automatisation des tests - objectifs et concepts - partie 1
Automatisation des tests  - objectifs et concepts - partie 1Automatisation des tests  - objectifs et concepts - partie 1
Automatisation des tests - objectifs et concepts - partie 1
Christophe Rochefolle
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
Arnaud Héritier
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php ALTER WAY
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
Nicolas wallerand
 
Performance ug#1
Performance ug#1Performance ug#1
Performance ug#1
Marc Bojoly
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement MicrosoftChristophe HERAL
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)
Martin Latrille
 
Cerberus Testing
Cerberus TestingCerberus Testing
Cerberus Testing
CIVEL Benoit
 
Java scripting api
Java scripting apiJava scripting api
Java scripting api
Franck SIMON
 
Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratif
kemenaran
 
Catalogue PFE 2019
Catalogue PFE 2019Catalogue PFE 2019
Catalogue PFE 2019
NeoXam Tunisia
 
Tests Dinterface SWT
Tests Dinterface SWTTests Dinterface SWT
Tests Dinterface SWT
Eric Le Merdy
 
Test unitaires
Test unitairesTest unitaires
Test unitaires
Mohamed Akrouh
 
Fonctionnalités du logiciel Infiltrea
Fonctionnalités du logiciel InfiltreaFonctionnalités du logiciel Infiltrea
Fonctionnalités du logiciel Infiltrea
Testoon
 
ALT.Net Juin 2012 - Specflow
ALT.Net Juin 2012 - SpecflowALT.Net Juin 2012 - Specflow
ALT.Net Juin 2012 - SpecflowMathias Kluba
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
François Petitit
 
Ez18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellEz18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshell
gdigugli
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Normandy JUG
 

Similaire à PyConFR - testons en python (20)

Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Automatisation des tests - objectifs et concepts - partie 1
Automatisation des tests  - objectifs et concepts - partie 1Automatisation des tests  - objectifs et concepts - partie 1
Automatisation des tests - objectifs et concepts - partie 1
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
Performance ug#1
Performance ug#1Performance ug#1
Performance ug#1
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)
 
Cerberus Testing
Cerberus TestingCerberus Testing
Cerberus Testing
 
Java scripting api
Java scripting apiJava scripting api
Java scripting api
 
Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratif
 
Catalogue PFE 2019
Catalogue PFE 2019Catalogue PFE 2019
Catalogue PFE 2019
 
Tests Dinterface SWT
Tests Dinterface SWTTests Dinterface SWT
Tests Dinterface SWT
 
Test unitaires
Test unitairesTest unitaires
Test unitaires
 
Fonctionnalités du logiciel Infiltrea
Fonctionnalités du logiciel InfiltreaFonctionnalités du logiciel Infiltrea
Fonctionnalités du logiciel Infiltrea
 
ALT.Net Juin 2012 - Specflow
ALT.Net Juin 2012 - SpecflowALT.Net Juin 2012 - Specflow
ALT.Net Juin 2012 - Specflow
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
Ez18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellEz18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshell
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
 

Dernier

Presentation powerpoint sur la filiere electrotechnique
Presentation powerpoint sur la filiere electrotechniquePresentation powerpoint sur la filiere electrotechnique
Presentation powerpoint sur la filiere electrotechnique
mohammadaminejouini
 
Margaux Laurens - Neel.pptx
Margaux        Laurens     -     Neel.pptxMargaux        Laurens     -     Neel.pptx
Margaux Laurens - Neel.pptx
Txaruka
 
Veille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdfVeille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdf
frizzole
 
Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union
 
Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...
Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...
Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...
MustaphaZhiri
 
BATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en FranceBATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en France
Txaruka
 
Proyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de pazProyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de paz
Morzadec Cécile
 

Dernier (7)

Presentation powerpoint sur la filiere electrotechnique
Presentation powerpoint sur la filiere electrotechniquePresentation powerpoint sur la filiere electrotechnique
Presentation powerpoint sur la filiere electrotechnique
 
Margaux Laurens - Neel.pptx
Margaux        Laurens     -     Neel.pptxMargaux        Laurens     -     Neel.pptx
Margaux Laurens - Neel.pptx
 
Veille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdfVeille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdf
 
Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023
 
Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...
Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...
Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...
 
BATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en FranceBATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en France
 
Proyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de pazProyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de paz
 

PyConFR - testons en python

  • 1. from pycon.pyconfr import talk Testons en Python un retour d'expérience sur l'optimisation d'un process validation
  • 2. class myTalk(talk): # introduction générale def __init__(self, ISTQB=CFTL, goals=[tester, team] ): ...
  • 3. Introduction Qui suis-je ? ● Ingénieur Validation Logiciel chez Parrot depuis près de 3 ans ● Python comme moteur des scripts de validation logicielle, des librairies et de l'automatisation des tests. ● Certification ISTQB (International Software Testing Qualifications Board) - Niveau Fondation
  • 6. Introduction c'est : ● Un retour d'expérience pour : ■ partager les idées... ■ ... et les erreurs ! ● Python utilisé dans le domaine de la validation des logiciels embarqués ● Un exemple d'application des pratiques courantes
  • 7. Introduction Qu'est ce que la Validation Logicielle ? ISTQB : Norme ISO 9126 (qualité logicielle) ● Fonctionnabilité ● Fiabilité ● Utilisabilité ● Rendement ● Maintenabilité ● Portabilité
  • 8. Introduction Que recherche le Que recherche le testeur ? département validation ? ● découvrir de ● Réaliser un maximum nouveaux bugs au de tests en un sein du produit minimum de temps ● tester de nouvelles ● Trouver un maximum features de bugs
  • 9. Introduction let's do it FAST ! ● Factoriser (librairies) ● Automatiser (outils) ● Scénariser (pool de script) ● Tester
  • 10. def Part1(test_case, framework): # base de la validation import unittest ...
  • 11. Validation Logicielle en Python Qu'est ce qu'un cas de test ? Cas de test : un ensemble de valeurs d'entrée, de préconditions d‘exécution, de résultats attendus et de postconditions d‘exécution, développées pour un objectif ou une condition de tests particulier, tel qu'exécuter un chemin particulier d'un programme ou vérifier le respect d‘une exigence spécifique [d‘après ISTQB - IEEE 610] Ce qui est facilement transposable au sein d'un script
  • 12. Validation Logicielle en Python Un wrapper de unittest (Fast) Pytestemb Historique : ● Développé en interne, puis open source ● https://github.com/biluti/pytestemb ● version actuelle : 1.4.0 ● version 2.0 en cours de développement
  • 13. Validation Logicielle en Python Un wrapper de unittest - Pytestemb permet de gérer les scénarios des tests : ● valeurs d'entrée ● préconditions d‘exécution ● résultats attendus ● postconditions d‘exécution ● objectif/condition de tests particulier ● chemin particulier d'un programme
  • 14. Validation Logicielle en Python Un wrapper de unittest - Pytestemb Exemple de script avec pytestemb import pytestemb as test if __name__ == "__main__": test.set_setup(pre_conditions) test.add_test_case(disconnect_during_playing_iPod) test.set_cleanup(post_conditions) test.run_script()
  • 15. Validation Logicielle en Python Un wrapper de unittest - Pytestemb Exemple de script avec pytestemb def pre_conditions(): pipe.create() pipe.connect() def post_conditions(): pipe.disconnect() pipe.destroy()
  • 16. Validation Logicielle en Python Un wrapper de unittest - Pytestemb Exemple de script avec pytestemb def disconnect_during_playing_iPod(): # test coded here... pytestemb.assert_equal(exp1, exp2, "exp1 is != exp2") .... pytestemb.assert_true_fatal(is_present, "iPod not connected")
  • 17. Validation Logicielle en Python De la nécessité d'avoir un pool de test (faSt) - Plusieurs scénarios - Plusieurs test cases -Plusieurs scripts - La gestion des paramètres locaux - La réutilisation de scénarios basiques (test unitaires) pour des scénarios plus complexes (test fonctionnels / recettes)
  • 18. Validation Logicielle en Python L'automatisation (fAst) test automation: The use of software to perform or support test activities, e.g. test management, test design, test execution and results checking. [ISTQB Glossary] En cela, le Python permet de répondre à certaines problématiques...
  • 19. Validation Logicielle en Python L'automatisation (fAst) ... MAIS NE PAS EN ABUSER AU SEIN DES SCRIPTS !
  • 20. def Part2(*tools): # présentation des outils for tool in tools: tool.present()
  • 21. Outils et Librairies Pourquoi une librairie métier ? ● Des aspects spécifiques impliquent une factorisation du code orienté métier ● Certaines opérations seront réalisées par TOUS les testeurs, plusieurs fois par jour Restreinte ? Open-source ? ● Au choix... ● ... mais le choix open-source n'est pas toujours utile pour le reste du monde !
  • 22. Outils et Librairies Que mettre dans la librairie ? ● modules d'automatisation ○ spécifique métier (pyserial, pybluez, ...) ● modules d'import/export resultats et tests ○ interface avec les bases de données ● modules d'installation-distribution ○ pour la release au sein de l'équipe (setuptools)
  • 23. Outils et Librairies Les campagnes de tests <XMLProjectVersion Version="2.1"/> <MetaCampaigns> <MetaCampaign Info="" Name="PLAYER"> <Campaign Name="PLAYER_MSC"/> <Campaign Name="PLAYER_STARTUP"/> </MetaCampaign> </MetaCampaigns> <Campaigns> <Campaign Info="" Name="PLAYER_MSC"> <Script Path="script.command.PLAYER" Type="TST" Name="cmd_CSSV_(MSC)"/> <Script Path="script.command.PLAYER" Type="TST" Name="cmd_CWNG_(MSC)"/> </Campaign> <Campaign Info="" Name="PLAYER_STARTUP"> <Script Path="script.command.PLAYER" Type="TST" Name="cmd_CGPS_(startup)"/> ...
  • 25. Outils et Librairies Les serveurs de tests
  • 26. def Conclusion(Part1, Part2): # listing des notions vues dir(Part1) dir(Part2)
  • 27. Quel gain ? Pour le testeur ? Pour le département ? ● Les scripts à écrire sont ● Le pool de scripts gère plus faciles car l'univers les regressions et les validation est déjà en campagnes, tout est place facilement réutilisable ● L'automatisation permet ● Les outils permettent un de rejouer et réutiliser gain de temps dans la des scénarios gestion et l'import/export des résultats
  • 28. Utilisation de Python Python comme moteur des scripts Mais aussi dans les outils et librairies Python est utilisé de bout en bout ● idéal pour les changements dans l'équipe ● idéal pour la maintenance ● idéal pour la gestion des packages
  • 29. Merci ! Mail: guillaume.buret@parrot.com Twitter: @g_buret