Slide 1

Slide 1 text

Codeception Testes Elegantes e Eficientes para PHP Testes de aceitação da era moderna para NodeJS

Slide 2

Slide 2 text

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;

Slide 3

Slide 3 text

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?

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

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;

Slide 6

Slide 6 text

Implementação

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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;

Slide 10

Slide 10 text

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: 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' => 'davert@codeception.com' ]); $I->seeResponseCodeIs (\Codeception\Util\HttpCode ::OK); // 200 $I->seeResponseIsJson (); $I->seeResponseContains ('{"result":"ok"}' );

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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;