Um guia rápido sobre testes automatizados
Nome
Anderson Medeiros
linkedin.com/in/andersonsmedeiros/
Engenheiro de Software Sênior
Anderson Medeiros
Sou vegetariano, tenho 4 gatos e gosto de conversar assuntos aleatórios
Você conhece a Vinta?
A gente é uma empresa criada por pessoas desenvolvedoras que nasceu na comunidade Python.
Construímos excelência num ambiente seguro, colaborativo e saudável, sendo uma consultoria de produtos digitais para clientes internacionais.
+30
Pacotes open source mantidos por nós
100%
Remoto e Jornada Flexível
+10
Anos de Mercado Internacional
Gostasse? http://bit.ly/falacomavinta
+100
Artigos escritos em múltiplos assuntos
Você sabe o que é um teste de software?
De acordo com a Wikipédia
O teste do software é a investigação do software a fim de fornecer informações sobre sua qualidade em relação ao contexto em que ele deve operar, [...] isso inclui o processo de utilizar o produto para encontrar seus defeitos.
Exemplificando
01. Deve ser possível criar uma tarefa, que será anexada a uma lista
03. Deve ser possível remover uma tarefa previamente criada
02. Deve ser possível editar uma tarefa previamente criada
Para exemplificar, imagine que você recebeu a tarefa de testar a qualidade de um software gerenciador de tarefas que conta com os seguintes requisitos
Como testar a qualidade desse sistema?
1ª opção: testes manuais
Nesta opção, você poderia ler cada um dos requisitos mostrado anteriormente enquanto interage com o software, a fim de garantir a qualidade e mapear eventuais problemas.
03. São lentos e caros para executar, se comparado a testes feitos por um computador
01. São eficazes em capturar problemas inesperados
02. Não são tão previsíveis, já que dependem de um humano
2ª opção: testes automatizados
03. São rápidos, baratos, paralelizáveis e capazes de executar milhares de validações em minutos
Nesta opção, você poderia transferir cada uma das validações feitas anteriormente para um script, que será usado como entrada pelo computador.
02. Permitem executar as validações de forma previsível
01. Só testam o que está no script, ignorando nuances
E agora, qual o melhor?
Vale a pena investir tempo com testes?
Conceitos
Executor de testes
Caso de teste e suíte de testes
A pirâmide de testes
Testes de caixa branca e de caixa preta
Mocks e fixtures
Mas e em Python?
Unit Test
O Unit Test é uma opção pra caso você tenha testes relativamente simples e não quer adicionar uma dependência extra no seu projeto, pois ele é uma biblioteca built-in do Python.
03. Não tem features mais avançadas, como parametrização
01. Possui uma estrutura baseado em classes, se baseando na lib JUnit
02. Tem suporte para features como mocks e fixtures
Unit Test
Pytest
O Pytest é um dos principais executores de teste escritos em Python, sendo uma biblioteca poderosa e fácil de usar, além de permitir a organização dos testes em classes caso seja necessário.
03. Tem suporte para features mais avançadas como parametrização e uso de plugins
01. Possui sintaxe fácil de entender e idiomática com o Python
02. Tem suporte para features como mocks e fixtures
Pytest
Q1
Q2
Q3
Q4
Downloads mensais
Para ajudar a termos uma noção de uso, aqui está um gráfico comparando os downloads do Pytest no último mês com os de alguns frameworks web vastamente usados pela comunidade
�Fonte: pypistats.org
~20 M
~72 M
~97 M
~173 M
Ferramentas para testes E2E
Qual ferramenta eu devo usar?
Obrigado
linkedin.com/in/andersonsmedeiros/
GitHub da Vinta