SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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
Frederic Hardy
 
Présentation de Robot framework
Présentation de Robot frameworkPrésentation de Robot framework
Présentation de Robot framework
gilleslenfant
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
laurent_opnworks
 
Intro sur les tests unitaires
Intro sur les tests unitairesIntro sur les tests unitaires
Intro sur les tests unitaires
PHPPRO
 

Was ist angesagt? (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
 

Andere mochten auch

Test planning & estimation
Test planning & estimationTest planning & estimation
Test planning & estimation
Leslie Smart
 
Grile évaluation rappel de cours
Grile évaluation rappel de coursGrile évaluation rappel de cours
Grile évaluation rappel de cours
Antoine Taly
 
Algorithmique_et_programmation_part2
Algorithmique_et_programmation_part2Algorithmique_et_programmation_part2
Algorithmique_et_programmation_part2
Emeric Tapachès
 
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
 
Cours python avancé
Cours python avancéCours python avancé
Cours python avancé
pierrepo
 

Andere mochten auch (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é
 

Ähnlich wie PyConFR - testons en python

Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php
ALTER WAY
 
[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
Christophe HERAL
 
ALT.Net Juin 2012 - Specflow
ALT.Net Juin 2012 - SpecflowALT.Net Juin 2012 - Specflow
ALT.Net Juin 2012 - Specflow
Mathias Kluba
 

Ähnlich wie 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...
 

Kürzlich hochgeladen

Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
ikospam0
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
AmgdoulHatim
 

Kürzlich hochgeladen (16)

Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
 
Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024
 
python-Cours Officiel POO Python-m103.pdf
python-Cours Officiel POO Python-m103.pdfpython-Cours Officiel POO Python-m103.pdf
python-Cours Officiel POO Python-m103.pdf
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptx
 
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
Cours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesCours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiques
 
Télécommunication et transport .pdfcours
Télécommunication et transport .pdfcoursTélécommunication et transport .pdfcours
Télécommunication et transport .pdfcours
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLE
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
 
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean EudesNeuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
 
les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhk
 

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