Slide 1

Slide 1 text

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