Comment intégrer l'IA dans les tests logiciels ?
Julien Van Quackebeke (CEO All4Test) nous a fait le plaisir de répondre à cette question lors d'un meetup organisé par Nicolas Canseco (Ministry Of Testing) et acceuilli par Publicis.Sapient
2. Sommaire
A - Qu’est-ce que l’Intelligence Artificielle? Le Deep Learning?
B - Pourquoi faire appel à l’IA dans le test? Les Enjeux
C – Pour quel type de test ?
D - Les outils actuels
E – Prospective
F- Un exemple d’application avec Smartesting
3. Intervenant Meetup
● Julien Van Quackebeke / CEO d’ALL4TEST
● ALL4TEST est un pure payer du test logiciel depuis 2006, présent sur Paris,
Sophia-Antipolis et Tunis. 50 personnes, 30 % de croissance /an.
Consulting, formation, Veille techno, AT, TRA.
● Commission test et qualité de Telecom valley, Meetup : Software tester club
(sophia), speaker JFTL, organisateur de la SOIREE DU TEST à Sophia-Antipolis.
●Nombreux articles et video sur le test https://www.all4test.fr/dossiers-
thematiques/
5. Quelques précisions…
●Le terme “intelligence” n’a pas la même signification en Anglais et en
Français.
●En anglais la traduction exacte serait plus le savoir / la connaissance que
l’intelligence qui elle sous entend généralement la notion de conscience…ce
qui n’est pas de cas des robots ou IA …à ce jour .
● Lorsqu’on parle d’IA on parle souvent de capacité d’une machine à
apprendre par elle-même via des exemples et un nombres important de
données de références, à communiquer avec l’humain de manière
« naturelle » sans suivre un programme déterministe, sous la forme d’un
conversation (ex ChatBoot, reconnaissance d’images, traductions..) .
6. A - L’intelligence artificielle
Concept ambivalent - galvaudé? - qui
englobe plusieurs notions. Evoqué par
Alan Turing en 1950 ⇒ test de Turing.
Machine Learning (apprentissage
automatique en français): “Faire agir un
ordinateur d’une certaine façon sans le
programmer” (Arthur Samuel)
Programmation classique:
Données
Programme
Machine Résultats
Machine learning:
Données
ProgrammeMachine
Résultats
8. A - L’intelligence artificielle - Apprentissage supervisé
Valeurs de sortie.
Applications:
❏Reconnaissance
vocale
❏OCR
❏Reconnaissance
images / formes
❏Détection du Spam
9. A - L’intelligence artificielle - Apprentissage non-supervisé
Pas de valeurs de sortie.
Applications:
❏Clustering /
Regroupement
❏Détection
anomalies
10. A - L’intelligence artificielle - GAN
“La meilleure idée dans l’intelligence artificielle des 10 dernières années”
Yann LeCun
11. B – Les enjeux : pourquoi de l’IA dans le test ?
* Aider les testeurs humains pour réaliser une partie de leur taches
actuelles
* Anticiper les risques (prédictions), pour optimiser l’effort de test
• Optimiser l’automatisation des tests, automatiser la maintenance,
Proposer / générer des jeux de données de test
• Refacter / mettre à jour des anciennes campagne de test devenus
obsolètes de manière semi-automatique.
* Apporter une nouvelle approche / métier du test (sans scenarii de test)
12. C - Type de test concernés / outils / Synthése
Recherche des anomalies
Analyse prédictive des risques
❏ Prédiction de défauts via l’analyse de log et l’évolution du code
❏ Adaptation de l’effort de test
Rétro modélisation de modèle, détection des fréquences d’usage
Génération de jeux de données de tests pertinents
❏ Amélioration de la qualité et de la volumétrie des jeux de
données
Maintenance des tests automatiques (UI)
Identification d’anomalies d’affichage / modele
Optimisation des tests de non-régression / choix des enchainements
13. C - Prédiction des défauts
Machine Learning Modèle prédictif
v1
vn
.
.
.
Releases et défauts précédents
vn+1
Nouvelle release
Défauts probables
14. Vectorisation des données d’entrées:
❏ Complexité du code
❏ Lignes de code
Métrique d’Halstead
Nombre cyclomatique
❏ Nombre de dépendances
❏ Processus de développement
❏ Révisions du composant
❏ Nombre de refactoring
❏ Nombre de corrections/ ancienneté des corrections
❏ Nombre de lignes de code modifiées
C - Prédiction des défauts (suite)
Meilleurs prédicteurs
15. C - Rétro-modelisation
Génération automatique de modèle. Analyse des actions pertinentes
Start
Login Help About...
Product
search
...
To cart ...
Payment
L’IA peut affecter des probabilités qui
permettront de parcourir automatiquement
les branches les plus importantes de
l’application.
16. C - reconnaissance du GUI
Les intelligences artificielles relatives à la vision par ordinateur peuvent
permettre de reconnaître des éléments de’ l’interface graphique par leurs
caractéristiques.
Exemple (selenium):
17. C - Données d’entrées / jeux de données
Données d’entrées: problématique majeure du test.
Espace très grand: création et sélection de tests pertinent par le testeur
Cas d’espèce du GAN:
❏Génération des données d’entrées (jeux de données de test)
❏Classification des données d’entrées pertinentes
19. C- Critère d’optimisation des TNR
●Test diminuant le tps d’exécution
●• Reduction du nombre de cas de test pour atteindre un objectif de test
●• Test permettant une couverture compléte
●• Test lié à des changement de code recents
●• Tests dépendant d’exigences avec un risqué élévé
20. C – A la frontière de l’IA
Automatisation des tests de non-régression. Utilisation des releases
précédentes comme oracles de test.
Recherche des données d’entrées => maximisation de la couverture du code /
des fonctionnalités (evosuite, test unitaires)
Analyse statique
Robots de test
21. C – Stress test automatisé
- Génération aléatoire d’actions, de données d’entrée…
- Objectif : mettre le système dans un état bloqué, voir générer un crash
- Demande peu d’information de la part du testeur.
- Résultat facile à interpréter… mais plus long à traiter par la suite.
22. D- les Outils actuels / stress test
●Google Monkey
Intégré aux outils de DEV Android, gratuity – fuzz testing tool – random inputs
●Sapienz
open source, « search-based » testing tool : basé sur les techniques de recherche méta-heuristique
(algo génétique, recherche type tabu, optimisation combinatoire..). Permet d’optimiser des données
ou cas de test
Utilisé sur les 1,000 principales applications mobile Android, Sapienz a trouvé 558 bug non identifié
auparavant
● Dynodroid : – open source, – permet une approche combinée humain / outils
23. D - Outils: Functionize
Outil dans le cloud, basé sur une extension Chrome pour l’enregistrement des
tests.
Génération automatique des tests à partir des utilisateurs réels des websites
(module javascript)
Utilisation d’IA en Computer Vision pour détecter les anomalies d’affichages et
réparer l’identification des éléments de l’affichage.
Génération
de jeux de
données
Tests
unitaires
Tests
d’affichage
25. D - Outils: Appdiff
Outil Saas focalisé sur l’UI des applications Android (en
développement)
IA utilisée pour parcourir les branches de l’application (tests
exploratoires):
● Récupération de toutes les actions possibles sur un
affichage
● Classification par l’IA des actions les plus pertinentes
● Parcours aléatoire du modèle probabilisé selon la
classification faite par l’IA
Tests de non-régression sur l’affichage et tests de performance
de l’UI.
Tests de
régr.
Tests
d’affich.
Tests de
perf.
Tests
explo.
26. D - Outils: Infer
Infer est un outil d’analyse statique de code (java, objective C),
Utilisé par Facebook pour ses développements d’application mobile.
Cet outil est issu d’un rachat d’une entreprise spécialisée dans le
domaine par Facebook (Monoidics, en 2009, basée notamment sur la
logique de séparation).
Il permet notamment une détection automatique d’anomalies dans le
code dans une approche Devops.
Tests
unitaires
27. D - Outils: Infer
Analyse statique Java. Détection automatique des erreurs suivantes:
Prévention des
exceptions Null
Pointer Exception
Analyse des potentielles
fuites mémoire
Détection des Race
conditions
Tests
unitaires
28. D - Outils: EvoSuite
Algorithme génétique: génération des suites de tests unitaires Java
maximisant la couverture de code
Génération
de jeux de
données
Tests
unitaires
29. E - Perspectives, synthèse
Hier
tests manuels
Aujourd’hui
tests automatisés
Demain
tests robotisés
30. E - Vers des niveaux de tests plus élevés
Aujourd’hui:
- Tests de bas niveaux (unitaires)
- Aide au testeur
Demain:
- Tests d’intégration/système
grâce à la génération des données
d’entrées
Après-demain: tests d’acceptation?
- Graal : compréhension des exigences métiers (texte) et générations
automatiques des cas de test et données de test necessaire pour les valider.
31. Perspectives
D’une manière plus « macro » plusieurs hypothèses sont possibles :
- A/ Augmentation des capacités humaines, aide à la décision.
- B/ Progressivement l’autorité des humains passe aux Algorithmes,
l’humain devient de moins en moins utile dans le traitement des
données, dans les décisions. Cela peut arriver dans l’IT, mais surtout
dans d’autres métiers jugés peu impacté par les robots il n’y a pas si
longtemps :
- Des métiers comme chauffeurs de taxi, juristes, médecins sont
menacés par les robots et l’IA,
32. Perspectives
- Mais cela ouvre aussi la porte à de nouvelle génération d’ingénieurs et
donc de testeurs, capables de choisir les meilleurs algorithmes pour
résoudre des problématiques de plus en plus complexes, d’automatiser
des process, d’analyser les données suite à des exécutions automatiques.
- Ces technologies sont aussi applicables afin d’améliorer des process RPA
- c’est à nous de se préparer à ces évolutions…mais d’après le créateur de
Selenium, Jason Huggins, nous aurions facilement 10 à 15 ans avant que
ces IA soient opérationnelles
Video interview : https://goo.gl/7VW5Ev
33. Intelligence collective pour IA – Test ….
● A ce titre ALL4TEST, à commencé à travailler avec des éditeur comme
Smartesting sur le sujet. Nous aimerions collaborer également avec les labos
de recherche type INRIA et des « clients type » pour expérimenter ces
approches sur des problématiques projets. Projet CIR ?
● Partant ?
●Mail : julien@all4test.com
●Tel : 06 71 59 47 11
●www.all4test.fr
34. F - Exemple d’application en beta :
● Smartesting, partenaire ALL4TEST, présente un premier retour
d’expérience.
35. 6 février 2019
Reprise et optimisation
des patrimoines de tests par l’IA
Michel Guez – Arnaud Bouzy
36. Company profile
• Smartesting est un éditeur de logiciel, connu mondialement
comme spécialiste du Model-Based Testing (MBT), une
technique de conception de test
• Les solutions de Model-Based Testing sont proposées au
marché depuis une 15zaine d’années, mais elle ne se sont pas
déployées dans l’IT
• En 2017, Smartesting lance Yest®, un nouvel outil de
conception visuelle des tests, qui revisite le concept MBT
pour faire de lui un « enabler » de l’agilité
38. Contexte
• Patrimoines de tests anciens constitués pour des applications
historiques (et critiques) et gérés dans un outil de Test Management
type HP-ALM – plusieurs milliers de tests
– Plusieurs générations de Test Managers et de testeurs se sont succédées
hétérogénéité des tests
– Bonnes pratiques et discipline dans l’écriture et la gestion des tests ont fluctué au
cours du temps
• Ces applications historiques (et leur patrimoine de tests) continuent
d’évoluer
39. Obsolescence des tests
Cela se traduit par plusieurs types de problèmes sur les
cas de tests :
- Non mis à jour par rapport à l'évolution de l'application
- Rédigés par plusieurs personnes et manquant de cohérence
- Redondants
- Incomplets
- Trop détaillés
- Trop longs
Un test qui n’est pas exécuté est un test qui se dégrade
39
40. Obsolescence des tests
Source – Enquête CFTL 2019
83,5 % des répondants
à l’enquête CFTL 2019
indiquent avoir été
confronté à un
problème
d’obsolescence de
référentiels de tests
Un problème fréquemment rencontré par les équipes de test
40
41. Les cas d’usage
• Réversibilité & réappropriation :
– Prendre en main un référentiel de test
• Automatisation :
– Décider des tests à automatiser (TNR)
– Structurer les tests pour simplifier leur automatisation
• Réutilisation :
– Diminuer le travail de réécriture
– Faciliter la lecture et l’exécution des tests manuels par une plus
grande homogénéité
41
42. Résultats attendus de la reprise
• Corriger les tests
– C’est l’objectif premier : il faut garantir que l’ensemble des cas de test sont
alignés avec la version actuelle du système
• Simplifier les tests et supprimer les redondances
– L’ajout au fil de temps de nouveaux cas de test crée des redondances entre tests
– Des étapes de test peuvent aussi être factorisées en une seule de granularité
plus forte et d’autres étapes supprimées car inutiles dans la documentation des
tests
• Homogénéiser et paramétrer les tests
– Une même étape de test doit être décrite de façon identique, quel que soit le
cas de test
– Pour préparer l’automatisation, il est très utile de paramétrer les étapes de tests
pour diminuer le nombre de mots-clés à implémenter
42
43. Technologies IA
• Le clustering pour le regroupement des cas de test
– Calcul de distances (Levenstein, Euclidienne)
– Clustering hiérarchique
• L’analyse du langage naturel pour le refactoring des pas de test
– Intégré au prototype actuel : calcul de proximité syntaxique
– A l’étude pour la sémantique : Neural Word Embeddings et
Interactive Language Learning
43
44. Résultats
• 1er résultats expérimentaux sur 3 projets :
– Référentiels de 942, 302 et 42 cas de tests, et 13 325 pas de test
– Temps de reprise divisé par 3
• Validation de la technologie
– Février – Mars : réaliser 2 à 4 expérimentations supplémentaires
– Avril - Lancement du programme de Beta Testing en mode SaaS
44
45. Aperçu – regroupement des tests par
similarité
• Le résultat du clustering hiérarchique classiquement sous
forme d’arbres appelés dendogrammes
45
46. Aperçu – visualisation des workflows
• Les diagrammes résultants de groupes de scénarios sont
visualisés sous une forme proche de BPMN
Visualisation des étapes des tests
Visualisation en surbrillance de chaque test
Diagramme mis à jour à la volée pour chaque action de refactoring
46
47. Aperçu – Refactoring des étapes de test
Modification d’une étape et
de tous ses usages
Unification d’étapes de
test proches (proposition
des steps proches)
• Suppression d’étapes de test
• Permutations d’étapes de test
• Insertion d’étapes de test
Paramétrisation
d’une étape de
test et de tous
ses usages
Ordonnancement des
propositions de refactoring selon
l’usage appris de l’utilisateur47
48. Next Step
• Nous avons déjà éprouvé notre produit (Beta) sur quelques
patrimoines de test (totalisant en 15000 pas de test)
– Accélération du temps de reprise et d’optimisation constatée : X3
• Dans les semaines à venir, nous allons poursuivre la mise au
point de nos librairies d’IA sur d’autres patrimoines
Expérimentations avec la version Beta GRATUITE de notre
produit