Testes de Software
Testes de Software
(Quase) Tudo O Que Você Queria Saber
Mas Tinha Medo De Perguntar
2019-03-16 @ 3º PHPVale Meetup
Davi Marcondes Moreira - @devdrops
Slide 2
Slide 2 text
Photo by on
Kevin Ku Unsplash
Slide 3
Slide 3 text
No content
Slide 4
Slide 4 text
Dúvidas
Dúvidas
Mais
Mais
Comuns
Comuns
Slide 5
Slide 5 text
Dúvida #1
Dúvida #1
O
O que
que são testes
são testes
e pra quê
e pra quê servem
servem?
?
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
Investigação
Slide 8
Slide 8 text
Investigação
Exploração
Slide 9
Slide 9 text
Investigação
Qualidade
Exploração
Slide 10
Slide 10 text
No content
Slide 11
Slide 11 text
Dúvida #2
Dúvida #2
Que conceitos preciso saber
Que conceitos preciso saber
antes de começar a testar?
antes de começar a testar?
Slide 12
Slide 12 text
Single Responsibility Principle
Single Responsibility Principle
Fazer uma só coisa, e fazê-la bem
Slide 13
Slide 13 text
Planejar antes de agir
Planejar antes de agir
Afie seu machado antes do trabalho
Slide 14
Slide 14 text
Conheça o projeto
Conheça o projeto
Saiba onde estão os riscos e aceite que
eles serão inevitáveis
Slide 15
Slide 15 text
Separação de ambientes
Separação de ambientes
Na minha máquina funciona? Não pode!!!
Slide 16
Slide 16 text
Dúvida #3
Dúvida #3
Por onde começar a testar
Por onde começar a testar
uma aplicação?
uma aplicação?
Slide 17
Slide 17 text
Photo by on
Harlie Raethel Unsplash
Slide 18
Slide 18 text
Dores típicas
Dores típicas
> As entregas demoram muito?
> Código muito complexo?
> O time anda desmotivado?
> O site é lento?
> Motivos de reclamação no suporte?
> Bugs difíceis de encontrar/reproduzir?
Slide 19
Slide 19 text
Dúvida #4
Dúvida #4
Diferença entre Unitário,
Diferença entre Unitário,
Funcional, E2E e Integração?
Funcional, E2E e Integração?
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
Testes Unitários
Testes Unitários
- Nível mais baixo do código
- Funções, métodos, classes
- Mais baratos
- Mais rápidos
Slide 22
Slide 22 text
Testes de Integração
Testes de Integração
- Nível médio do seu código
- Comunicação entre módulos,
serviços, banco de dados
- Custam mais pelas dependências
- Mais lentos
Slide 23
Slide 23 text
Testes Funcionais
Testes Funcionais
- Nível acima do código em si
- Regras de negócio no sistema
- Fazem ações de integração, mas
não validam a interação entre as
ações
- Mais lentos
Slide 24
Slide 24 text
Testes End-To-End (E2E)
Testes End-To-End (E2E)
- Mais alto nível do projeto
- Como seu projeto se comunica com
o mundo exterior
- Endpoints de APIs, navegação
completa pelo site
- Mais lentos e muito mais
caros
Slide 25
Slide 25 text
Dúvida #5
Dúvida #5
O que são Mocks e Stubs?
O que são Mocks e Stubs?
Slide 26
Slide 26 text
Photo by on
Nhia Moua Unsplash
Slide 27
Slide 27 text
Mocks
Mocks
> Falsificação
> Bem completo e pode ser usado como substituto de uma
dependência do projeto (banco de dados, API etc)
$mock = $this->createMock(SomeClass::class);
$mock->expects($this->once())
->method('doSomething')
->with('bar');
$sut->action($mock);
Slide 28
Slide 28 text
Stubs
Stubs
> Mais simples, menos complexo
> Atende um comportamento fixo e previsível
$stub = $this->createMock(SomeClass::class);
$stub->method('getSomething')
->willReturn('foo');
$sut->action($stub);
Slide 29
Slide 29 text
Dúvida #6
Dúvida #6
Ninguém da equipe quer
Ninguém da equipe quer
fazer testes e o projeto é só
fazer testes e o projeto é só
bugs, o que faço?
bugs, o que faço?
Slide 30
Slide 30 text
Dúvida #7
Dúvida #7
Se eu testar Controller ou
Se eu testar Controller ou
Model, eu vou pro inferno?
Model, eu vou pro inferno?
Slide 31
Slide 31 text
Isso, cria teste pra
aquele Controller,
vai!
Slide 32
Slide 32 text
Dúvida #8
Dúvida #8
Tenho que ter 100% de
Tenho que ter 100% de
cobertura de testes?
cobertura de testes?
Slide 33
Slide 33 text
Cobertura
Cobertura
Qualidade
Qualidade
!==
!==
Slide 34
Slide 34 text
Dúvida #9
Dúvida #9
Como saber a qualidade dos
Como saber a qualidade dos
meus testes?
meus testes?
Slide 35
Slide 35 text
Quebre seus
testes!
(de propósito)
Slide 36
Slide 36 text
No content
Slide 37
Slide 37 text
Dúvida #10
Dúvida #10
Eu sou uma fraude, será que
Eu sou uma fraude, será que
só eu não consigo testar?
só eu não consigo testar?
Slide 38
Slide 38 text
No content
Slide 39
Slide 39 text
Dúvida #11
Dúvida #11
Além do código, preciso
Além do código, preciso
testar mais alguma coisa?
testar mais alguma coisa?
Slide 40
Slide 40 text
No content
Slide 41
Slide 41 text
Logs
Logs
Slide 42
Slide 42 text
Logs
Logs
Health Check de serviços
Health Check de serviços
Slide 43
Slide 43 text
Logs
Logs
Health Check de serviços
Health Check de serviços
Dependências
Dependências
Slide 44
Slide 44 text
Logs
Logs
Health Check de serviços
Health Check de serviços
Dependências
Dependências
Fluxos e Artefatos
Fluxos e Artefatos
Slide 45
Slide 45 text
Dúvida #12
Dúvida #12
Como mostrar a importância
Como mostrar a importância
dos testes para quem não é
dos testes para quem não é
de tecnologia?
de tecnologia?
Slide 46
Slide 46 text
Photo by on
M. B. M. Unsplash
Slide 47
Slide 47 text
Referências
Referências
[Software Testing](https://en.wikipedia.org/wiki/Software_testing )
[Testing References](http://www.testingreferences.com/testinghistory.php )
[The Different Types of Software Testing](https://www.atlassian.com/continuous-
delivery/software-testing/types-of-software-testing)
[Testes Unitários: Mocks, Stubs, Spies e Todas Essas Palavras Difíceis]
(https://medium.com/trainingcenter/testes-unit%C3%A1rios-mocks-stubs-spies-e-
todas-essas-palavras-dif%C3%ADceis-f2765ac87cc8)
[Mocks Aren't Stubs](https://martinfowler.com/articles/mocksArentStubs.html)
Slide 48
Slide 48 text
Muito
Muito obrigado
obrigado! =D
! =D
bit.ly/testes-software
@devdrops