Apresentação sobre o uso de testes metamórficos de software aplicados a problemas com alta complexidade ciclomática ou caixa opaca, como: APIs, contratos complexos, modelos de machine learning e deep learning. São mostrados exemplos do mundo real, ferramentas em python e a aplicação desse estilo de teste automatizado nesses casos de uso.
6. Complexidade Ciclomática (CC)
Complexidade ciclomática é uma métrica de software usada para indicar a
complexidade de um programa de computador. Desenvolvida por Thomas J.
McCabe em 1976, ela mede a quantidade de caminhos de execução
independentes a partir de um código fonte.
Wikipedia
7. Complexidade Ciclomática (CC)
Complexidade ciclomática é uma métrica de software usada para indicar a
complexidade de um programa de computador. Desenvolvida por Thomas J.
McCabe em 1976, ela mede a quantidade de caminhos de execução
independentes a partir de um código fonte.
Wikipedia
10. Exemplos de alta CC
● Funções com muita regra de negócio
● Input de dados por usuários
● Consumidores de dados
● Rotas HTTP
● Qualquer contrato complexo
● Opaque-box
● Modelos de Machine e Deep Learning
11. CC em opaque-box não dá
● Quando não sabemos o que tem chamamos de opaque-box
● Não temos como medir opaque-box
● Podemos considerar QUALQUER opaque-box complexa
● Para machine learning depende de explicabilidade
18. O que são?
O teste metamórfico é uma técnica de teste de software baseada em
propriedades, que pode ser uma abordagem eficaz para abordar o problema
do oráculo de teste e o problema de geração de caso de teste.
Wikipedia
19. O que são?
O teste metamórfico é uma técnica de teste de software baseada em
propriedades, que pode ser uma abordagem eficaz para abordar o problema
do oráculo de teste e o problema de geração de caso de teste.
Wikipedia
20. Geração de caso de teste
def my_func(x: int, y: int) -> int:
return x/y
21. Problema do oráculo
● Difícil saber todas as possibilidades
● Precisa encontrar tudo que pode dar problema
● É inviável testar todas as possibilidades
22. Relação metamórfica
Nair, Aravind & Meinke, Karl & Eldh, Sigrid. (2019). Leveraging Mutants for Automatic Prediction of
Metamorphic Relations using Machine Learning. 10.13140/RG.2.2.30163.94244.
23. Relação metamórfica (mais prático)
def my_func(x: int, y: int) -> int:
return x/y
● Quanto maior o X, maior o resultado da função.
● Quanto maior o Y, menor o resultado da função.