Version imprimable |
Investigate the matrix : leveraging variability to specialize software and test suites (Examinons la matrice : s'appuyer sur la variabilité pour spécialiser les systèmes et les suites de tests) | ||
Temple, Paul - (2018-12-07) / Universite de Rennes 1 Investigate the matrix : leveraging variability to specialize software and test suites Langue : Anglais Directeur de thèse: Jézéquel, Jean-Marc Laboratoire : IRISA Ecole Doctorale : MATHSTIC Thématique : Informatique | ||
Mots-clés : Logiciels, Tests, Matrice, Logiciels -- Développement, Matrices Résumé : Aujourd'hui, les logiciels se doivent d'être efficaces, rapide à exécuter, etc. Ils peuvent être configurés dans le but de répondre à des besoins spécifiques donnés par l'utilisateur. De fait, chaque configuration donne lieu à un système unique, spécialisé pour des besoins précis. Le nombre de configurations possible devient tellement grand qu'il est impossible de générer tous les systèmes associés résultant en une impossibilité à évaluer leurs performances dans leur globalité. En plus de cela, différentes exécutions des systèmes sont souvent nécessaire, en utilisant différents cas de tests qui représentent différents contextes, pour évaluer correctement ces performances. Il y a donc un enjeu en terme d'énergie et de temps à pouvoir cibler correctement les configurations intéressantes pour un utilisateur ainsi que les cas de tests pertinents pour évaluer les performances d'un système. A partir de cette première analyse, deux dimensions émergent: la sélection de configurations de systèmes qui permettent par la suite de générer des systèmes respectant les besoins utilisateurs et, d'autre part, la sélection de cas de tests qui permettent d'observer les performances des systèmes dans différents contextes. Nous proposons dans cette thèse de représenter ces deux dimensions comme une matrice (de performance) dans laquelle : une dimension représente les systèmes sélectionnés (avec leur configuration) tandis que l'autre représente l'ensemble des cas de tests à exécuter sur chaque système. Chaque cellule de la matrice est alors le résultat de l'exécution d'un programme sur un cas de test. Les contributions principales de cette thèse sont : premièrement, l'utilisation de techniques d'apprentissage automatique pour spécialiser une ligne de produit logiciels visant à réduire l'espace de configuration pour sélectionner plus facilement une configuration qui satisfasse les besoins utilisateurs. Les utilisateurs doivent donc être capable d'exprimer leurs besoins de telle sorte que l'on se place dans un problème de classification binaire (i.e., permettant de dissocier les configurations qui ont la capacité à respecter ces besoins et les autres configurations qui n'ont pas l'air de pouvoir). Après cela, une technique d'apprentissage automatique est utilisé pour créer un modèle mathématique séparant les deux classes permettant par la suite de spécialiser la ligne de produits logiciel et de proposer des configurations partielles réduisant l'espace de configuration. Au final, ce travail permet de réduire la première dimension de la matrice qui traite des systèmes. Deuxièmement, nous proposons une nouvelle méthode permettant d'évaluer la capacité d'une suite de tests à montrer des différences de performances significatives exécuter par différents programmes qui présentent la même fonctionnalité. Cette méthode peut être utilisées dans différents cas, par exemple pour savoir si un nouveau cas de tests doit être ajouté ou non à une suite de tests existantes or bien pour réduire une suite de tests existante. Cette méthode vise à réduire la seconde dimension de la matrice. Résumé (anglais) : Nowadays, software have to be efficient, fast to execute, etc. They can be configured to adapt to specific needs. Each configuration leads to a different system and usually it is hard to generate them all. Thus, the exhaustive evaluation of their performance is impossible. Furthermore, several executions of systems, under different conditions, are needed to properly evaluate performances. Two dimensions emerge from this description of performance testing: the selection of system configurations allowing to generate associated systems that meet expressed needs and the selection of test cases allowing to observe performances of systems under different conditions. We propose to represent those two dimensions as a (performance) matrix: one dimension represents selected systems that can be observed while the other dimension represents the set of test cases that will be executed on each of these systems. Each cell is the execution of a program variant regarding a test. The contributions of this thesis are as follows : First, we leverage Machine Learning techniques in order to specialize a Software Product Line (in this case a video generator) helping in selecting a configuration that is likely to meet requirements. End users must be able to express their requirements such that it results in a binary decision problem (i.e., configurations that are acceptable and those that are not). Machine Learning techniques are then used to retrieve partial configurations that specialize a Software Product Line to guide end users and reduce the configuration space. In the end, this work aims at diminishing the first dimension of the matrix that deals with systems and programs. Second, we propose a new method assessing the ability of test suites to reveal significant performance differences of a set of configurations tackling the same task. This method can be used to assess whether a new test case is worth adding to a test suite or to select an optimal test set with respect to a property of interest. In the end, it might help structuring the execution of tests. For instance, it can create an order of execution resulting in using less test cases that are presented in the second dimension of the matrix. We evaluated our approach on several systems from different domains such as OpenCV or Haxe. Identifiant : rennes1-ori-wf-1-11785 |
Exporter au format XML |