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
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)
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