1 of 26

Um guia rápido sobre testes automatizados

Nome

Anderson Medeiros

LinkedIn

linkedin.com/in/andersonsmedeiros/

2 of 26

Engenheiro de Software Sênior

Anderson Medeiros

Sou vegetariano, tenho 4 gatos e gosto de conversar assuntos aleatórios

3 of 26

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

+100

Artigos escritos em múltiplos assuntos

4 of 26

Você sabe o que é um teste de software?

5 of 26

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.

6 of 26

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

7 of 26

Como testar a qualidade desse sistema?

8 of 26

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

9 of 26

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

10 of 26

E agora, qual o melhor?

11 of 26

Vale a pena investir tempo com testes?

12 of 26

Conceitos

13 of 26

Executor de testes

14 of 26

Caso de teste e suíte de testes

15 of 26

A pirâmide de testes

16 of 26

Testes de caixa branca e de caixa preta

17 of 26

Mocks e fixtures

18 of 26

Mas e em Python?

19 of 26

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

20 of 26

Unit Test

21 of 26

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

22 of 26

Pytest

23 of 26

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

24 of 26

Ferramentas para testes E2E

25 of 26

Qual ferramenta eu devo usar?

26 of 26

Obrigado

LinkedIn

linkedin.com/in/andersonsmedeiros/

GitHub da Vinta