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, synthèse
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..) .
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
A - L’intelligence artificielle - Apprentissage supervisé
Valeurs de sortie.
Applications:
❏Reconnaissance
vocale
❏OCR
❏Reconnaissance
images / formes
❏Détection du Spam
A - L’intelligence artificielle - Apprentissage non-supervisé
Pas de valeurs de sortie.
Applications:
❏Clustering /
Regroupement
❏Détection
anomalies
A - L’intelligence artificielle - GAN
“La meilleure idée dans l’intelligence artificielle des 10 dernières années”
Yann LeCun
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, pour optimiser l’effort de test
* Optimiser l’automatisation des tests, automatiser la maintenance
* Proposer des jeux de données
* Apporter une nouvelle approche / métier du test
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
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
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
C - Prédiction des défauts (suite)
Meilleurs prédicteurs
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.
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):
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
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é
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
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.
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
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
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.
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
E - Perspectives, synthèse
Hier
tests manuels
Aujourd’hui
tests automatisés
Demain
tests robotisés
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.
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,
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.
- Certains tests manuels sur le terrain sont aussi très intéressant : ex Beta
testeur chez TESLA ☺
- 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
Intelligence collective pour IA – Test ….
● A ce titre ALL4TEST, à commencé à travailler sur le sujet avec des élèves de
l’ISTIA. 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 ? julien@all4test.com / 06 71 59 47 11
A suivre
● Prochain réunion de la commission test et qualité :
●Comment test une application basé sur l’IA : les ChatBoots