SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
Testes metamórficos em
problemas complexos
Porque usuário é criativo...
Diogo Munaro Vieira
● 15 anos em Python (desde 2.6)
● Doutorado PUC-Rio
● Gerente de AI PicPay
● Professor Data Bootcamp
● Pai de Pet
● Amo praia
Problemas
complexos?
Problemas complexos?
NP-System?
Big-O?
Complex
Systems?
Radem
acher
Com
plexity?
Problemas complexos?
NP-System?
Big-O?
Complex
Systems?
Radem
acher
Com
plexity?
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
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
Complexidade Ciclomática (CC)
Complexidade Ciclomática (CC)
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
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
Radon: Python para CC
https://radon.readthedocs.io/en/latest/index.html
Como lidar com
TANTA
complexidade?
Testes
Automatizados
Importância dos testes
Tipos de testes
● Unit testing
● Integration Testing
● Regression Testing
● Security Testing
● Performance Testing
● Metamorphic Testing
● etc...
Testes
Metamórficos
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
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
Geração de caso de teste
def my_func(x: int, y: int) -> int:
return x/y
Problema do oráculo
● Difícil saber todas as possibilidades
● Precisa encontrar tudo que pode dar problema
● É inviável testar todas as possibilidades
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.
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.
Teste metamórfico
Onde vivem?
Podem ser usados em vários escopos de teste:
● funcional
● integração
● aplicação
● end-to-end
Do que se alimentam?
Uma vez que descobre uma falha, deve fixar o valor que
deu erro como regressão, lembrando desse valor para
outras modificações.
Exemplos de
Aplicação
API HTTP
Processamento de Texto
Speech to Text
Classificação de Imagem
Bibliotecas em
Python
Hypothesis (pra qualquer coisa)
https://hypothesis.readthedocs.io/en/latest/quickstart.html
Schemathesis (pra Open API e GraphQL)
https://schemathesis.readthedocs.io/en/stable/
Para Machine e Deep Learning
https://github.com/sherbold/atoml (mais ou menos pra sklean e spark)
Resto tudo muito mal feito...
OPORTUNIDADE!!
Perguntas?
/in/dmvieira

Mais conteúdo relacionado

Semelhante a Testes metamórficos em problemas complexos

Teste de Desempenho, muito além do JMeter
Teste de Desempenho, muito além do JMeterTeste de Desempenho, muito além do JMeter
Teste de Desempenho, muito além do JMeterJuliano Santos
 
Kyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de softwareKyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de softwareFábio Nogueira de Lucena
 
Eng.Software-Métricas
Eng.Software-MétricasEng.Software-Métricas
Eng.Software-Métricaselliando dias
 
Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de SoftwareIgor Takenami
 
Criando um ambiente real de distribuição de aplicativos usando TestFairy
Criando um ambiente real de distribuição de aplicativos usando TestFairyCriando um ambiente real de distribuição de aplicativos usando TestFairy
Criando um ambiente real de distribuição de aplicativos usando TestFairyRafael Pacheco
 
Análise Numérica Aplicada, ou "Mamãe, Excel dá Errado!"
Análise Numérica Aplicada, ou "Mamãe, Excel dá Errado!"Análise Numérica Aplicada, ou "Mamãe, Excel dá Errado!"
Análise Numérica Aplicada, ou "Mamãe, Excel dá Errado!"Alejandro Frery
 
Automatizando seus testes com robot framework
Automatizando seus testes com robot frameworkAutomatizando seus testes com robot framework
Automatizando seus testes com robot frameworkClaudenir Freitas
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
 
Criando um ambiente real de distribuição de aplicativos usando TestFairy: Mai...
Criando um ambiente real de distribuição de aplicativos usando TestFairy: Mai...Criando um ambiente real de distribuição de aplicativos usando TestFairy: Mai...
Criando um ambiente real de distribuição de aplicativos usando TestFairy: Mai...minastestingconference
 
Meus 50 Cents sobre Teste de Software
Meus 50 Cents sobre Teste de SoftwareMeus 50 Cents sobre Teste de Software
Meus 50 Cents sobre Teste de SoftwareVanilton Pinheiro
 
Aspectos profissionais 3pontos
Aspectos profissionais 3pontosAspectos profissionais 3pontos
Aspectos profissionais 3pontosMiguel Alho
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003Edgar Silva
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHPCezar Souza
 
Além da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e ErlangAlém da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e ErlangElaine Naomi
 
Pontos por função
Pontos por funçãoPontos por função
Pontos por funçãolipe_assis
 

Semelhante a Testes metamórficos em problemas complexos (20)

Teste de Desempenho, muito além do JMeter
Teste de Desempenho, muito além do JMeterTeste de Desempenho, muito além do JMeter
Teste de Desempenho, muito além do JMeter
 
Kyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de softwareKyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de software
 
Eng.Software-Métricas
Eng.Software-MétricasEng.Software-Métricas
Eng.Software-Métricas
 
Qualidade e Testes de Software
Qualidade e Testes de SoftwareQualidade e Testes de Software
Qualidade e Testes de Software
 
Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de Software
 
Web Data Mining com R
Web Data Mining com RWeb Data Mining com R
Web Data Mining com R
 
Como desenvolver-software
Como desenvolver-softwareComo desenvolver-software
Como desenvolver-software
 
Criando um ambiente real de distribuição de aplicativos usando TestFairy
Criando um ambiente real de distribuição de aplicativos usando TestFairyCriando um ambiente real de distribuição de aplicativos usando TestFairy
Criando um ambiente real de distribuição de aplicativos usando TestFairy
 
Análise Numérica Aplicada, ou "Mamãe, Excel dá Errado!"
Análise Numérica Aplicada, ou "Mamãe, Excel dá Errado!"Análise Numérica Aplicada, ou "Mamãe, Excel dá Errado!"
Análise Numérica Aplicada, ou "Mamãe, Excel dá Errado!"
 
Automatizando seus testes com robot framework
Automatizando seus testes com robot frameworkAutomatizando seus testes com robot framework
Automatizando seus testes com robot framework
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
 
Criando um ambiente real de distribuição de aplicativos usando TestFairy: Mai...
Criando um ambiente real de distribuição de aplicativos usando TestFairy: Mai...Criando um ambiente real de distribuição de aplicativos usando TestFairy: Mai...
Criando um ambiente real de distribuição de aplicativos usando TestFairy: Mai...
 
Meus 50 Cents sobre Teste de Software
Meus 50 Cents sobre Teste de SoftwareMeus 50 Cents sobre Teste de Software
Meus 50 Cents sobre Teste de Software
 
Aspectos profissionais 3pontos
Aspectos profissionais 3pontosAspectos profissionais 3pontos
Aspectos profissionais 3pontos
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
C# 8 e ML.NET
C# 8 e ML.NETC# 8 e ML.NET
C# 8 e ML.NET
 
Além da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e ErlangAlém da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e Erlang
 
Pontos por função
Pontos por funçãoPontos por função
Pontos por função
 

Mais de Diogo Munaro Vieira

Apache Spark Overview and Applications
Apache Spark Overview and ApplicationsApache Spark Overview and Applications
Apache Spark Overview and ApplicationsDiogo Munaro Vieira
 
Paralelismo em machine learning e suas aplicações
Paralelismo em machine learning e suas aplicaçõesParalelismo em machine learning e suas aplicações
Paralelismo em machine learning e suas aplicaçõesDiogo Munaro Vieira
 
MLOps: Transformando seus modelos de ml em produtos
MLOps: Transformando seus modelos de ml em produtosMLOps: Transformando seus modelos de ml em produtos
MLOps: Transformando seus modelos de ml em produtosDiogo Munaro Vieira
 
Desenvolvedor de software para Big Data
Desenvolvedor de software para Big DataDesenvolvedor de software para Big Data
Desenvolvedor de software para Big DataDiogo Munaro Vieira
 
Machine Learning integrado ao produto de software: No more XGH
Machine Learning integrado ao produto de software: No more XGHMachine Learning integrado ao produto de software: No more XGH
Machine Learning integrado ao produto de software: No more XGHDiogo Munaro Vieira
 
Conhecendo o desejo de mais de 10 milhões de usuários por dia
Conhecendo o desejo de mais de 10 milhões de usuários por diaConhecendo o desejo de mais de 10 milhões de usuários por dia
Conhecendo o desejo de mais de 10 milhões de usuários por diaDiogo Munaro Vieira
 
Tutorial JupyterHub, Jupyter e PySpark (PythonSudeste)
Tutorial JupyterHub, Jupyter e PySpark (PythonSudeste)Tutorial JupyterHub, Jupyter e PySpark (PythonSudeste)
Tutorial JupyterHub, Jupyter e PySpark (PythonSudeste)Diogo Munaro Vieira
 

Mais de Diogo Munaro Vieira (9)

Apache Spark Overview and Applications
Apache Spark Overview and ApplicationsApache Spark Overview and Applications
Apache Spark Overview and Applications
 
Paralelismo em machine learning e suas aplicações
Paralelismo em machine learning e suas aplicaçõesParalelismo em machine learning e suas aplicações
Paralelismo em machine learning e suas aplicações
 
MLOps: Transformando seus modelos de ml em produtos
MLOps: Transformando seus modelos de ml em produtosMLOps: Transformando seus modelos de ml em produtos
MLOps: Transformando seus modelos de ml em produtos
 
Desenvolvedor de software para Big Data
Desenvolvedor de software para Big DataDesenvolvedor de software para Big Data
Desenvolvedor de software para Big Data
 
Machine learning em Produção
Machine learning em ProduçãoMachine learning em Produção
Machine learning em Produção
 
Machine Learning integrado ao produto de software: No more XGH
Machine Learning integrado ao produto de software: No more XGHMachine Learning integrado ao produto de software: No more XGH
Machine Learning integrado ao produto de software: No more XGH
 
Big Data na Globo.com
Big Data na Globo.comBig Data na Globo.com
Big Data na Globo.com
 
Conhecendo o desejo de mais de 10 milhões de usuários por dia
Conhecendo o desejo de mais de 10 milhões de usuários por diaConhecendo o desejo de mais de 10 milhões de usuários por dia
Conhecendo o desejo de mais de 10 milhões de usuários por dia
 
Tutorial JupyterHub, Jupyter e PySpark (PythonSudeste)
Tutorial JupyterHub, Jupyter e PySpark (PythonSudeste)Tutorial JupyterHub, Jupyter e PySpark (PythonSudeste)
Tutorial JupyterHub, Jupyter e PySpark (PythonSudeste)
 

Testes metamórficos em problemas complexos