Slide 1

Slide 1 text

Testes Automatizados com

Slide 2

Slide 2 text

● Sistemas de Informação - ULBRA ● Software Developer ● Developer há 6 anos ● Coordenador da Comunidade ● Palestrante e Escritor ● Criador de ElePHPants ● Gamer nas horas vagas ;) Igor Santos

Slide 3

Slide 3 text

● Motivação ● Testes Automatizados ● codeception ○ Caso de Uso ○ Implementação na Prática ○ Code Coverage ● Menção Honrosa ● Dica Bagual Roteiro

Slide 4

Slide 4 text

Motivação Codeception é um incrível framework opensource que contém as principais ferramentas de automação de testes do mercado. Com ele é possível escrever testes unitários, de integração, aceitação e de APIs. Nessa apresentação vamos ver como é possível criar e executar testes em sua aplicação PHP.

Slide 5

Slide 5 text

Testes Automatizados Automação de testes é a utilização de ferramentas para controlar a execução de testes de uma aplicação, comparando os resultados esperados com resultados reais. Reduzindo a interação manual e aumentando a produtividade. Trazendo uma série de benefícios como: ● Segurança após alterações críticas no sistema; ● Redução de debugs ● Velocidades na liberação de releases ● Produtividade para os testers

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

Caso de Uso https://github.com/IgorSantos17/conference-api

Slide 9

Slide 9 text

Implementação na Prática

Slide 10

Slide 10 text

composer require codeception/codeception --dev Instalação

Slide 11

Slide 11 text

Criando a Estrutura Inicial vendor\bin\codecept bootstrap

Slide 12

Slide 12 text

Estrutura de Diretórios

Slide 13

Slide 13 text

Criando a suit de Testes de API vendor\bin\codecept generate:suite api

Slide 14

Slide 14 text

Configurando a suit de Testes de API

Slide 15

Slide 15 text

vendor\bin\codecept generate:cest api SpeakerTest Criando Classe de Teste

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

Métodos ApiTester ApiTester possui diversos métodos, por isso vou mencionar apenas alguns: $I->wantTo // Descrição curta para o teste a seguir $I->haveHttpHeader // Define um novo cabeçalho à requisição $I->sendPOST | $I->sendGET // Realiza a requisição de acordo com o verbo HTTP $I->seeResponseCodeIs // Verifica se o status code da requisição está conforme o esperado $I->seeResponseIsJson // Verifica se a resposta é um json $I->seeResponseContains // Verifica se o corpo da resposta contém determinado conteúdo $I->grabResponse // Retorna o corpo da resposta da requisição

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

Rodando os Testes vendor\bin\codecept run api

Slide 20

Slide 20 text

vendor\bin\codecept generate:cest api TalkTest Criando uma Nova Classe de Teste

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

Rodando os Testes Novamente vendor\bin\codecept run api

Slide 23

Slide 23 text

Rodando os Testes de uma Única Classe vendor\bin\codecept run tests/api/SpeakerTestCest.php --steps

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

Execução dos Testes ApiTester possui diversos métodos, por isso vou mencionar apenas alguns: php codecept run // Executa todas as suítes de testes php codecept run api // Executa todos os testes de API php codecept run tests/api/SpeakerTestCest.php // Executa os testes de uma classe específica php codecept run tests/api/SpeakerTestCest.php --steps // Executa os testes de uma classe específica (exibindo passo a passo) php codecept run tests/api/SpeakerTestCest.php --debug // Executa os testes de uma classe específica (exibindo detalhadamente passo a passo dos dados enviados e recebidos)

Slide 26

Slide 26 text

“Quebrando” Testes Agora imagine o seguinte cenário: Adiciona-se um novo campo no método de Create! O que vai acontecer no nosso teste??

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

Gerando Relatório vendor\bin\codecept run --html

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

Code Coverage

Slide 31

Slide 31 text

Pré Requisitos Neste link, temos detalhadamente como configurar o Code Coverage no Codeception https://medium.com/@IgorSantos17/codeception-code-coverage-ead0d3b13b14

Slide 32

Slide 32 text

Executando vendor\bin\codecept run api --coverage --coverage-html

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

C:\projetos\conference-api\tests\_output\coverage

Slide 35

Slide 35 text

Menção Honrosa https://github.com/Codeception/CodeceptJS CodeCeptJS

Slide 36

Slide 36 text

Dica Bagual Usando o Composer como atalho para a execução de scripts.

Slide 37

Slide 37 text

Dúvidas

Slide 38

Slide 38 text

twitter.com/IgorSantoos17 linkedin.com/in/igorsantoos github.com/IgorSantos17 medium.com/@igorsantos17 speakerdeck.com/igorsantos Contatos

Slide 39

Slide 39 text

#junteseamanada