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

Avatar for BRUNO SOUZA

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;