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

Photo by Kevin Ku on Unsplash

Dúvidas
Mais
Comuns

Dúvida #1

O que são testes
e pra quê servem?

Investigação

Qualidade

Exploração

Dúvida #2

Que conceitos preciso saber
antes de começar a testar?

Single Responsibility Principle

Fazer umacoisa, e fazê-la bem

Planejar antes de agir

Afie seu machado antes do trabalho

Conheça o projeto

Saiba onde estão os riscos e aceite que eles serão inevitáveis

Separação de ambientes

Na minha máquina funciona? Não pode!!!

Dúvida #3

Por onde começar a testar
uma aplicação?

Photo by Harlie Raethel on Unsplash

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?

Dúvida #4

Diferença entre Unitário,
Funcional, E2E e Integração?

Testes Unitários

- Nível mais baixo do código

- Funções, métodos, classes

- Mais baratos

- Mais rápidos

 

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

 

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

 

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

Dúvida #5

O que são Mocks e Stubs?

Photo by Nhia Moua on Unsplash

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);

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);

Dúvida #6

Ninguém da equipe quer fazer testes e o projeto é só bugs, o que faço?

Dúvida #7

Se eu testar Controller ou Model, eu vou pro inferno?

Isso, cria teste pra aquele Controller, vai!

Dúvida #8

Tenho que ter 100% de cobertura de testes?

Cobertura

Qualidade

!==

Dúvida #9

Como saber a qualidade dos meus testes?

Quebre seus testes!

(de propósito)

Dúvida #10

Eu sou uma fraude, será que só eu não consigo testar?

Dúvida #11

Além do código, preciso testar mais alguma coisa?

Logs

Health Check de serviços

Dependências

Fluxos e Artefatos

Dúvida #12

Como mostrar a importância dos testes para quem não é de tecnologia?

Photo by M. B. M. on Unsplash

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)

Muito obrigado! =D

bit.ly/testes-software

@devdrops

Made with Slides.com