Geração de casos de teste usando Bounded Model Checking

Bibliographic Details
Main Author: Menezes, Rafael Sá
Publication Date: 2021
Other Authors: http://lattes.cnpq.br/9276676299919657, https://orcid.org/0000-0002-6102-4343
Format: Master thesis
Language: por
Source: Biblioteca Digital de Teses e Dissertações da UFAM
Download full: https://tede.ufam.edu.br/handle/tede/8447
Summary: A geração automática de casos de teste consiste na geração de entradas para um algoritmo que sejam capazes de explorar todos os caminhos de um programa, maximizando a cobertura. Comumente, técnicas como fuzzing são utilizadas para isso por sua performance alta e de custo baixo. Entretanto, técnicas formais, como execução simbólica, vêm ganhando espaço nesse domínio, entre elas, a Bounded Model Checking (BMC). BMC é uma técnica de verificação que codifica uma propriedade em caminhos de um sistema de transição até um limite k, resultando em uma única fórmula lógica que, caso contenha uma violação, irá gerar uma prova. Essa prova - embora reduzida - contém informações que podem ser utilizadas como base para a geração de um caso de teste. A dificuldade de usar BMC em casos de teste está na complexidade de tempo/espaço da técnica e nas simplificações feitas para tentar contornar isso (simplificações, estratégias). Incremental BMC é uma estratégia que, de forma incremental, aumenta esse limite k até que uma violação seja encontrada ou que o sistema seja completamente verificado. Entretanto, cada caminho do sistema é reverificado a cada incremento, o que adiciona tempo e consumo de memória para resolver a instância atual. Para resolver esses problemas, este trabalho propõe duas contribuições: (1) algoritmo de geração de casos de teste a partir de provas e (2) um sistema de cache que utiliza soluções de instâncias menores através de (A) uso direto das instâncias anteriores; e (B) uso indireto através de fórmulas de outros sistemas. Essas contribuições foram implementadas no Efficient SMT-based Bounded Model Checker (ESBMC), sendo testadas em situações de Integração Contínua (CI) e sobre benchmarks públicos de programas em C, obtendo a primeira colocação na competição TestComp’21 na categoria reach-error e reduzindo o tempo do CI.
id UFAM_f79c25e683b7cec67bd7be9e75543f27
oai_identifier_str oai:https://tede.ufam.edu.br/handle/:tede/8447
network_acronym_str UFAM
network_name_str Biblioteca Digital de Teses e Dissertações da UFAM
repository_id_str 6592
spelling Geração de casos de teste usando Bounded Model CheckingFuzzingSistema de transiçãoAgoritmo de slicingOperações bit a bitSistema de armazenamentoCIÊNCIAS EXATAS E DA TERRABounded model checkingCachingSoftwareVerificationSMT solvingTestcase generationA geração automática de casos de teste consiste na geração de entradas para um algoritmo que sejam capazes de explorar todos os caminhos de um programa, maximizando a cobertura. Comumente, técnicas como fuzzing são utilizadas para isso por sua performance alta e de custo baixo. Entretanto, técnicas formais, como execução simbólica, vêm ganhando espaço nesse domínio, entre elas, a Bounded Model Checking (BMC). BMC é uma técnica de verificação que codifica uma propriedade em caminhos de um sistema de transição até um limite k, resultando em uma única fórmula lógica que, caso contenha uma violação, irá gerar uma prova. Essa prova - embora reduzida - contém informações que podem ser utilizadas como base para a geração de um caso de teste. A dificuldade de usar BMC em casos de teste está na complexidade de tempo/espaço da técnica e nas simplificações feitas para tentar contornar isso (simplificações, estratégias). Incremental BMC é uma estratégia que, de forma incremental, aumenta esse limite k até que uma violação seja encontrada ou que o sistema seja completamente verificado. Entretanto, cada caminho do sistema é reverificado a cada incremento, o que adiciona tempo e consumo de memória para resolver a instância atual. Para resolver esses problemas, este trabalho propõe duas contribuições: (1) algoritmo de geração de casos de teste a partir de provas e (2) um sistema de cache que utiliza soluções de instâncias menores através de (A) uso direto das instâncias anteriores; e (B) uso indireto através de fórmulas de outros sistemas. Essas contribuições foram implementadas no Efficient SMT-based Bounded Model Checker (ESBMC), sendo testadas em situações de Integração Contínua (CI) e sobre benchmarks públicos de programas em C, obtendo a primeira colocação na competição TestComp’21 na categoria reach-error e reduzindo o tempo do CI.Testcase generation consists in generating inputs for an algorithm that are able to explore all paths of a program, maximizing its coverage. Usually, fuzzing techniques are used because of its great performace and low cost. However, formal techniques such as Symbolic Execution are gaining notority in this domain, one of those is Bounded Model Checking (BMC). BMC is a verification technique that encodes a property in paths of transition system up to a bound k to one single logic formula such that if the system contains a flaw the formula will generate a proof. This proof contain information for the testcase generation. The difficult of using BMC for testcase is at the time/space complexity and at the optimizations trying to workaround this issue. Incremental BMC is a strategy that increases the k limit until the violation is found or the system is completely verified. The issue is that at each increment every path is verified again, which add time and memory consuption to solve the current instance. To solve those issue this work proposes two main contributions: (1) algorithm for testcase generation using proofs; and (2) a caching system that uses small instances by: (A) direct use; and (B) indirect use of other systems. Those contributions were implemented into the Efficient SMT-based Bounded Model Checker (ESBMC), being tested over Continuos Integration and over public benchmarks of C programs, obtaining the first place at TestComp’21 in the Cover-error category and reducing the time of the CI.CNPq - Conselho Nacional de Desenvolvimento Científico e TecnológicoUniversidade Federal do AmazonasInstituto de ComputaçãoBrasilUFAMPrograma de Pós-graduação em InformáticaCordeiro, Lucas Carvalhohttp://lattes.cnpq.br/5005832876603012Barreto, Raimundo da Silvahttp://lattes.cnpq.br/1132672107627968Lima Filho, Eddie Batista dehttp://lattes.cnpq.br/7827981023232761Menezes, Rafael Sáhttp://lattes.cnpq.br/9276676299919657https://orcid.org/0000-0002-6102-43432021-09-16T15:03:38Z2021-06-08info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfMENEZES, Rafael Sá. Geração de casos de teste usando Bounded Model Checking. 2021. 54 f. Dissertação (Mestrado em Informática) - Universidade Federal do Amazonas, Manaus, 2021.https://tede.ufam.edu.br/handle/tede/8447porhttp://creativecommons.org/licenses/by/4.0/info:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da UFAMinstname:Universidade Federal do Amazonas (UFAM)instacron:UFAM2021-09-17T05:03:28Zoai:https://tede.ufam.edu.br/handle/:tede/8447Biblioteca Digital de Teses e Dissertaçõeshttp://200.129.163.131:8080/PUBhttp://200.129.163.131:8080/oai/requestddbc@ufam.edu.br||ddbc@ufam.edu.bropendoar:65922025-03-27T18:31:37.436704Biblioteca Digital de Teses e Dissertações da UFAM - Universidade Federal do Amazonas (UFAM)false
dc.title.none.fl_str_mv Geração de casos de teste usando Bounded Model Checking
title Geração de casos de teste usando Bounded Model Checking
spellingShingle Geração de casos de teste usando Bounded Model Checking
Menezes, Rafael Sá
Fuzzing
Sistema de transição
Agoritmo de slicing
Operações bit a bit
Sistema de armazenamento
CIÊNCIAS EXATAS E DA TERRA
Bounded model checking
Caching
Software
Verification
SMT solving
Testcase generation
title_short Geração de casos de teste usando Bounded Model Checking
title_full Geração de casos de teste usando Bounded Model Checking
title_fullStr Geração de casos de teste usando Bounded Model Checking
title_full_unstemmed Geração de casos de teste usando Bounded Model Checking
title_sort Geração de casos de teste usando Bounded Model Checking
author Menezes, Rafael Sá
author_facet Menezes, Rafael Sá
http://lattes.cnpq.br/9276676299919657
https://orcid.org/0000-0002-6102-4343
author_role author
author2 http://lattes.cnpq.br/9276676299919657
https://orcid.org/0000-0002-6102-4343
author2_role author
author
dc.contributor.none.fl_str_mv Cordeiro, Lucas Carvalho
http://lattes.cnpq.br/5005832876603012
Barreto, Raimundo da Silva
http://lattes.cnpq.br/1132672107627968
Lima Filho, Eddie Batista de
http://lattes.cnpq.br/7827981023232761
dc.contributor.author.fl_str_mv Menezes, Rafael Sá
http://lattes.cnpq.br/9276676299919657
https://orcid.org/0000-0002-6102-4343
dc.subject.por.fl_str_mv Fuzzing
Sistema de transição
Agoritmo de slicing
Operações bit a bit
Sistema de armazenamento
CIÊNCIAS EXATAS E DA TERRA
Bounded model checking
Caching
Software
Verification
SMT solving
Testcase generation
topic Fuzzing
Sistema de transição
Agoritmo de slicing
Operações bit a bit
Sistema de armazenamento
CIÊNCIAS EXATAS E DA TERRA
Bounded model checking
Caching
Software
Verification
SMT solving
Testcase generation
description A geração automática de casos de teste consiste na geração de entradas para um algoritmo que sejam capazes de explorar todos os caminhos de um programa, maximizando a cobertura. Comumente, técnicas como fuzzing são utilizadas para isso por sua performance alta e de custo baixo. Entretanto, técnicas formais, como execução simbólica, vêm ganhando espaço nesse domínio, entre elas, a Bounded Model Checking (BMC). BMC é uma técnica de verificação que codifica uma propriedade em caminhos de um sistema de transição até um limite k, resultando em uma única fórmula lógica que, caso contenha uma violação, irá gerar uma prova. Essa prova - embora reduzida - contém informações que podem ser utilizadas como base para a geração de um caso de teste. A dificuldade de usar BMC em casos de teste está na complexidade de tempo/espaço da técnica e nas simplificações feitas para tentar contornar isso (simplificações, estratégias). Incremental BMC é uma estratégia que, de forma incremental, aumenta esse limite k até que uma violação seja encontrada ou que o sistema seja completamente verificado. Entretanto, cada caminho do sistema é reverificado a cada incremento, o que adiciona tempo e consumo de memória para resolver a instância atual. Para resolver esses problemas, este trabalho propõe duas contribuições: (1) algoritmo de geração de casos de teste a partir de provas e (2) um sistema de cache que utiliza soluções de instâncias menores através de (A) uso direto das instâncias anteriores; e (B) uso indireto através de fórmulas de outros sistemas. Essas contribuições foram implementadas no Efficient SMT-based Bounded Model Checker (ESBMC), sendo testadas em situações de Integração Contínua (CI) e sobre benchmarks públicos de programas em C, obtendo a primeira colocação na competição TestComp’21 na categoria reach-error e reduzindo o tempo do CI.
publishDate 2021
dc.date.none.fl_str_mv 2021-09-16T15:03:38Z
2021-06-08
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv MENEZES, Rafael Sá. Geração de casos de teste usando Bounded Model Checking. 2021. 54 f. Dissertação (Mestrado em Informática) - Universidade Federal do Amazonas, Manaus, 2021.
https://tede.ufam.edu.br/handle/tede/8447
identifier_str_mv MENEZES, Rafael Sá. Geração de casos de teste usando Bounded Model Checking. 2021. 54 f. Dissertação (Mestrado em Informática) - Universidade Federal do Amazonas, Manaus, 2021.
url https://tede.ufam.edu.br/handle/tede/8447
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv http://creativecommons.org/licenses/by/4.0/
info:eu-repo/semantics/openAccess
rights_invalid_str_mv http://creativecommons.org/licenses/by/4.0/
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidade Federal do Amazonas
Instituto de Computação
Brasil
UFAM
Programa de Pós-graduação em Informática
publisher.none.fl_str_mv Universidade Federal do Amazonas
Instituto de Computação
Brasil
UFAM
Programa de Pós-graduação em Informática
dc.source.none.fl_str_mv reponame:Biblioteca Digital de Teses e Dissertações da UFAM
instname:Universidade Federal do Amazonas (UFAM)
instacron:UFAM
instname_str Universidade Federal do Amazonas (UFAM)
instacron_str UFAM
institution UFAM
reponame_str Biblioteca Digital de Teses e Dissertações da UFAM
collection Biblioteca Digital de Teses e Dissertações da UFAM
repository.name.fl_str_mv Biblioteca Digital de Teses e Dissertações da UFAM - Universidade Federal do Amazonas (UFAM)
repository.mail.fl_str_mv ddbc@ufam.edu.br||ddbc@ufam.edu.br
_version_ 1828497626639630336