SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler offline
www.qualister.com.br
(48) 4052-9536 / 9540
contato@qualister.com.br
Automação de testes
BDD usando
Codeception



por Júlio de Lima

@juliodelimas
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 (CTFL e CTAL-TM pelo ISTQB) e nacional
(CBTS pela ALATS) relacionada a testes de software além de ser
certificado na ferramenta SoapUI Pro pela SmartBear Software.
Atualmente é consultor de automação de testes e instrutor na Qualister
e é professor de disciplina de teste de software em cursos de pós-
graduação no Paraná e em Santa Catarina.
julio.lima@qualister.com.br
twitter.com/juliodelimas
br.linkedin.com/in/juliodelimas
goldtips.by/juliodelimas
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
BDD: Desenvolvimento Dirigido por Comportamentos
3
BDD: Desenvolvimento Dirigido por
Comportamentos
Analisando as empresas brasileiras usando a regra de Paretto,
apenas 20% usam documentação com base em UML, as outras 80%
documentam o software com linguagem comum, e-mails,
verbalmente ou mesmo papel de pão.
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
BDD: Desenvolvimento Dirigido por Comportamentos
4
Um exemplo de descrição do software por e-mail
"Olá José, aqui é a Maria, preciso que
altere nosso sistema. Quero ter a
possibilidade de registrar as
movimentações de entrada e saída (no
máximo 100 reais) de nosso caixa."
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
BDD: Desenvolvimento Dirigido por Comportamentos
5
Agora, o mesmo exemplo usando BDD
Funcionalidade: Gerenciar Movimentações
Sendo o administrador de uma loja
Posso gerenciar movimentações
Para que possa ver, de forma simples, as entradas e saídas de valores
Cenário: Gerando uma movimentação de entrada
Dado que eu esteja autenticado como administrador
E que eu tenha acessado o menu "Movimentações"
E clicado em "Nova movimentação” para inserir uma movimentação
Quando eu informar os dados:
|tipo|valor|itens|
|Entrada|500,00|Almoçar|
E clicar em "Gravar"
Então verei a mensagem "Sucesso ao inserir a movimentação"
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
BDD: Desenvolvimento Dirigido por Comportamentos
6
Cenário: Gerando uma movimentação de saída dentro do valor limite
Dado que eu esteja autenticado como administrador
E que eu tenha acessado o menu "Movimentações"
E clicado em "Nova movimentação” para inserir uma movimentação
Quando eu informar os dados:
|tipo|valor|itens|
|Saída|100,00|Almoçar|
E clicar em "Gravar"
Então verei a mensagem "Sucesso ao inserir a movimentação"
Cenário: Gerando uma movimentação de saída fora do valor limite
Dado que eu esteja autenticado como administrador
E que eu tenha acessado o menu "Movimentações"
E clicado em "Nova movimentação” para inserir uma movimentação
Quando eu informar os dados:
|tipo|valor|itens|
|Saída|100,01|Almoçar|
E clicar em "Gravar"
Então verei a mensagem "São permitidas apenas movimentações de saída
de até 100 reais"
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Testes manuais e suas limitações
7
Os testes manuais servem para testar,
sem o uso de ferramentas
automatizadas, se o software atende as
necessidades do cliente e se funciona
como esperado.
Clientes podem ser: O usuário final, os
desenvolvedores, as empresas que
consumirão nossa API, entre outros.
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Testes manuais e suas limitações
8
Os testes tendem a serem trabalhosos,
custosos, demorados, repetitivos e
muitas vezes inviáveis.
Exige que o testador tenha as habilidades
necessárias para atuar nestas áreas e destreza
para saber priorizar os testes que deverão ser
executados, pois na maioria das vezes não dá
tempo para testar tudo.
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Testes manuais e suas limitações
9
Os testes tendem a serem trabalhosos,
custosos, demorados, repetitivos e
muitas vezes inviáveis.
Exige que o testador tenha as habilidades
necessárias para atuar nestas áreas e destreza
para saber priorizar os testes que deverão ser
executados, pois na maioria das vezes não dá
tempo para testar tudo.
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Testes automatizados para ajudar a remover limitações
10
Testes automatizados são scripts
programados para avaliar os softwares,
eles complementam o trabalho manual.
Nos traz uma série de benefícios, como:
Segurança mesmo após fazer alterações
drásticas no sistema, redução de debugs no
código, velocidade na liberação de versões,
economia no tempo dos testadores manuais.
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Testes automatizados para ajudar a remover limitações
11
Vejamos alguns frameworks
open-source usados para
automatizar testes
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Testes automatizados para ajudar a remover limitações
12
PHPUnit
Usado para automatizar testes de
unidade em PHP
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Testes automatizados para ajudar a remover limitações
13
class PedidoTest extends PHPUnit_Framework_TestCase
{
/**
* @test
* @author Julio
*/
public function aoAdicionarProdutoAListaDeveraConterApenas1Item()
{
// Arrange
$pedido = new Pedido();
$produto = $this->getMockBuilder("IProduto")
->setConstructorArgs(
array(1, "PlayStation", 5, 999.99)
)
->getMock();
// Act
$pedido->addItemPedido($produto, 2);
$pedidoitens = $pedido->getPedidoItens();
// Assert
$this->assertCount(1, $pedidoitens);
$this->assertEquals(array($produto, 2), $pedidoitens[0]);
}
}
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Testes automatizados para ajudar a remover limitações
14
PHPUnit com Guzzle
Guzzle é um framework usado para
fazer requisições à APIs Rest
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Testes automatizados para ajudar a remover limitações
15
class PedidoAPITest extends PHPUnit_Framework_TestCase
{
/**
* @test
* @author Julio
*/
public function testAcessarRootEntaoReceber200SucessoECodigo()
{
// Arrange
$client = new GuzzleHttpClient(
["base_uri" => "http://localhost:8888/qualister-testing/api"]
);
// Act
$resposta = $this->client->get("/", ['auth' => ['phptesting', '123']]);
// Assert
$this->assertEquals(200, $resposta->getStatusCode());
$body = json_decode($resposta->getBody(), true);
$this->assertEquals("gnitsetphp", $body["data"]["codigo"]);
}
}
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Testes automatizados para ajudar a remover limitações
16
PHPUnit com Selenium
WebDriver
Selenium WebDriver é um framework
usado para simular interações com
aplicações web em um browser real ou
headless
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Testes automatizados para ajudar a remover limitações
17
class PedidoWebTest extends PHPUnit_Framework_TestCase
{
/**
* @test
* @author Julio
*/
public function acessarPaginaInicialValidarMensagensDeAlerta()
{
// Arrange
$this->driver = RemoteWebDriver::create("http://localhost:
4444/wd/hub", DesiredCapabilities::firefox());
$this->driver->manage()->window()->maximize();
$this->driver->get("http://localhost:8888/qualister-php-
testing/web/");
// Act
$this->driver->findElement(WebDriverBy::id("order"))->click();
$this->driver->switchTo()->alert()->accept();
$texto = $this->driver->switchTo()->alert()->getText();
$this->driver->switchTo()->alert()->accept();
// Arrange
$this->assertContains("Faça login antes", $texto);
}
}
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Muitos frameworks e uma curva de aprendizagem maior
18
Existem muitos frameworks PHP
utilizados para automatizar testes, mas
cada um deles tem suas características
e uma forma específica de escrita.
Todos eles usam a forma de organização
dos testes em linguagem técnica e não
de negócios.
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Codeception e sua DSL Jedi
19
Codeception é um framework criado
para facilitar a automação de testes em
todas as camadas de um software,
escrevendo seguindo o padrão BDD.
Ele possui um DSL própria, muito simples
de se compreender.
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Codeception e sua DSL Jedi
20
<?php
$I = new AcceptanceTester($scenario);
$I->am('Administrador de uma loja');
$I->wantTo('gerenciar movimentações');
$I->lookForwardTo('Ver, de forma simples, as entradas e
saídas de valores');
$I->amOnPage('/');
$I->fillField('usuariologin', 'teste');
$I->fillField('usuariosenha', '123');
$I->click('Entrar');
$I->click('Movimentações');
$I->click('Nova movimentação');
$I->selectOption("select", "Entrada");
$I->fillField('movimentacaovalor', '500,00');
$I->fillField('movimentacaoitens', 'Almoçar');
$I->click('Gravar');
$I->see('Sucesso ao inserir a movimentação');
?>
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Codeception e sua DSL Jedi
21
Para usar o Codeception basta baixar o
arquivo codecept.phar e adiciona-lo na
raiz do diretório do projeto, no nosso
caso, "PHPConferenceBr".
E então rodar o comando "php
codecept.phar bootstrap" para
criar a arquitetura inicial.
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Automatizando testes de unidade
22
Automatizando testes de
unidade com Codeception
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Automatizando testes de unidade
23
1. Execute o comando "php codecept.phar
generate:test unit Pedido" para criar
uma classe de teste de unidade chamada
"PedidoTest.php";

2. Adicione os requires às classes que serão
testadas:
require './src/Pedido.php';
require './src/PedidoServicos.php';

3. Adicione os comandos abaixo no
PedidoTest.php contido na pasta tests/unit:
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Automatizando testes de unidade
24
public function
testAdicionarProdutoNoPedidoValidarQueFoiAdicionado()
{
// Arrange
$pedido = new Pedido();
$pedidoServicos = CodeceptionUtil
Stub::make('PedidoServicos', ['salvar' =>
'Sucesso']);
// Act
$resposta = $pedidoServicos->salvar($pedido);
// Assert
$this->tester->assertEquals('Sucesso',
$resposta);
}
4. Execute-o digitando o comando "php
codecept.phar run unit".
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Automatizando testes de API
25
Automatizando testes de API
com Codeception
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Automatizando testes de API
26
1. Execute o comando "php codecept.phar generate:suite
api" para gerar a suite de API
2. Adicione as configurações dos testes de API no arquivo
api.suite.yml:
class_name: ApiTester
modules:
enabled:
- REST:
url: 'http://localhost:8888/
qualister-php-testing/api'
depends: PhpBrowser
3. Execute o comando "php codecept.phar build" para que o
projeto seja atualizado e construídas as dependências referentes à
suite de APIs
4. Execute o comando "php codecept.phar generate:cept
api NovoPedido" para criar um teste de API
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Automatizando testes de API
27
5. Adicione os comandos abaixo no NovoPedidoCept.php contido na pasta
tests/api:
<?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']);
?>
6. Execute-o digitando o comando "php codecept.phar run api --
steps".
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Automatizando testes Aceitação Web
28
Automatizando testes de
Aceitação Web com
Codeception
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Automatizando testes Aceitação Web
29
1. Execute o comando "php codecept.phar
generate:cept acceptance NovoPedido"
para criar um teste de aceitação web
2. Adicione as configurações dos testes de
Aceitação no arquivo acceptance.suite.yml:
class_name: AcceptanceTester
modules:
enabled:
- PhpBrowser:
url: 'http://localhost:8888/
qualister-php-testing/web'
- HelperAcceptance
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Automatizando testes Aceitação Web
30
3. Adicione os comandos abaixo no NovoPedidoCept.php contido na
pasta tests/acceptance:
<?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');
?>
4. Execute-o digitando o comando "php codecept.phar run
acceptance --steps".
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Automatizando testes Aceitação Web
31
É possível também executar os testes
utilizando browsers reais, ao invés de
utilizar testes com browsers headless,
neste caso, usa-se o Selenium WebDriver
para executar tal ação, veja os passos a
seguir.
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Automatizando testes Aceitação Web
32
1. Baixe o Selenium Server Standalone em https://selenium-
release.storage.googleapis.com/index.html?path=2.46/ e mova-o para a pasta
"bin" dentro do projeto



2. Starte o Selenium Server usando o comando "java -jar bin/selenium-
server-standalone-2.46.0.jar"

3. Altera as configurações dos testes de Aceitação no arquivo
acceptance.suite.yml:
class_name: AcceptanceTester
modules:
enabled:
- WebDriver:
url: 'http://localhost:8888/qualister-php-
testing/web'
browser: firefox
window_size: maximize
- HelperAcceptance

4. Execute-o digitando o comando "php codecept.phar run acceptance --
steps".
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Executando todos os testes e gerando relatórios
33
Executando todos os testes e
gerando relatórios:
php codecept.phar run --html
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
34
Links interessantes
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
35
• https://github.com/sebastianbergmann/phpunit
• https://github.com/guzzle/guzzle
• https://github.com/facebook/php-webdriver
• http://codeception.com/
• http://www.qualister.com.br/videos/tdc2015-
hands-on-de-automacao-de-testes-de-unidade-
api-e-aceitacao-com-codeception
Referências
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
36
PHPSP + Pub
www.qualister.com.brwww.qualister.com.br
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
37

Mais conteúdo relacionado

Mais procurados

Teste de performance na nuvem com JMeter e BlazeMeter TDC2014
Teste de performance na nuvem com JMeter e BlazeMeter TDC2014Teste de performance na nuvem com JMeter e BlazeMeter TDC2014
Teste de performance na nuvem com JMeter e BlazeMeter TDC2014Qualister
 
Mindset de QA em Diferentes Contextos
Mindset de QA em Diferentes ContextosMindset de QA em Diferentes Contextos
Mindset de QA em Diferentes ContextosJúlio de Lima
 
DEV-OPS para teste de software
DEV-OPS para teste de softwareDEV-OPS para teste de software
DEV-OPS para teste de softwareQualister
 
Agile testing
Agile testingAgile testing
Agile testingQualister
 
Caipira agil automacao front end selenium
Caipira agil automacao front end seleniumCaipira agil automacao front end selenium
Caipira agil automacao front end seleniumQualister
 
Palestra sobre automação de testes em APIs Rest com Rest-Assured
Palestra sobre automação de testes em APIs Rest com Rest-AssuredPalestra sobre automação de testes em APIs Rest com Rest-Assured
Palestra sobre automação de testes em APIs Rest com Rest-AssuredJúlio de Lima
 
Teste software metodos metodologia ageis agil agile testing
Teste software metodos metodologia ageis agil agile testingTeste software metodos metodologia ageis agil agile testing
Teste software metodos metodologia ageis agil agile testingQualister
 
Como testar aplicativos ios e android
Como testar aplicativos ios e androidComo testar aplicativos ios e android
Como testar aplicativos ios e androidQualister
 
Testes performance nuvem com j meter e blazemeter
Testes performance nuvem com j meter e blazemeterTestes performance nuvem com j meter e blazemeter
Testes performance nuvem com j meter e blazemeterQualister
 
Mini curso de testes ágeis
Mini curso de testes ágeisMini curso de testes ágeis
Mini curso de testes ágeisQualister
 
Teste performance carga stress jmeter
Teste performance carga stress jmeterTeste performance carga stress jmeter
Teste performance carga stress jmeterCristiano Caetano
 
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e WebdriverJúlio de Lima
 
Juntando para multiplicar
Juntando para multiplicarJuntando para multiplicar
Juntando para multiplicarQualister
 
[ScrumDay2020] A evolução da responsabilidade em testes
[ScrumDay2020] A evolução da responsabilidade em testes[ScrumDay2020] A evolução da responsabilidade em testes
[ScrumDay2020] A evolução da responsabilidade em testesJúlio de Lima
 
Perspectivas em teste de software
Perspectivas em teste de softwarePerspectivas em teste de software
Perspectivas em teste de softwareQualister
 
Automacao testes automatizados
Automacao testes automatizadosAutomacao testes automatizados
Automacao testes automatizadosCristiano Caetano
 
Medindo a performance de aplicações web com JMeter
Medindo a performance de aplicações web com JMeterMedindo a performance de aplicações web com JMeter
Medindo a performance de aplicações web com JMeterJúlio de Lima
 
Testes em Web Services - conceitos e ferramentas
Testes em Web Services - conceitos e ferramentasTestes em Web Services - conceitos e ferramentas
Testes em Web Services - conceitos e ferramentasQualister
 
Palestra Automação de Testes em Dispositivos Móveis na Nuvem (BRATESTE2013)
Palestra Automação de Testes em Dispositivos Móveis na Nuvem (BRATESTE2013)Palestra Automação de Testes em Dispositivos Móveis na Nuvem (BRATESTE2013)
Palestra Automação de Testes em Dispositivos Móveis na Nuvem (BRATESTE2013)Júlio de Lima
 
[TICNOVA2015] Palestra sobre Automação de Testes
[TICNOVA2015] Palestra sobre Automação de Testes[TICNOVA2015] Palestra sobre Automação de Testes
[TICNOVA2015] Palestra sobre Automação de TestesJúlio de Lima
 

Mais procurados (20)

Teste de performance na nuvem com JMeter e BlazeMeter TDC2014
Teste de performance na nuvem com JMeter e BlazeMeter TDC2014Teste de performance na nuvem com JMeter e BlazeMeter TDC2014
Teste de performance na nuvem com JMeter e BlazeMeter TDC2014
 
Mindset de QA em Diferentes Contextos
Mindset de QA em Diferentes ContextosMindset de QA em Diferentes Contextos
Mindset de QA em Diferentes Contextos
 
DEV-OPS para teste de software
DEV-OPS para teste de softwareDEV-OPS para teste de software
DEV-OPS para teste de software
 
Agile testing
Agile testingAgile testing
Agile testing
 
Caipira agil automacao front end selenium
Caipira agil automacao front end seleniumCaipira agil automacao front end selenium
Caipira agil automacao front end selenium
 
Palestra sobre automação de testes em APIs Rest com Rest-Assured
Palestra sobre automação de testes em APIs Rest com Rest-AssuredPalestra sobre automação de testes em APIs Rest com Rest-Assured
Palestra sobre automação de testes em APIs Rest com Rest-Assured
 
Teste software metodos metodologia ageis agil agile testing
Teste software metodos metodologia ageis agil agile testingTeste software metodos metodologia ageis agil agile testing
Teste software metodos metodologia ageis agil agile testing
 
Como testar aplicativos ios e android
Como testar aplicativos ios e androidComo testar aplicativos ios e android
Como testar aplicativos ios e android
 
Testes performance nuvem com j meter e blazemeter
Testes performance nuvem com j meter e blazemeterTestes performance nuvem com j meter e blazemeter
Testes performance nuvem com j meter e blazemeter
 
Mini curso de testes ágeis
Mini curso de testes ágeisMini curso de testes ágeis
Mini curso de testes ágeis
 
Teste performance carga stress jmeter
Teste performance carga stress jmeterTeste performance carga stress jmeter
Teste performance carga stress jmeter
 
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
 
Juntando para multiplicar
Juntando para multiplicarJuntando para multiplicar
Juntando para multiplicar
 
[ScrumDay2020] A evolução da responsabilidade em testes
[ScrumDay2020] A evolução da responsabilidade em testes[ScrumDay2020] A evolução da responsabilidade em testes
[ScrumDay2020] A evolução da responsabilidade em testes
 
Perspectivas em teste de software
Perspectivas em teste de softwarePerspectivas em teste de software
Perspectivas em teste de software
 
Automacao testes automatizados
Automacao testes automatizadosAutomacao testes automatizados
Automacao testes automatizados
 
Medindo a performance de aplicações web com JMeter
Medindo a performance de aplicações web com JMeterMedindo a performance de aplicações web com JMeter
Medindo a performance de aplicações web com JMeter
 
Testes em Web Services - conceitos e ferramentas
Testes em Web Services - conceitos e ferramentasTestes em Web Services - conceitos e ferramentas
Testes em Web Services - conceitos e ferramentas
 
Palestra Automação de Testes em Dispositivos Móveis na Nuvem (BRATESTE2013)
Palestra Automação de Testes em Dispositivos Móveis na Nuvem (BRATESTE2013)Palestra Automação de Testes em Dispositivos Móveis na Nuvem (BRATESTE2013)
Palestra Automação de Testes em Dispositivos Móveis na Nuvem (BRATESTE2013)
 
[TICNOVA2015] Palestra sobre Automação de Testes
[TICNOVA2015] Palestra sobre Automação de Testes[TICNOVA2015] Palestra sobre Automação de Testes
[TICNOVA2015] Palestra sobre Automação de Testes
 

Destaque

Mi materia favorita♥
Mi   materia   favorita♥Mi   materia   favorita♥
Mi materia favorita♥Kerly lisseth
 
TDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredTDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredJúlio de Lima
 
DevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a QualidadeDevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a QualidadeKamilla Queiroz Xavier
 
Com fer uns bunyols de quaresma
Com fer uns bunyols de quaresmaCom fer uns bunyols de quaresma
Com fer uns bunyols de quaresmajvidalialcover
 
Hypothesis ORCID presentation
Hypothesis ORCID presentationHypothesis ORCID presentation
Hypothesis ORCID presentationORCID, Inc
 
Tipos de contenedores
Tipos de contenedoresTipos de contenedores
Tipos de contenedoresastrid2014
 
Lightning Talk Session - arXiv (S. Warner)
Lightning Talk Session - arXiv (S. Warner)Lightning Talk Session - arXiv (S. Warner)
Lightning Talk Session - arXiv (S. Warner)ORCID, Inc
 
5 years. voc. weather clothes
5 years. voc. weather clothes5 years. voc. weather clothes
5 years. voc. weather clothesjvidalialcover
 
l'entusiasme dels cinc anys
l'entusiasme dels cinc anysl'entusiasme dels cinc anys
l'entusiasme dels cinc anysjvidalialcover
 
Soal seleksi stis 2015 2016 mate-matika
Soal seleksi stis 2015 2016 mate-matikaSoal seleksi stis 2015 2016 mate-matika
Soal seleksi stis 2015 2016 mate-matikaAri Saputra
 

Destaque (15)

Hoja de vida
Hoja de vidaHoja de vida
Hoja de vida
 
Guia#1 Mantenimiento
Guia#1 MantenimientoGuia#1 Mantenimiento
Guia#1 Mantenimiento
 
Mi materia favorita♥
Mi   materia   favorita♥Mi   materia   favorita♥
Mi materia favorita♥
 
TDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredTDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-Assured
 
DevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a QualidadeDevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a Qualidade
 
Com fer uns bunyols de quaresma
Com fer uns bunyols de quaresmaCom fer uns bunyols de quaresma
Com fer uns bunyols de quaresma
 
Hypothesis ORCID presentation
Hypothesis ORCID presentationHypothesis ORCID presentation
Hypothesis ORCID presentation
 
Tipos de contenedores
Tipos de contenedoresTipos de contenedores
Tipos de contenedores
 
Lightning Talk Session - arXiv (S. Warner)
Lightning Talk Session - arXiv (S. Warner)Lightning Talk Session - arXiv (S. Warner)
Lightning Talk Session - arXiv (S. Warner)
 
5 years. voc. weather clothes
5 years. voc. weather clothes5 years. voc. weather clothes
5 years. voc. weather clothes
 
l'entusiasme dels cinc anys
l'entusiasme dels cinc anysl'entusiasme dels cinc anys
l'entusiasme dels cinc anys
 
Magnetom flash 45
Magnetom flash 45Magnetom flash 45
Magnetom flash 45
 
la festa de carnaval
la festa de carnavalla festa de carnaval
la festa de carnaval
 
Neuroimaging teddy
Neuroimaging teddyNeuroimaging teddy
Neuroimaging teddy
 
Soal seleksi stis 2015 2016 mate-matika
Soal seleksi stis 2015 2016 mate-matikaSoal seleksi stis 2015 2016 mate-matika
Soal seleksi stis 2015 2016 mate-matika
 

Semelhante a BDD automação

Automação de testes funcionais com selenium webdriver
Automação de testes funcionais com selenium webdriverAutomação de testes funcionais com selenium webdriver
Automação de testes funcionais com selenium webdriverQualister
 
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driverJúlio de Lima
 
Automacao de testes mitos e verdades
Automacao de testes mitos e verdadesAutomacao de testes mitos e verdades
Automacao de testes mitos e verdadesCristiano Caetano
 
Agile Testing
Agile TestingAgile Testing
Agile TestingGTS-CE
 
Automação de testes: Teoria e Prática (SENAI) - Qualister
Automação de testes: Teoria e Prática (SENAI) - QualisterAutomação de testes: Teoria e Prática (SENAI) - Qualister
Automação de testes: Teoria e Prática (SENAI) - QualisterCristiano Caetano
 
Automação de Teste - BRATESTE 2010
Automação de Teste - BRATESTE 2010Automação de Teste - BRATESTE 2010
Automação de Teste - BRATESTE 2010Elias Nogueira
 
Maturidade em automação de testes
Maturidade em automação de testesMaturidade em automação de testes
Maturidade em automação de testesCristiano Caetano
 
Introdução a testes de software utilizando selenium
Introdução a testes de software utilizando seleniumIntrodução a testes de software utilizando selenium
Introdução a testes de software utilizando seleniumSandy Maciel
 
Melhorando a qualidade do software com testes de ponta a-ponta
Melhorando a qualidade do software com testes de ponta a-pontaMelhorando a qualidade do software com testes de ponta a-ponta
Melhorando a qualidade do software com testes de ponta a-pontaGuilherme Cardoso
 
Tecnicas de projeto design especificacao modelagem de casos de testes
Tecnicas de projeto design especificacao modelagem de casos de testesTecnicas de projeto design especificacao modelagem de casos de testes
Tecnicas de projeto design especificacao modelagem de casos de testesCristiano Caetano
 
Qualidade de Software
Qualidade de SoftwareQualidade de Software
Qualidade de SoftwareQualister
 
Testes em métodos ágeis
Testes em métodos ágeisTestes em métodos ágeis
Testes em métodos ágeisQualister
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Tchelinux
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Igor Abade
 
Agile Testing - entregando valor do início a fim
Agile Testing - entregando valor do início a fimAgile Testing - entregando valor do início a fim
Agile Testing - entregando valor do início a fimElias Nogueira
 
TDC 2011 Automaçãode testes com BDD e ATDD
TDC 2011 Automaçãode testes com BDD e ATDDTDC 2011 Automaçãode testes com BDD e ATDD
TDC 2011 Automaçãode testes com BDD e ATDDCristiano Caetano
 
Automação de testes BDD e ATDD
Automação de testes BDD e ATDDAutomação de testes BDD e ATDD
Automação de testes BDD e ATDDQualister
 
ALM - Testes Manuais no Microsoft Test Manager
ALM - Testes Manuais no Microsoft Test ManagerALM - Testes Manuais no Microsoft Test Manager
ALM - Testes Manuais no Microsoft Test ManagerAlan Carlos
 
A Carreira de Desenvolvedor: do Jr ao Sênior
A Carreira de Desenvolvedor: do Jr ao SêniorA Carreira de Desenvolvedor: do Jr ao Sênior
A Carreira de Desenvolvedor: do Jr ao SêniorMarcos Pereira
 

Semelhante a BDD automação (20)

Automação de testes funcionais com selenium webdriver
Automação de testes funcionais com selenium webdriverAutomação de testes funcionais com selenium webdriver
Automação de testes funcionais com selenium webdriver
 
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
 
Automacao de testes mitos e verdades
Automacao de testes mitos e verdadesAutomacao de testes mitos e verdades
Automacao de testes mitos e verdades
 
Agile Testing
Agile TestingAgile Testing
Agile Testing
 
Automação de testes: Teoria e Prática (SENAI) - Qualister
Automação de testes: Teoria e Prática (SENAI) - QualisterAutomação de testes: Teoria e Prática (SENAI) - Qualister
Automação de testes: Teoria e Prática (SENAI) - Qualister
 
Automação de Teste - BRATESTE 2010
Automação de Teste - BRATESTE 2010Automação de Teste - BRATESTE 2010
Automação de Teste - BRATESTE 2010
 
Maturidade em automação de testes
Maturidade em automação de testesMaturidade em automação de testes
Maturidade em automação de testes
 
Introdução a testes de software utilizando selenium
Introdução a testes de software utilizando seleniumIntrodução a testes de software utilizando selenium
Introdução a testes de software utilizando selenium
 
Melhorando a qualidade do software com testes de ponta a-ponta
Melhorando a qualidade do software com testes de ponta a-pontaMelhorando a qualidade do software com testes de ponta a-ponta
Melhorando a qualidade do software com testes de ponta a-ponta
 
Tecnicas de projeto design especificacao modelagem de casos de testes
Tecnicas de projeto design especificacao modelagem de casos de testesTecnicas de projeto design especificacao modelagem de casos de testes
Tecnicas de projeto design especificacao modelagem de casos de testes
 
Qualidade de Software
Qualidade de SoftwareQualidade de Software
Qualidade de Software
 
Testes em métodos ágeis
Testes em métodos ágeisTestes em métodos ágeis
Testes em métodos ágeis
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes.
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
 
Agile Testing - entregando valor do início a fim
Agile Testing - entregando valor do início a fimAgile Testing - entregando valor do início a fim
Agile Testing - entregando valor do início a fim
 
TDC 2011 Automaçãode testes com BDD e ATDD
TDC 2011 Automaçãode testes com BDD e ATDDTDC 2011 Automaçãode testes com BDD e ATDD
TDC 2011 Automaçãode testes com BDD e ATDD
 
Automação de testes BDD e ATDD
Automação de testes BDD e ATDDAutomação de testes BDD e ATDD
Automação de testes BDD e ATDD
 
Potencializando a qualidade de código
Potencializando a qualidade de códigoPotencializando a qualidade de código
Potencializando a qualidade de código
 
ALM - Testes Manuais no Microsoft Test Manager
ALM - Testes Manuais no Microsoft Test ManagerALM - Testes Manuais no Microsoft Test Manager
ALM - Testes Manuais no Microsoft Test Manager
 
A Carreira de Desenvolvedor: do Jr ao Sênior
A Carreira de Desenvolvedor: do Jr ao SêniorA Carreira de Desenvolvedor: do Jr ao Sênior
A Carreira de Desenvolvedor: do Jr ao Sênior
 

Mais de Júlio de Lima

[ATC2021] Distribuição de Testes em Diferentes Camadas
[ATC2021] Distribuição de Testes em Diferentes Camadas[ATC2021] Distribuição de Testes em Diferentes Camadas
[ATC2021] Distribuição de Testes em Diferentes CamadasJúlio de Lima
 
ALTER FACE Test Heuristic
ALTER FACE Test HeuristicALTER FACE Test Heuristic
ALTER FACE Test HeuristicJúlio de Lima
 
Reducing the scope of load test analysis (STAREast 2020)
Reducing the scope of load test analysis (STAREast 2020)Reducing the scope of load test analysis (STAREast 2020)
Reducing the scope of load test analysis (STAREast 2020)Júlio de Lima
 
[TDC2019] Inteligência Artificial e Testes in a Nutshell
[TDC2019] Inteligência Artificial e Testes  in a Nutshell[TDC2019] Inteligência Artificial e Testes  in a Nutshell
[TDC2019] Inteligência Artificial e Testes in a NutshellJúlio de Lima
 
[MoT SP #1] PRISMA para Testes Baseados em Risco
[MoT SP #1] PRISMA para Testes Baseados em Risco[MoT SP #1] PRISMA para Testes Baseados em Risco
[MoT SP #1] PRISMA para Testes Baseados em RiscoJúlio de Lima
 
[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvemJúlio de Lima
 
[7Masters Aug, 2018] Escolhas durante automação de testes de API
[7Masters Aug, 2018] Escolhas durante automação de testes de API[7Masters Aug, 2018] Escolhas durante automação de testes de API
[7Masters Aug, 2018] Escolhas durante automação de testes de APIJúlio de Lima
 
[Front in Sampa 2018] Desenvolvendo como QAs
[Front in Sampa 2018] Desenvolvendo como QAs[Front in Sampa 2018] Desenvolvendo como QAs
[Front in Sampa 2018] Desenvolvendo como QAsJúlio de Lima
 
Mindset do QA em diferentes contextos
Mindset do QA em diferentes contextosMindset do QA em diferentes contextos
Mindset do QA em diferentes contextosJúlio de Lima
 
[QANinjaConf2017] Testes de Regressão Visual com Galen Framework
[QANinjaConf2017] Testes de Regressão Visual com Galen Framework[QANinjaConf2017] Testes de Regressão Visual com Galen Framework
[QANinjaConf2017] Testes de Regressão Visual com Galen FrameworkJúlio de Lima
 
[PHPConference 2016] Criando Mocks com Prophecy
[PHPConference 2016] Criando Mocks com Prophecy[PHPConference 2016] Criando Mocks com Prophecy
[PHPConference 2016] Criando Mocks com ProphecyJúlio de Lima
 
[QANinjaConference] Carreira em Testes: Ainda vale a pena?
[QANinjaConference] Carreira em Testes: Ainda vale a pena?[QANinjaConference] Carreira em Testes: Ainda vale a pena?
[QANinjaConference] Carreira em Testes: Ainda vale a pena?Júlio de Lima
 
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)Júlio de Lima
 
[UNIP2015] Testando a Performance de Aplicações Web com JMeter
[UNIP2015] Testando a Performance de Aplicações Web com JMeter[UNIP2015] Testando a Performance de Aplicações Web com JMeter
[UNIP2015] Testando a Performance de Aplicações Web com JMeterJúlio de Lima
 
Introdução à Automação de Testes Funcionais (IPASGO, Goiânia)
Introdução à Automação de Testes Funcionais (IPASGO, Goiânia)Introdução à Automação de Testes Funcionais (IPASGO, Goiânia)
Introdução à Automação de Testes Funcionais (IPASGO, Goiânia)Júlio de Lima
 
Palestra Juntando para Multiplicar
Palestra Juntando para MultiplicarPalestra Juntando para Multiplicar
Palestra Juntando para MultiplicarJúlio de Lima
 
Faculdade Pitagoras 2014: Palestra sobre Fundamentos e Carreira em Teste de S...
Faculdade Pitagoras 2014: Palestra sobre Fundamentos e Carreira em Teste de S...Faculdade Pitagoras 2014: Palestra sobre Fundamentos e Carreira em Teste de S...
Faculdade Pitagoras 2014: Palestra sobre Fundamentos e Carreira em Teste de S...Júlio de Lima
 
Testes em WebServices: Conceitos e Ferramentas
Testes em WebServices: Conceitos e FerramentasTestes em WebServices: Conceitos e Ferramentas
Testes em WebServices: Conceitos e FerramentasJúlio de Lima
 
Testes de Performance na Nuvem | TDC2014
Testes de Performance na Nuvem | TDC2014Testes de Performance na Nuvem | TDC2014
Testes de Performance na Nuvem | TDC2014Júlio de Lima
 

Mais de Júlio de Lima (19)

[ATC2021] Distribuição de Testes em Diferentes Camadas
[ATC2021] Distribuição de Testes em Diferentes Camadas[ATC2021] Distribuição de Testes em Diferentes Camadas
[ATC2021] Distribuição de Testes em Diferentes Camadas
 
ALTER FACE Test Heuristic
ALTER FACE Test HeuristicALTER FACE Test Heuristic
ALTER FACE Test Heuristic
 
Reducing the scope of load test analysis (STAREast 2020)
Reducing the scope of load test analysis (STAREast 2020)Reducing the scope of load test analysis (STAREast 2020)
Reducing the scope of load test analysis (STAREast 2020)
 
[TDC2019] Inteligência Artificial e Testes in a Nutshell
[TDC2019] Inteligência Artificial e Testes  in a Nutshell[TDC2019] Inteligência Artificial e Testes  in a Nutshell
[TDC2019] Inteligência Artificial e Testes in a Nutshell
 
[MoT SP #1] PRISMA para Testes Baseados em Risco
[MoT SP #1] PRISMA para Testes Baseados em Risco[MoT SP #1] PRISMA para Testes Baseados em Risco
[MoT SP #1] PRISMA para Testes Baseados em Risco
 
[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem
 
[7Masters Aug, 2018] Escolhas durante automação de testes de API
[7Masters Aug, 2018] Escolhas durante automação de testes de API[7Masters Aug, 2018] Escolhas durante automação de testes de API
[7Masters Aug, 2018] Escolhas durante automação de testes de API
 
[Front in Sampa 2018] Desenvolvendo como QAs
[Front in Sampa 2018] Desenvolvendo como QAs[Front in Sampa 2018] Desenvolvendo como QAs
[Front in Sampa 2018] Desenvolvendo como QAs
 
Mindset do QA em diferentes contextos
Mindset do QA em diferentes contextosMindset do QA em diferentes contextos
Mindset do QA em diferentes contextos
 
[QANinjaConf2017] Testes de Regressão Visual com Galen Framework
[QANinjaConf2017] Testes de Regressão Visual com Galen Framework[QANinjaConf2017] Testes de Regressão Visual com Galen Framework
[QANinjaConf2017] Testes de Regressão Visual com Galen Framework
 
[PHPConference 2016] Criando Mocks com Prophecy
[PHPConference 2016] Criando Mocks com Prophecy[PHPConference 2016] Criando Mocks com Prophecy
[PHPConference 2016] Criando Mocks com Prophecy
 
[QANinjaConference] Carreira em Testes: Ainda vale a pena?
[QANinjaConference] Carreira em Testes: Ainda vale a pena?[QANinjaConference] Carreira em Testes: Ainda vale a pena?
[QANinjaConference] Carreira em Testes: Ainda vale a pena?
 
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
 
[UNIP2015] Testando a Performance de Aplicações Web com JMeter
[UNIP2015] Testando a Performance de Aplicações Web com JMeter[UNIP2015] Testando a Performance de Aplicações Web com JMeter
[UNIP2015] Testando a Performance de Aplicações Web com JMeter
 
Introdução à Automação de Testes Funcionais (IPASGO, Goiânia)
Introdução à Automação de Testes Funcionais (IPASGO, Goiânia)Introdução à Automação de Testes Funcionais (IPASGO, Goiânia)
Introdução à Automação de Testes Funcionais (IPASGO, Goiânia)
 
Palestra Juntando para Multiplicar
Palestra Juntando para MultiplicarPalestra Juntando para Multiplicar
Palestra Juntando para Multiplicar
 
Faculdade Pitagoras 2014: Palestra sobre Fundamentos e Carreira em Teste de S...
Faculdade Pitagoras 2014: Palestra sobre Fundamentos e Carreira em Teste de S...Faculdade Pitagoras 2014: Palestra sobre Fundamentos e Carreira em Teste de S...
Faculdade Pitagoras 2014: Palestra sobre Fundamentos e Carreira em Teste de S...
 
Testes em WebServices: Conceitos e Ferramentas
Testes em WebServices: Conceitos e FerramentasTestes em WebServices: Conceitos e Ferramentas
Testes em WebServices: Conceitos e Ferramentas
 
Testes de Performance na Nuvem | TDC2014
Testes de Performance na Nuvem | TDC2014Testes de Performance na Nuvem | TDC2014
Testes de Performance na Nuvem | TDC2014
 

BDD automação

  • 1. www.qualister.com.br (48) 4052-9536 / 9540 contato@qualister.com.br Automação de testes BDD usando Codeception
 
 por Júlio de Lima
 @juliodelimas
  • 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 (CTFL e CTAL-TM pelo ISTQB) e nacional (CBTS pela ALATS) relacionada a testes de software além de ser certificado na ferramenta SoapUI Pro pela SmartBear Software. Atualmente é consultor de automação de testes e instrutor na Qualister e é professor de disciplina de teste de software em cursos de pós- graduação no Paraná e em Santa Catarina. julio.lima@qualister.com.br twitter.com/juliodelimas br.linkedin.com/in/juliodelimas goldtips.by/juliodelimas
  • 3. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco BDD: Desenvolvimento Dirigido por Comportamentos 3 BDD: Desenvolvimento Dirigido por Comportamentos Analisando as empresas brasileiras usando a regra de Paretto, apenas 20% usam documentação com base em UML, as outras 80% documentam o software com linguagem comum, e-mails, verbalmente ou mesmo papel de pão.
  • 4. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco BDD: Desenvolvimento Dirigido por Comportamentos 4 Um exemplo de descrição do software por e-mail "Olá José, aqui é a Maria, preciso que altere nosso sistema. Quero ter a possibilidade de registrar as movimentações de entrada e saída (no máximo 100 reais) de nosso caixa."
  • 5. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco BDD: Desenvolvimento Dirigido por Comportamentos 5 Agora, o mesmo exemplo usando BDD Funcionalidade: Gerenciar Movimentações Sendo o administrador de uma loja Posso gerenciar movimentações Para que possa ver, de forma simples, as entradas e saídas de valores Cenário: Gerando uma movimentação de entrada Dado que eu esteja autenticado como administrador E que eu tenha acessado o menu "Movimentações" E clicado em "Nova movimentação” para inserir uma movimentação Quando eu informar os dados: |tipo|valor|itens| |Entrada|500,00|Almoçar| E clicar em "Gravar" Então verei a mensagem "Sucesso ao inserir a movimentação"
  • 6. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco BDD: Desenvolvimento Dirigido por Comportamentos 6 Cenário: Gerando uma movimentação de saída dentro do valor limite Dado que eu esteja autenticado como administrador E que eu tenha acessado o menu "Movimentações" E clicado em "Nova movimentação” para inserir uma movimentação Quando eu informar os dados: |tipo|valor|itens| |Saída|100,00|Almoçar| E clicar em "Gravar" Então verei a mensagem "Sucesso ao inserir a movimentação" Cenário: Gerando uma movimentação de saída fora do valor limite Dado que eu esteja autenticado como administrador E que eu tenha acessado o menu "Movimentações" E clicado em "Nova movimentação” para inserir uma movimentação Quando eu informar os dados: |tipo|valor|itens| |Saída|100,01|Almoçar| E clicar em "Gravar" Então verei a mensagem "São permitidas apenas movimentações de saída de até 100 reais"
  • 7. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Testes manuais e suas limitações 7 Os testes manuais servem para testar, sem o uso de ferramentas automatizadas, se o software atende as necessidades do cliente e se funciona como esperado. Clientes podem ser: O usuário final, os desenvolvedores, as empresas que consumirão nossa API, entre outros.
  • 8. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Testes manuais e suas limitações 8 Os testes tendem a serem trabalhosos, custosos, demorados, repetitivos e muitas vezes inviáveis. Exige que o testador tenha as habilidades necessárias para atuar nestas áreas e destreza para saber priorizar os testes que deverão ser executados, pois na maioria das vezes não dá tempo para testar tudo.
  • 9. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Testes manuais e suas limitações 9 Os testes tendem a serem trabalhosos, custosos, demorados, repetitivos e muitas vezes inviáveis. Exige que o testador tenha as habilidades necessárias para atuar nestas áreas e destreza para saber priorizar os testes que deverão ser executados, pois na maioria das vezes não dá tempo para testar tudo.
  • 10. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Testes automatizados para ajudar a remover limitações 10 Testes automatizados são scripts programados para avaliar os softwares, eles complementam o trabalho manual. Nos traz uma série de benefícios, como: Segurança mesmo após fazer alterações drásticas no sistema, redução de debugs no código, velocidade na liberação de versões, economia no tempo dos testadores manuais.
  • 11. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Testes automatizados para ajudar a remover limitações 11 Vejamos alguns frameworks open-source usados para automatizar testes
  • 12. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Testes automatizados para ajudar a remover limitações 12 PHPUnit Usado para automatizar testes de unidade em PHP
  • 13. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Testes automatizados para ajudar a remover limitações 13 class PedidoTest extends PHPUnit_Framework_TestCase { /** * @test * @author Julio */ public function aoAdicionarProdutoAListaDeveraConterApenas1Item() { // Arrange $pedido = new Pedido(); $produto = $this->getMockBuilder("IProduto") ->setConstructorArgs( array(1, "PlayStation", 5, 999.99) ) ->getMock(); // Act $pedido->addItemPedido($produto, 2); $pedidoitens = $pedido->getPedidoItens(); // Assert $this->assertCount(1, $pedidoitens); $this->assertEquals(array($produto, 2), $pedidoitens[0]); } }
  • 14. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Testes automatizados para ajudar a remover limitações 14 PHPUnit com Guzzle Guzzle é um framework usado para fazer requisições à APIs Rest
  • 15. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Testes automatizados para ajudar a remover limitações 15 class PedidoAPITest extends PHPUnit_Framework_TestCase { /** * @test * @author Julio */ public function testAcessarRootEntaoReceber200SucessoECodigo() { // Arrange $client = new GuzzleHttpClient( ["base_uri" => "http://localhost:8888/qualister-testing/api"] ); // Act $resposta = $this->client->get("/", ['auth' => ['phptesting', '123']]); // Assert $this->assertEquals(200, $resposta->getStatusCode()); $body = json_decode($resposta->getBody(), true); $this->assertEquals("gnitsetphp", $body["data"]["codigo"]); } }
  • 16. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Testes automatizados para ajudar a remover limitações 16 PHPUnit com Selenium WebDriver Selenium WebDriver é um framework usado para simular interações com aplicações web em um browser real ou headless
  • 17. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Testes automatizados para ajudar a remover limitações 17 class PedidoWebTest extends PHPUnit_Framework_TestCase { /** * @test * @author Julio */ public function acessarPaginaInicialValidarMensagensDeAlerta() { // Arrange $this->driver = RemoteWebDriver::create("http://localhost: 4444/wd/hub", DesiredCapabilities::firefox()); $this->driver->manage()->window()->maximize(); $this->driver->get("http://localhost:8888/qualister-php- testing/web/"); // Act $this->driver->findElement(WebDriverBy::id("order"))->click(); $this->driver->switchTo()->alert()->accept(); $texto = $this->driver->switchTo()->alert()->getText(); $this->driver->switchTo()->alert()->accept(); // Arrange $this->assertContains("Faça login antes", $texto); } }
  • 18. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Muitos frameworks e uma curva de aprendizagem maior 18 Existem muitos frameworks PHP utilizados para automatizar testes, mas cada um deles tem suas características e uma forma específica de escrita. Todos eles usam a forma de organização dos testes em linguagem técnica e não de negócios.
  • 19. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Codeception e sua DSL Jedi 19 Codeception é um framework criado para facilitar a automação de testes em todas as camadas de um software, escrevendo seguindo o padrão BDD. Ele possui um DSL própria, muito simples de se compreender.
  • 20. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Codeception e sua DSL Jedi 20 <?php $I = new AcceptanceTester($scenario); $I->am('Administrador de uma loja'); $I->wantTo('gerenciar movimentações'); $I->lookForwardTo('Ver, de forma simples, as entradas e saídas de valores'); $I->amOnPage('/'); $I->fillField('usuariologin', 'teste'); $I->fillField('usuariosenha', '123'); $I->click('Entrar'); $I->click('Movimentações'); $I->click('Nova movimentação'); $I->selectOption("select", "Entrada"); $I->fillField('movimentacaovalor', '500,00'); $I->fillField('movimentacaoitens', 'Almoçar'); $I->click('Gravar'); $I->see('Sucesso ao inserir a movimentação'); ?>
  • 21. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Codeception e sua DSL Jedi 21 Para usar o Codeception basta baixar o arquivo codecept.phar e adiciona-lo na raiz do diretório do projeto, no nosso caso, "PHPConferenceBr". E então rodar o comando "php codecept.phar bootstrap" para criar a arquitetura inicial.
  • 22. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Automatizando testes de unidade 22 Automatizando testes de unidade com Codeception
  • 23. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Automatizando testes de unidade 23 1. Execute o comando "php codecept.phar generate:test unit Pedido" para criar uma classe de teste de unidade chamada "PedidoTest.php";
 2. Adicione os requires às classes que serão testadas: require './src/Pedido.php'; require './src/PedidoServicos.php';
 3. Adicione os comandos abaixo no PedidoTest.php contido na pasta tests/unit:
  • 24. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Automatizando testes de unidade 24 public function testAdicionarProdutoNoPedidoValidarQueFoiAdicionado() { // Arrange $pedido = new Pedido(); $pedidoServicos = CodeceptionUtil Stub::make('PedidoServicos', ['salvar' => 'Sucesso']); // Act $resposta = $pedidoServicos->salvar($pedido); // Assert $this->tester->assertEquals('Sucesso', $resposta); } 4. Execute-o digitando o comando "php codecept.phar run unit".
  • 25. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Automatizando testes de API 25 Automatizando testes de API com Codeception
  • 26. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Automatizando testes de API 26 1. Execute o comando "php codecept.phar generate:suite api" para gerar a suite de API 2. Adicione as configurações dos testes de API no arquivo api.suite.yml: class_name: ApiTester modules: enabled: - REST: url: 'http://localhost:8888/ qualister-php-testing/api' depends: PhpBrowser 3. Execute o comando "php codecept.phar build" para que o projeto seja atualizado e construídas as dependências referentes à suite de APIs 4. Execute o comando "php codecept.phar generate:cept api NovoPedido" para criar um teste de API
  • 27. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Automatizando testes de API 27 5. Adicione os comandos abaixo no NovoPedidoCept.php contido na pasta tests/api: <?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']); ?> 6. Execute-o digitando o comando "php codecept.phar run api -- steps".
  • 28. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Automatizando testes Aceitação Web 28 Automatizando testes de Aceitação Web com Codeception
  • 29. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Automatizando testes Aceitação Web 29 1. Execute o comando "php codecept.phar generate:cept acceptance NovoPedido" para criar um teste de aceitação web 2. Adicione as configurações dos testes de Aceitação no arquivo acceptance.suite.yml: class_name: AcceptanceTester modules: enabled: - PhpBrowser: url: 'http://localhost:8888/ qualister-php-testing/web' - HelperAcceptance
  • 30. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Automatizando testes Aceitação Web 30 3. Adicione os comandos abaixo no NovoPedidoCept.php contido na pasta tests/acceptance: <?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'); ?> 4. Execute-o digitando o comando "php codecept.phar run acceptance --steps".
  • 31. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Automatizando testes Aceitação Web 31 É possível também executar os testes utilizando browsers reais, ao invés de utilizar testes com browsers headless, neste caso, usa-se o Selenium WebDriver para executar tal ação, veja os passos a seguir.
  • 32. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Automatizando testes Aceitação Web 32 1. Baixe o Selenium Server Standalone em https://selenium- release.storage.googleapis.com/index.html?path=2.46/ e mova-o para a pasta "bin" dentro do projeto
 
 2. Starte o Selenium Server usando o comando "java -jar bin/selenium- server-standalone-2.46.0.jar"
 3. Altera as configurações dos testes de Aceitação no arquivo acceptance.suite.yml: class_name: AcceptanceTester modules: enabled: - WebDriver: url: 'http://localhost:8888/qualister-php- testing/web' browser: firefox window_size: maximize - HelperAcceptance
 4. Execute-o digitando o comando "php codecept.phar run acceptance -- steps".
  • 33. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Executando todos os testes e gerando relatórios 33 Executando todos os testes e gerando relatórios: php codecept.phar run --html
  • 34. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco 34 Links interessantes
  • 35. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco 35 • https://github.com/sebastianbergmann/phpunit • https://github.com/guzzle/guzzle • https://github.com/facebook/php-webdriver • http://codeception.com/ • http://www.qualister.com.br/videos/tdc2015- hands-on-de-automacao-de-testes-de-unidade- api-e-aceitacao-com-codeception Referências
  • 36. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco 36 PHPSP + Pub
  • 37. www.qualister.com.brwww.qualister.com.br Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco 37