Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Codeception

 Codeception

Codeception:
Testes Elegantes e Eficientes para PHP.

Testes de aceitação da era moderna para NodeJS

BRUNO SOUZA

April 30, 2018
Tweet

More Decks by BRUNO SOUZA

Other Decks in Technology

Transcript

  1. O problema Empresa • Cliente reportando vários casos de bug

    nas aplicações que poderiam ser evitados através de testes funcionais, de aceitação ou de API. Além dos testes unitários. • Maior número de bugs = Maior tempo gasto pelos funcionários para solucioná-los = Menor faturamento; • A empresa possui várias aplicações em frameworks diferentes. Contexto • A empresa não possui ou contrato não comporta equipe de teste; • Os testes são feitos por programadores que desenvolvem as funcionalidades; • Funcionários mais preocupados com produção que qualidade; • Funcionalidades possuem alterações que podem causar erros inesperados na aplicação; Declaração do problema • Bugs na aplicação causa retrabalho para a equipe de desenvolvimento; • Diminui a credibilidade da empresa/equipe por parte do cliente; • Causa transtornos e situações desagradáveis; • Por serem soluções geralmente rápidas, possui maior probabilidade de gambiarras no código;
  2. Solução Maior cobertura e tipos de testes Quanto maior a

    variedade de testes, maior a cobertura de funcionalidades na aplicação e maior a qualidade de entrega. Mas, como fazer isto?
  3. O que é Codeception? • É uma ferramenta que coleta

    e compartilha as melhores práticas e soluções para testar aplicações web com PHP e Javascript; • Com um conjunto flexível de módulos inclusos, os testes ficam fáceis de escrever, fáceis de usar e fáceis de manter; • Incentiva os desenvolvedores e os engenheiros de QA a concentrar-se no teste e não na construção de um conjunto de testes; • Utiliza o ponto de vista de usuário para testes de aceitação. Cada comando é descrito como a ação de um usuário que utiliza o site; • Controla o browser em tempo real. Toda ação é descrita em um shell interativo; • Fornece teste unitário, BDD, teste de API (REST ou SOAP), Integração e funcional;
  4. Codeception Instalação • Via Composer: composer require "codeception/codeception" --dev •

    Download: wget https://codeception.com/codecept.phar Execute como: php codecept.phar Setup codecept bootstrap Este comando cria o arquivo de configuração codeception.yml e a estrutura básica do diretório de testes. As suítes de teste de aceitação, funcional, unitário são criadas também. Setups simplificados: codecept init acceptance / codecept init api / codecept init unit
  5. Codeception Configurações: Teste de aceitação: acceptance.suite.yml actor: AcceptanceTester modules: enabled:

    - PhpBrowser: url: http://www.example.com/ - \Helper\Acceptance Teste de API: api.suite.yml actor: ApiTester modules: enabled: - REST: url: http://serviceapp/api/v1/ depends: PhpBrowser part: Json
  6. Codeception Configurações: O Codeception suporta três formatos de arquivos terminados

    com os seguintes sufixos: • Cept - (default) Este formato é utilizado para um cenário simples e válido de teste; • Cest - Combina testes baseados em cenários com programação orientada à objetos (OOP); • Test - Formato padrão utilizado por testes unitários; Sintaxe: Suítes - São grupos independentes de teste com um propósito comum; Actions - Começam com algum verbo em inglês, como “click” ou “fill”; Assertions - Sempre começam com os verbos em inglês “see” ou “dontSee”; Grabbers - Apenas lê algo da tela, sem processar. Utilizado em variáveis para se guardar algum retorno; Actors - Representa o usuário que está executando o teste;
  7. Codeception Execução de testes: Para gerar automaticamente uma suíte de

    testes, execute o comando: php codecept generate:cept api CreateUser Este comando criará o arquivo CreateUserCept.php. Como demonstrado na parte de código abaixo: <?php $I = new ApiTester($scenario); $I->wantTo('create a user via API' ); $I->amHttpAuthenticated ('service_user', '123456'); $I->haveHttpHeader('Content-Type', 'application/x-www-form-urlencoded' ); $I->sendPOST('/users', ['name' => 'davert', 'email' => '[email protected]' ]); $I->seeResponseCodeIs (\Codeception\Util\HttpCode ::OK); // 200 $I->seeResponseIsJson (); $I->seeResponseContains ('{"result":"ok"}' );
  8. Codecept.js Instalação: npm install -g codeceptjs Execute como: codeceptjs Setup:

    Inicie o CodeceptJS com o seguinte comando: codeceptjs init. Este comando cria o arquivo de configuração codecept.js. Durante a inicialização são feitas algumas perguntas como: local do projeto, Helper a ser utilizado, pasta de logs e se deseja customizar o arquivo steps_file.js. Como no exemplo abaixo: ? What helpers do you want to use? ❯◉ WebDriverIO ◯ Protractor ◯ Puppeteer ◯ Appium ◯ Nightmare ◯ FileSystem
  9. Codecept.js Execução de testes: Execute o comando codeceptjs gt para

    gerar a classe de teste automaticamente. Abaixo está um exemplo da classe criada por este comando: Feature('My First Test'); Scenario('test something', (I) => { }); Execute o teste com o seguinte comando: codecept run --steps. OBS: É necessário fazer a instalação do Helper e suas dependências que será utilizado. Por exemplo, se for usar o selenium é necessário rodar os seguintes comandos antes dos testes: [sudo] npm install -g selenium-standalone selenium-standalone install selenium-standalone start
  10. Conclusão ➔ O Codeception é uma boa ferramenta para automatizar

    testes funcionais, de integração, api, etc; ➔ É exigido uma pequena curva de aprendizagem para obter o conhecimento de seus módulos e funcionamento interno para que se tenha um bom aproveitamento; ➔ Os métodos por ele utilizado são bem intuitivos, o que facilita a curva de aprendizagem; ➔ A quantidade de ferramentas e opções de testes, além da facilidade e praticidade do seu uso com diversos frameworks php e js facilitam no caso de uma possível migração;