Une couverture combinant tests et preuves pour la vérification formelle
Actuellement, le développement d’un logiciel de taille industriel repose généralement surdes tests ou des preuves unitaires pour garantir rigoureusement ses exigences. En outre, il adéjà été montré que l’utilisation combinée du test et de la preuve unitaires est plus efficaceque l’utilisation d’une...
Main Author: | |
---|---|
Other Authors: | |
Language: | fr |
Published: |
2019
|
Subjects: | |
Online Access: | http://www.theses.fr/2019ESAE0023/document |
id |
ndltd-theses.fr-2019ESAE0023 |
---|---|
record_format |
oai_dc |
spelling |
ndltd-theses.fr-2019ESAE00232020-01-15T03:22:46Z Une couverture combinant tests et preuves pour la vérification formelle A coverage combining tests and proofs for formal verification Vérification de programmes Test unitaire Preuve de programmes Combinaison d'analyse Couverture de code Program verification Unit testing Program proving Analysis combination Code coverage Actuellement, le développement d’un logiciel de taille industriel repose généralement surdes tests ou des preuves unitaires pour garantir rigoureusement ses exigences. En outre, il adéjà été montré que l’utilisation combinée du test et de la preuve unitaires est plus efficaceque l’utilisation d’une seule de ces deux techniques. Néanmoins, un ingénieur en vérificationhésite encore à utiliser ces deux techniques conjointement, faute d’une notion de couverturecommune au test et à la preuve. Définir une telle notion est l’objet de cette thèse.En effet, nous introduisons une nouvelle couverture, appelée « couverture label-mutant ».Elle permet de représenter les critères de couverture structurelle habituels du test, comme lacouverture des instructions, la couverture des branches ou la couverture MC/DC et de décidersi le critère choisi est satisfait en utilisant une technique de vérification formelle, qu’elle soitpar test, par preuve ou par une combinaison des deux. Elle permet également de représenterles critères de couverture fonctionnelle. Nous introduisons aussi dans cette thèse une méthodereposant sur des outils automatiques de test et de preuve pour réduire l’effort de vérificationtout en satisfaisant le critère de couverture choisi. Cette méthode est mise en oeuvre au seinde la plateforme d’analyse de code C (Frama-C), fournissant ainsi à un ingénieur un moyenopérationnel pour contrôler et réaliser la vérification qu’il souhaite. Currently, industrial-strength software development usually relies on unit testing or unitproof in order to ensure high-level requirements. Combining these techniques has already beendemonstrated more effective than using one of them alone. The verification engineer is yetnot been to combine these techniques because of the lack of a common notion of coverage fortesting and proving. Defining such a notion is the main objective of this thesis.We introduce here a new notion of coverage, named « label-mutant coverage ». It subsumesmost existing structural coverage criteria for unit testing, including statement coverage,branch coverage or MC/DC coverage, while allowing to decide whether the chosen criterionis satisfied by relying on a formal verification technique, either testing or proving or both.It also subsumes functional coverage criteria. Furthermore, we also introduce a method thatmakes use of automatic tools for testing or proving in order to reduce the verification costwhile satisfying the chosen coverage criterion. This method is implemented inside Frama-C, aframework for verification of C code (Frama-C). This way, it offers to the engineer a way tocontrol and to perform the expected verifications. Electronic Thesis or Dissertation Text fr http://www.theses.fr/2019ESAE0023/document Le, Viet Hoang 2019-07-11 Toulouse, ISAE Wiels, Virginie Signoles, Julien |
collection |
NDLTD |
language |
fr |
sources |
NDLTD |
topic |
Vérification de programmes Test unitaire Preuve de programmes Combinaison d'analyse Couverture de code Program verification Unit testing Program proving Analysis combination Code coverage |
spellingShingle |
Vérification de programmes Test unitaire Preuve de programmes Combinaison d'analyse Couverture de code Program verification Unit testing Program proving Analysis combination Code coverage Le, Viet Hoang Une couverture combinant tests et preuves pour la vérification formelle |
description |
Actuellement, le développement d’un logiciel de taille industriel repose généralement surdes tests ou des preuves unitaires pour garantir rigoureusement ses exigences. En outre, il adéjà été montré que l’utilisation combinée du test et de la preuve unitaires est plus efficaceque l’utilisation d’une seule de ces deux techniques. Néanmoins, un ingénieur en vérificationhésite encore à utiliser ces deux techniques conjointement, faute d’une notion de couverturecommune au test et à la preuve. Définir une telle notion est l’objet de cette thèse.En effet, nous introduisons une nouvelle couverture, appelée « couverture label-mutant ».Elle permet de représenter les critères de couverture structurelle habituels du test, comme lacouverture des instructions, la couverture des branches ou la couverture MC/DC et de décidersi le critère choisi est satisfait en utilisant une technique de vérification formelle, qu’elle soitpar test, par preuve ou par une combinaison des deux. Elle permet également de représenterles critères de couverture fonctionnelle. Nous introduisons aussi dans cette thèse une méthodereposant sur des outils automatiques de test et de preuve pour réduire l’effort de vérificationtout en satisfaisant le critère de couverture choisi. Cette méthode est mise en oeuvre au seinde la plateforme d’analyse de code C (Frama-C), fournissant ainsi à un ingénieur un moyenopérationnel pour contrôler et réaliser la vérification qu’il souhaite. === Currently, industrial-strength software development usually relies on unit testing or unitproof in order to ensure high-level requirements. Combining these techniques has already beendemonstrated more effective than using one of them alone. The verification engineer is yetnot been to combine these techniques because of the lack of a common notion of coverage fortesting and proving. Defining such a notion is the main objective of this thesis.We introduce here a new notion of coverage, named « label-mutant coverage ». It subsumesmost existing structural coverage criteria for unit testing, including statement coverage,branch coverage or MC/DC coverage, while allowing to decide whether the chosen criterionis satisfied by relying on a formal verification technique, either testing or proving or both.It also subsumes functional coverage criteria. Furthermore, we also introduce a method thatmakes use of automatic tools for testing or proving in order to reduce the verification costwhile satisfying the chosen coverage criterion. This method is implemented inside Frama-C, aframework for verification of C code (Frama-C). This way, it offers to the engineer a way tocontrol and to perform the expected verifications. |
author2 |
Toulouse, ISAE |
author_facet |
Toulouse, ISAE Le, Viet Hoang |
author |
Le, Viet Hoang |
author_sort |
Le, Viet Hoang |
title |
Une couverture combinant tests et preuves pour la vérification formelle |
title_short |
Une couverture combinant tests et preuves pour la vérification formelle |
title_full |
Une couverture combinant tests et preuves pour la vérification formelle |
title_fullStr |
Une couverture combinant tests et preuves pour la vérification formelle |
title_full_unstemmed |
Une couverture combinant tests et preuves pour la vérification formelle |
title_sort |
une couverture combinant tests et preuves pour la vérification formelle |
publishDate |
2019 |
url |
http://www.theses.fr/2019ESAE0023/document |
work_keys_str_mv |
AT leviethoang unecouverturecombinanttestsetpreuvespourlaverificationformelle AT leviethoang acoveragecombiningtestsandproofsforformalverification |
_version_ |
1719308721754996736 |