Structural code coverage criteria have been studied since the early seventies, and now they are well supported by commercial and open source tools, and are commonly embedded in several advanced industrial processes. Most industrial applications still refer to simple criteria, like statement and branch coverage, and consider more complex criteria, like modified condition decision coverage, only rarely and often driven by the requirements of certification agencies. The industrial value of structural criteria is limited by the difficulty of achieving high coverage, due to both the complexity of deriving test cases that execute specific uncovered elements and the presence of many infeasible elements in the code. In this paper, we propose a technique that both generates test cases that execute yet uncovered branches and identifies infeasible branches that can be eliminated from the computation of the branch coverage. In this way, we can increase branch coverage up to closely approximate full coverage, thus improving its industrial value. The algorithm combines symbolic analysis, abstraction refinement, and a novel technique named coarsening, to execute unexplored branches, identify infeasible ones, and mitigate the state space explosion problem. In the paper, we present the technique, and illustrate its effectiveness through a set of experimental results obtained with a prototype implementation.

Baluda, M., Braione, P., Denaro, G., Pezze', M. (2011). Enhancing Structural Software Coverage by Incrementally Computing Branch Executability. SOFTWARE QUALITY JOURNAL, 19(4), 725-751 [10.1007/s11219-011-9150-y].

Enhancing Structural Software Coverage by Incrementally Computing Branch Executability

BRAIONE, PIETRO;DENARO, GIOVANNI;PEZZE', MAURO
2011

Abstract

Structural code coverage criteria have been studied since the early seventies, and now they are well supported by commercial and open source tools, and are commonly embedded in several advanced industrial processes. Most industrial applications still refer to simple criteria, like statement and branch coverage, and consider more complex criteria, like modified condition decision coverage, only rarely and often driven by the requirements of certification agencies. The industrial value of structural criteria is limited by the difficulty of achieving high coverage, due to both the complexity of deriving test cases that execute specific uncovered elements and the presence of many infeasible elements in the code. In this paper, we propose a technique that both generates test cases that execute yet uncovered branches and identifies infeasible branches that can be eliminated from the computation of the branch coverage. In this way, we can increase branch coverage up to closely approximate full coverage, thus improving its industrial value. The algorithm combines symbolic analysis, abstraction refinement, and a novel technique named coarsening, to execute unexplored branches, identify infeasible ones, and mitigate the state space explosion problem. In the paper, we present the technique, and illustrate its effectiveness through a set of experimental results obtained with a prototype implementation.
Articolo in rivista - Articolo scientifico
structural testing; concolic execution; automatic test generation
English
2011
2011
19
4
725
751
open
Baluda, M., Braione, P., Denaro, G., Pezze', M. (2011). Enhancing Structural Software Coverage by Incrementally Computing Branch Executability. SOFTWARE QUALITY JOURNAL, 19(4), 725-751 [10.1007/s11219-011-9150-y].
File in questo prodotto:
File Dimensione Formato  
SQJO2011.pdf

accesso aperto

Dimensione 1.14 MB
Formato Adobe PDF
1.14 MB Adobe PDF Visualizza/Apri

I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10281/36136
Citazioni
  • Scopus 20
  • ???jsp.display-item.citation.isi??? 14
Social impact