(Quase) Tudo O Que Você Queria Saber
Mas Tinha Medo De Perguntar
2019-03-16 @ 3º PHPVale Meetup
Davi Marcondes Moreira - @devdrops
Investigação
Qualidade
Exploração
Fazer
Afie seu machado antes do trabalho
Saiba onde estão os riscos e aceite que eles serão inevitáveis
Na minha máquina funciona? Não pode!!!
Photo by Harlie Raethel on Unsplash
> 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?
- Nível mais baixo do código
- Funções, métodos, classes
- Mais baratos
- Mais rápidos
- 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
- 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
- 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
> 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);
> Mais simples, menos complexo
> Atende um comportamento fixo e previsível
$stub = $this->createMock(SomeClass::class);
$stub->method('getSomething')
->willReturn('foo');
$sut->action($stub);
Isso, cria teste pra aquele Controller, vai!
Quebre
(de propósito)
bit.ly/testes-software
@devdrops