contato@qualister.com.br
(48) 3285-5615
twitter.com/qualister
facebook.com/qualister
linkedin.com/company/qualister
De Uni...
Palestrante
Júlio de Lima
Especialista em teste de software com ênfase em
automação de testes de software, possui formação...
Conceito de Unidade, Integração
e Aceitação
Conceito de Unidade, Integração e Aceitação
Testes de unidade
Avaliam isoladamente se
os métodos de uma
classe funcionam c...
Automação de testes
Automação de testes
Testar manualmente o software na perspectiva
de unidade, integração e aceitação é um
processo demorado...
Frameworks PHP usados para
automatizar testes
Frameworks PHP usados para automatizar testes
Testes de unidade
PHPUnit
Testes de integração
PHPUnit
+
Guzzle
Testes de ac...
Sobre o
Sobre o Codeception
Framework open-source para automação de testes que
reune os principais frameworks disponíveis no merca...
Sobre o Codeception
Vejam um exemplo de um teste de aceitação:
<?php
$I = new AcceptanceTester($scenario);
$I->wantTo('adi...
Sobre o Codeception
Internamente ele utiliza os frameworks:
• PHPUnit
• Guzzle
• Facebook Webdriver
• Symfony BrowserKit
•...
Preparando o projeto
Preparando o projeto
1. Crie o diretório “codeception-tdc” e dentro dele teremos o
diretório “src” (que armazena as classe...
HANDS-ON
Automatizando testes de
unidade
Automatizando testes de unidade
1. Criaremos um teste de unidade:
vendor/bin/codecept generate:test unit Pedido
Obs. Poder...
Automatizando testes de unidade
2. Criaremos um novo teste para validar que é possível salvar um
pedido:
/**
* @test
*/
pu...
Automatizando testes de unidade
3. Para executá-lo basta executar o comando abaixo:
vendor/bin/codecept run unit
4. Buscan...
HANDS-ON
Automatizando testes de
integração em APIs
Automatizando testes de integração em APIs
1. Criaremos a suite de testes de Api
vendor/bin/codecept generate:suite api
2....
Automatizando testes de integração em APIs
<?php
$I = new ApiTester($scenario);
$I->wantTo('adicionar um novo pedido');
$I...
Automatizando testes de integração em APIs
5. Execute os testes de integração em API
vendor/bin/codecept run api --steps
HANDS-ON
Automatizando testes de
Aceitação
Automatizando testes de Aceitação
1. Usaremos o gerador do Codeception para gerar o teste de aceitação
de novo pedido:
ven...
Automatizando testes de Aceitação
3. Criamos os comandos de execução dos testes:
<?php
$I = new AcceptanceTester($scenario...
Automatizando testes de Aceitação
4. Execute os testes de aceitação
vendor/bin/codecept run acceptance --steps
5. Para exe...
PhpBrowser vs Webdriver
PhpBrowser
- É muito rápido
- Usa Texto, Name, CSS Selector ou XPath para identificar os elementos...
HANDS-ON
Gerando relatórios de
execução
Automatizando testes de Aceitação
Podemos gerar relatórios em HTML para que a leitura torne-
se mais simples:
vendor/bin/c...
Thanks to beta testers
Adriel, Lilian, Mário e Robson
contato@qualister.com.br
(48) 3285-5615
twitter.com/qualister
facebook.com/qualister
linkedin.com/company/qualister
Feedba...
Próximos SlideShares
Carregando em…5
×

[TDC2015] De unitário a aceitação: Automação de testes com Codeception

1.269 visualizações

Publicada em

Palestra ministrada na trilha de PHP do The Developers Conference no dia 25 de julho de 2015.

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.269
No SlideShare
0
A partir de incorporações
0
Número de incorporações
348
Ações
Compartilhamentos
0
Downloads
20
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

[TDC2015] De unitário a aceitação: Automação de testes com Codeception

  1. 1. contato@qualister.com.br (48) 3285-5615 twitter.com/qualister facebook.com/qualister linkedin.com/company/qualister De Unitário a Aceitação: Automatizando Testes com Codeception Trilha PHP | São Paulo | 25/07/2015
  2. 2. Palestrante Júlio de Lima Especialista em teste de software com ênfase em automação de testes de software, possui formação em Tecnologia da Informação e certificações internacionais e (CTFL e CTAL-TM pelo ISTQB) e nacional (CBTS pela ALATS) em teste de software. Professor convidado em cursos de pós graduação em instituições do Paraná e Santa Catarina. julio.lima@qualister.com.br twitter.com/juliodelimas br.linkedin.com/in/juliodelimas goldtips.by/juliodelimas
  3. 3. Conceito de Unidade, Integração e Aceitação
  4. 4. Conceito de Unidade, Integração e Aceitação Testes de unidade Avaliam isoladamente se os métodos de uma classe funcionam como esperado. Testes de integração Avaliam se, após integrados, os componentes ou sistemas conseguem interagir entre si como esperado. Testes de aceitação Avaliam se o produto final atende as requisitos iniciais na perspectiva de usuário final (negócios).
  5. 5. Automação de testes
  6. 6. Automação de testes Testar manualmente o software na perspectiva de unidade, integração e aceitação é um processo demorado e custoso. Quando novas versões do software são construídas torna-se, muitas vezes, impossível re-testar tudo o que foi testado nas versões anteriores e as novas funcionalidades. Principais benefícios são: • Re-execução de testes executados em versões anteriores • Feedback instantâneo após mudanças no código • Melhoria na escrita do código • Confiança na aplicação
  7. 7. Frameworks PHP usados para automatizar testes
  8. 8. Frameworks PHP usados para automatizar testes Testes de unidade PHPUnit Testes de integração PHPUnit + Guzzle Testes de aceitação Behat + Webdriver
  9. 9. Sobre o
  10. 10. Sobre o Codeception Framework open-source para automação de testes que reune os principais frameworks disponíveis no mercado. A escrita dos testes é feita de forma descritiva, muito semelhante ao estilo BDD. Desenvolvido com o intuito de que os testes de unidade, integração e aceitação pudessem ser escritos usando um estilo único. Possui geradores que servem para criar o template inicial dos testes.
  11. 11. Sobre o Codeception Vejam um exemplo de um teste de aceitação: <?php $I = new AcceptanceTester($scenario); $I->wantTo('adicionar um novo pedido'); $I->amOnPage('/'); $I->click('Novo pedido'); $I->fillField('id', 1); $I->selectOption('produto', 'Firefox'); $I->click('button'); $I->see('Sucesso'); ?>
  12. 12. Sobre o Codeception Internamente ele utiliza os frameworks: • PHPUnit • Guzzle • Facebook Webdriver • Symfony BrowserKit • Entre outros Pré-requisitos: • PHP 5.3+ • CURL enabled • Composer (para o nosso Hands-on)
  13. 13. Preparando o projeto
  14. 14. Preparando o projeto 1. Crie o diretório “codeception-tdc” e dentro dele teremos o diretório “src” (que armazena as classes do projeto)
 2. Crie o arquivo “composer.json” e adicione o conteúdo abaixo: { "require": { "codeception/codeception": "*" }, "autoload": { "classmap": [ "src" ] } }
 3. Rode o comando 
 composer install
 4. Para criar os arquivos iniciais rode o comando 
 vendor/bin/codecept bootstrap
  15. 15. HANDS-ON Automatizando testes de unidade
  16. 16. Automatizando testes de unidade 1. Criaremos um teste de unidade: vendor/bin/codecept generate:test unit Pedido Obs. Poderíamos também criar um teste do PHPUnit com o comando: php codecept.phar generate:phpunit unit Pedido
  17. 17. Automatizando testes de unidade 2. Criaremos um novo teste para validar que é possível salvar um pedido: /** * @test */ public function adicionarProdutoNoPedidoValidarQueFoiAdicionado() { // Arrange $pedidoServicos = new PedidoServicos(); // Act $resposta = $pedidoServicos->salvar($this->pedido); // Assert $this->tester->assertEquals('Sucesso', $resposta); }
  18. 18. Automatizando testes de unidade 3. Para executá-lo basta executar o comando abaixo: vendor/bin/codecept run unit 4. Buscando o isolamento das classes durante o teste, podemos criar Stubs (implementadas a partir da classe de rock do PHPUnit) para simular o comportamento de outras classes: // Arrange $pedidoServicos = new PedidoServicos(); $pedidoServicos = CodeceptionUtil Stub::make('PedidoServicos', ['salvar' => 'Sucesso']); Ponto negativo: Não é possível mocar interfaces :(
  19. 19. HANDS-ON Automatizando testes de integração em APIs
  20. 20. Automatizando testes de integração em APIs 1. Criaremos a suite de testes de Api vendor/bin/codecept generate:suite api 2. Usaremos o gerador do Codeception para gerar o teste de integração de novo pedido: vendor/bin/codecept generate:cept api NovoPedido 3. Configuramos a URL base de nossa aplicação na propriedade URL no arquivo de configuração da suíte de testes de aceitação: api.suite.yml class_name: ApiTester modules: enabled: - REST: url: 'http://localhost:8888/qualister-php-testing/api' depends: PhpBrowser
  21. 21. Automatizando testes de integração em APIs <?php $I = new ApiTester($scenario); $I->wantTo('adicionar um novo pedido'); $I->amHttpAuthenticated('phptesting', '123'); $I->sendPOST('/pedido', [ 'produtoid' => 10, 'produtonome' => 'Firefox', 'produtoestoque' => 50, 'produtovalor' => 49.90 ]); $I->seeResponseCodeIs(200); $I->seeResponseIsJson(); $I->seeResponseContainsJson(['message' => 'Sucesso', 'status' => 'sucesso']); ?> 4. Escreveremos o teste que enviará a requisição à API:
  22. 22. Automatizando testes de integração em APIs 5. Execute os testes de integração em API vendor/bin/codecept run api --steps
  23. 23. HANDS-ON Automatizando testes de Aceitação
  24. 24. Automatizando testes de Aceitação 1. Usaremos o gerador do Codeception para gerar o teste de aceitação de novo pedido: vendor/bin/codecept generate:cept acceptance NovoPedido 2. Configuramos a URL base de nossa aplicação na propriedade URL no arquivo de configuração da suíte de testes de aceitação: acceptance.suite.yml class_name: AcceptanceTester modules: enabled: - PhpBrowser: url: 'http://localhost:8888/qualister-php-testing/web' - HelperAcceptance
  25. 25. Automatizando testes de Aceitação 3. Criamos os comandos de execução dos testes: <?php $I = new AcceptanceTester($scenario); $I->wantTo('adicionar um novo pedido'); $I->amOnPage('/'); $I->click('Novo pedido'); $I->fillField('id', 1); $I->selectOption('produto', 'Firefox'); $I->fillField('estoque', 50); $I->fillField('valor', 49.90); $I->click('button'); $I->expect('a mensagem "sucesso" seja apresentada'); $I->see('Sucesso'); ?>
  26. 26. Automatizando testes de Aceitação 4. Execute os testes de aceitação vendor/bin/codecept run acceptance --steps 5. Para executar os testes em um browser real, precisamos que o Selenium Server (java -jar bin/selenium-server-standalone-2.46.0.jar) esteja sendo executado, após isso, modificaremos o arquivo de configuração da suite de aceitação: class_name: AcceptanceTester modules: enabled: - WebDriver: url: 'http://localhost:8888/qualister-php-testing/web' browser: firefox window_size: maximize - HelperAcceptance Pode trabalhar com PhpBrowser ou Selenium Webdriver.
  27. 27. PhpBrowser vs Webdriver PhpBrowser - É muito rápido - Usa Texto, Name, CSS Selector ou XPath para identificar os elementos - Só podemos clicar em links com URLs válidas e botões de submissão de forms - Não consegue simular o preenchimento de campos que não estão em formulários - Não testa Javascript - Não presume identificar a visibilidade dos elementos - Usa Guzzle e Symfony BrowserKit para enviar requisições ao servidor WebDriver - É mais lento - Usa Texto, Name, CSS Selector ou XPath para identificar os elementos - Permite tirar screenshots de telas - Só podemos clicar em links com URLs válidas e botões de submissão de forms - Não consegue simular o preenchimento de campos que não estão em formulários - Não testa Javascript - Não presume identificar a visibilidade dos elementos - Usa Guzzle e Symfony BrowserKit para simular o browser
  28. 28. HANDS-ON Gerando relatórios de execução
  29. 29. Automatizando testes de Aceitação Podemos gerar relatórios em HTML para que a leitura torne- se mais simples: vendor/bin/codecept run --html O relatório também pode ser exportado no format JUnit XML, através do comando abaixo: vendor/bin/codecept run —-xml
  30. 30. Thanks to beta testers Adriel, Lilian, Mário e Robson
  31. 31. contato@qualister.com.br (48) 3285-5615 twitter.com/qualister facebook.com/qualister linkedin.com/company/qualister Feedback: joind.in/14851

×