from pycon.pyconfr import talk           Testons en Python     un retour dexpérience sur loptimisation             dun pro...
class myTalk(talk):    # introduction générale    def __init__(self,                 ISTQB=CFTL,                 goals=[te...
IntroductionQui suis-je ?● Ingénieur Validation Logiciel chez Parrot depuis près de  3 ans● Python comme moteur des script...
IntroductionCe nest pas...
IntroductionCe nest pas...
Introductioncest :● Un retour dexpérience pour :       ■ partager les idées...       ■ ... et les erreurs !● Python utilis...
IntroductionQuest ce que la Validation Logicielle ?ISTQB : Norme ISO 9126 (qualité logicielle)   ●   Fonctionnabilité   ● ...
IntroductionQue recherche le        Que recherche letesteur ?               département validation ?● découvrir de        ...
Introduction               lets do it FAST !● Factoriser    (librairies)● Automatiser (outils)● Scénariser    (pool de scr...
def Part1(test_case, framework):    # base de la validation    import unittest    ...
Validation Logicielle en PythonQuest ce quun cas de test ?  Cas de test : un ensemble de valeurs dentrée, de  précondition...
Validation Logicielle en PythonUn wrapper de unittest (Fast)                  PytestembHistorique :   ● Développé en inter...
Validation Logicielle en PythonUn wrapper de unittest - Pytestembpermet de gérer les scénarios des tests :  ●   valeurs de...
Validation Logicielle en PythonUn wrapper de unittest - PytestembExemple de script avec pytestemb     import pytestemb as ...
Validation Logicielle en PythonUn wrapper de unittest - PytestembExemple de script avec pytestemb     def pre_conditions()...
Validation Logicielle en PythonUn wrapper de unittest - PytestembExemple de script avec pytestemb     def disconnect_durin...
Validation Logicielle en PythonDe la nécessité davoir un pool de test (faSt)- Plusieurs scénarios   - Plusieurs test cases...
Validation Logicielle en PythonLautomatisation (fAst)  test automation: The use of software to  perform or support test ac...
Validation Logicielle en PythonLautomatisation (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 LibrairiesPourquoi une librairie métier ?  ● Des aspects spécifiques impliquent une     factorisation du code or...
Outils et LibrairiesQue mettre dans la librairie ?● modules dautomatisation   ○ spécifique métier (pyserial, pybluez, ...)...
Outils et LibrairiesLes campagnes de tests      <XMLProjectVersion Version="2.1"/>      <MetaCampaigns>        <MetaCampai...
Outils et Librairies
Outils et LibrairiesLes 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  p...
Utilisation de PythonPython comme moteur des scriptsMais aussi dans les outils et librairiesPython est utilisé de bout en ...
Merci !Mail:    guillaume.buret@parrot.comTwitter: @g_buret
Prochain SlideShare
Chargement dans…5
×

PyConFR - testons en python

1 309 vues

Publié le

Publié dans : Formation
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 309
Sur SlideShare
0
Issues des intégrations
0
Intégrations
36
Actions
Partages
0
Téléchargements
17
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

PyConFR - testons en python

  1. 1. from pycon.pyconfr import talk Testons en Python un retour dexpérience sur loptimisation dun process validation
  2. 2. class myTalk(talk): # introduction générale def __init__(self, ISTQB=CFTL, goals=[tester, team] ): ...
  3. 3. IntroductionQui 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 lautomatisation des tests.● Certification ISTQB (International Software Testing Qualifications Board) - Niveau Fondation
  4. 4. IntroductionCe nest pas...
  5. 5. IntroductionCe nest pas...
  6. 6. Introductioncest :● Un retour dexpérience pour : ■ partager les idées... ■ ... et les erreurs !● Python utilisé dans le domaine de la validation des logiciels embarqués● Un exemple dapplication des pratiques courantes
  7. 7. IntroductionQuest ce que la Validation Logicielle ?ISTQB : Norme ISO 9126 (qualité logicielle) ● Fonctionnabilité ● Fiabilité ● Utilisabilité ● Rendement ● Maintenabilité ● Portabilité
  8. 8. IntroductionQue recherche le Que recherche letesteur ? 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. 9. Introduction lets do it FAST !● Factoriser (librairies)● Automatiser (outils)● Scénariser (pool de script)● Tester
  10. 10. def Part1(test_case, framework): # base de la validation import unittest ...
  11. 11. Validation Logicielle en PythonQuest ce quun cas de test ? Cas de test : un ensemble de valeurs dentré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 quexécuter un chemin particulier dun programme ou vérifier le respect d‘une exigence spécifique [d‘après ISTQB - IEEE 610]Ce qui est facilement transposable au sein dunscript
  12. 12. Validation Logicielle en PythonUn wrapper de unittest (Fast) PytestembHistorique : ● 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. 13. Validation Logicielle en PythonUn wrapper de unittest - Pytestembpermet de gérer les scénarios des tests : ● valeurs dentrée ● préconditions d‘exécution ● résultats attendus ● postconditions d‘exécution ● objectif/condition de tests particulier ● chemin particulier dun programme
  14. 14. Validation Logicielle en PythonUn wrapper de unittest - PytestembExemple 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. 15. Validation Logicielle en PythonUn wrapper de unittest - PytestembExemple de script avec pytestemb def pre_conditions(): pipe.create() pipe.connect() def post_conditions(): pipe.disconnect() pipe.destroy()
  16. 16. Validation Logicielle en PythonUn wrapper de unittest - PytestembExemple 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. 17. Validation Logicielle en PythonDe la nécessité davoir 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 (testunitaires) pour des scénarios plus complexes(test fonctionnels / recettes)
  18. 18. Validation Logicielle en PythonLautomatisation (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. 19. Validation Logicielle en PythonLautomatisation (fAst) ... MAIS NE PAS EN ABUSER AU SEIN DES SCRIPTS !
  20. 20. def Part2(*tools): # présentation des outils for tool in tools: tool.present()
  21. 21. Outils et LibrairiesPourquoi 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 jourRestreinte ? Open-source ? ● Au choix... ● ... mais le choix open-source nest pas toujours utile pour le reste du monde !
  22. 22. Outils et LibrairiesQue mettre dans la librairie ?● modules dautomatisation ○ spécifique métier (pyserial, pybluez, ...)● modules dimport/export resultats et tests ○ interface avec les bases de données● modules dinstallation-distribution ○ pour la release au sein de léquipe (setuptools)
  23. 23. Outils et LibrairiesLes 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)"/>...
  24. 24. Outils et Librairies
  25. 25. Outils et LibrairiesLes serveurs de tests
  26. 26. def Conclusion(Part1, Part2): # listing des notions vues dir(Part1) dir(Part2)
  27. 27. Quel gain ?Pour le testeur ? Pour le département ?● Les scripts à écrire sont ● Le pool de scripts gère plus faciles car lunivers les regressions et les validation est déjà en campagnes, tout est place facilement réutilisable● Lautomatisation permet ● Les outils permettent un de rejouer et réutiliser gain de temps dans la des scénarios gestion et limport/export des résultats
  28. 28. Utilisation de PythonPython comme moteur des scriptsMais aussi dans les outils et librairiesPython 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. 29. Merci !Mail: guillaume.buret@parrot.comTwitter: @g_buret

×