Tests à la QuickCheck de systèmes hybrides

par Ismail Lahkim Bennani

Projet de thèse en Informatique

Sous la direction de Marc Pouzet, Timothy Bourke et de Goran Frehse.

Thèses en préparation à Paris Sciences et Lettres , dans le cadre de Sciences Mathématiques de Paris Centre , en partenariat avec DIENS - Département d'informatique de l'École normale supérieure (laboratoire) et de Ecole normale supérieure (établissement de préparation de la thèse) depuis le 01-09-2018 .


  • Résumé

    Le but de cette thèse est d'établir une approche de test systématique basé sur des propriétés données par l'utilisateur en s'inspirant des techniques à la Quickcheck. L'objectif est d'offrir un moyen de test rapide, permettant au programmeur de contrôler la génération des tests et capable de traiter des programmes de grande taille. La génération de test est un défi majeur pour les systèmes cyber-physiques. Parce que l'espace d'entrée est dense, à la fois en espace et en temps, il n'est pas possible d'énumérer toutes les entrées possibles, même pour un horizon de temps très limité. L'état de l'art est de combiner un échantillonnage aléatoire avec des notions de couverture, de prendre une interprétation quantitative de la satisfaction de formules de logique temporelles utilisées pour le test, et de soumettre le système à des entrées de complexité croissante. Plusieurs outils de test de systèmes hybrides s'appliquant à des modèles Simulink existent, e.g. Taliro, Breach, SimCoTest. A cause du problème de l'explosion du nombre d'états, ces approches restent cependant limitées dans leur applicabilité à des problèmes de grande taille. Par ailleurs, les problèmes de modularité des outils industriels – le fait que le comportement d'un bloc puisse dépendre du pas majeur du solveur et être profondément modifié lorsqu'il est composé avec un autre – signifie qu'il est difficile de tester les systèmes par morceaux et limite donc fortement le passage à l'échelle. En contraste avec les approches existantes, l'idée proposée dans cette thèse est d'identifier rapidement des comportements néfastes, tels que des singularités de la dynamique (comparable à la division par zéro dans du logiciel), des conditions de course entre évènements, la sensibilité aux erreurs d'échantillonnage, les deadlocks dans le temps ou dans l'état et des points Zénon (commutations infinies). La génération de test sera assistée par des analyses structurelles, statiques, et ensemblistes afin de limiter l'espace de recherche. La qualité et l'utilisation du test dépend de la capacité à effectuer de bons reports et diagnostics, sur le modèle lui-même, en cas d'erreur. Quelle explication peut-on donner sur le modèle lorsqu'une propriété temporelle n'est pas vérifiée ? Comment simplifier (et raccourcir) la taille d'un contre-exemple, dans l'esprit de ce qui a été développé pour QuickCheck ? Peut-on déterminer la partie d'un modèle qui ne participe pas à la “falsification” de la propriété ? Est-il possible de décrire des propriétés temporelles quantitatives à la manière des observateurs synchrones afin de pouvoir les insérer n'importe où (et donc pas seulement au niveau global) et les tester en ligne. Le test peut également servir à inférer des valeurs de paramètres. On souhaite pouvoir écrire des systèmes où certains paramètres ne sont que partiellement connus (e.g. sous forme d'un intervalle x ∈ [0…10]) puis utiliser le test et la donnée de traces issues de mesures pour inférer des valeurs de ces paramètres. L'interprétation quantitative des formules de logique temporelle STL permet d'envisager des techniques de tirage de type Monte Carlo ou d'apprentissage ou de techniques issues du contrôle pour calculer une stratégie pour s'approcher d'états violant la propriété à tester. Enfin, puisqu'il est possible de programmer un modèle à temps continu en Zélus ainsi que sa version échantillonnée (synchrone), on étudiera des méthodes permettant de tester la version échantillonnée vis-à-vis de la version à temps continu pour en mesurer la robustesse.

  • Titre traduit

    A la QuickCheck testing of hybrid systems


  • Résumé

    The aim of this thesis is to establish a systematic test approach based on user-given properties inspired by Quickcheck techniques. The goal is to provide a quick test, allowing the programmer to control the generation of tests and able to process large programs. Test generation is a major challenge for cyber-physical systems. Because the space of entry is dense, both in space and time, it is not possible to enumerate all possible entries, even for a very limited time horizon. The state of the art is to combine random sampling with notions of coverage, to take a quantitative interpretation of the satisfaction of temporal logic formulas used for the test, and to subject the system to inputs of increasing complexity. Several hybrid system test tools that apply to Simulink models exist, e.g. Taliro, Breach, SimCoTest. Because of the problem of the explosion of the number of states, these approaches remain limited in their applicability to large problems. Moreover, the modularity problems of industrial tools - the fact that the behavior of a block may depend on the major step of the solver and be profoundly modified when it is composed with another - means that it is difficult to test the systems by pieces and therefore strongly limits the scaling. In contrast to existing approaches, the idea proposed in this thesis is to quickly identify harmful behaviors, such as singularities of the dynamics (comparable to the division by zero in the software), race conditions between events, the sensitivity to sampling errors, deadlocks in time or in state and Zeno points (infinite commutations). The test generation will be assisted by structural, static, and set-up analyzes to limit the search space. The quality and use of the test depends on the ability to perform good reports and diagnoses, on the model itself, in case of error. What explanation can be given about the model when a temporal property is not verified? How to simplify (and shorten) the size of a counterexample, in the spirit of what was developed for QuickCheck? Can we determine the part of a model that does not participate in the "falsification" of the property? Is it possible to describe quantitative temporal properties in the manner of synchronous observers so that they can be inserted anywhere (and therefore not only at the global level) and tested online. The test can also be used to infer parameter values. One wishes to be able to write systems where some parameters are only partially known (e.g. in the form of an interval x ∈ [0 ... 10]) then to use the test and the data of traces resulting from measurements to infer values ​​of these parameters. The quantitative interpretation of the STL temporal logic formulas makes it possible to consider Monte Carlo techniques or learning techniques to compute a strategy to approach states violating the property to be tested. Finally, since it is possible to program a continuous time model in Zélus as well as its sampled (synchronous) version, methods will be studied to test the sampled version with respect to the continuous time version to measure it. robustness.