Sélection automatique de jeux de tests pour les logiciels Software Modeling and Verification group 1. Modélisation2. Sélection des Tests 3. Exécution et Observation Le problème (exemple) Modèle du Logiciel > eBanking Utilisateur sendChallengeNumber errorUserName errorPasswd errorChallenge errorUserBlocked errorPaymentCreation errorPaymentModification loginUserName loginPasswd loginChallenge createPayment giveDetailsBeneficiary modifyPaiment deletePayment Vérification automatique dun système logiciel Nous sélectionnons automatiquement un ensemble de tests pertinents applicables au système. En utilisant le modèle nous générons un prototype du SUT. Lutilisateur exprime des hypothèses sur le comportement du SUT dans un langage logique de contrainte. Nous générons des tests abstraits conformes aux hypothèses et validés par le prototype opérationnel. Nous transformons ces tests dans le langage du pilote de test. Le pilote est un programme qui interagi avec le SUT et effectue lexécution des tests. Une décision est prise par loracle au sujet du résultat du test. Le modèle est une abstraction du logiciel que lUtilisateur utilise. Il représente le comportement, en terme dentrées et de sorties, du système sous test (SUT). Le modèle contient une abstraction des comportements et de la structure du système en test. loginUserName loginPasswd loginChallenge createPayment giveDetailsBeneficiary modifyPayment deletePayment sendChallengeNumber errorUserName errorPasswd errorChallenge errorUserBlocked errorPaymentCreation errorPaymentModification Modèle des Opérations Sorties des Opérations User does not exist! Utilisateur Lutilisateur accède un système bancaire sur le web pour effectuer des opérations sur ses comptes Résultats de Test Tests Modèle Critères de Sélection Pilote de Test SUT (implementation) Oracle + + Cette figure montre comment toutes les parties de notre approche collaborent. La boîte noire représente les fonctionnalités de génération de tests et de traitement des modèles. tests(L) :- pattern(_,and(ev(loginUserName(Name),_), ev(loginPasswd(Passwd),_)),L), uniform(L),valid(L,true). Système E-banking Oracle Programme Oui (test réussi) Non (test échoué) Ne sais pas D. Buchs, A. Chen, D. Hurzeler, L. Lucio, L.Pedro, M.Risoldi Critères de test Ensemble des tests générés [with(reset, []), with(loginNomUtilisateur(lucio), []), with(loginMotPasse( e7ca8), [erreurUtilisateurMotPasse]), with(loginMotPasse( e7ca8), [erreurUtilisateurMotPasse]), with(loginMotPasse(410646ea1d6e65), [envoyerChallengeCase(_G653)])] Tests dans le langage du pilote de test Tests Browser(":: Test Generation").Page(":: Test Generation"). WebEdit("userlogin"). Set "lucio"Browser(":: Test Generation").Page(":: Test Generation").WebButton("submit").ClickBrowser(":: Test Generation").Page(":: Test Generation_2").Check CheckPoint ("Password")Browser(":: Test Generation").Page(":: Test Generation_2").WebEdit("passwd").SetSecure " e7ca8 Browser(":: Test Generation").Page(":: TestGeneration_2"). WebButton("submit").ClickBrowser(":: Test Generation").Page(":: Test Generation_2").Check CheckPoint("Invalid Password")Browser(":: Test Generation").Page(":: Test Generation_2").WebEdit("passwd"). SetSecure " e7ca8"Browser(":: Test Generation").Page(":: …. Utilisateur 0.. * > eBanking userName : String Passwd : Passwd Name : String loginTentativeNumber : Int userState: bool eUser id : CardId expirationDate: Date ChallengeCard position : ChallengeId anserPosition: String ChallengeCardElement position 1 table HasSessionId $ Banque $