Testes Automatizados No Cakephp

Preview:

DESCRIPTION

Uma introdução a testes automatizados em CakePHP

Citation preview

PRINCÍPIOS DE AUTOMAÇÃO DE TESTE DE SOFTWARE UTILIZANDO O FRAMEWORK CAKEPHP

JOÃO JOSÉ PEDRINI

Testes automatizados no cakephp

João José Pedrini

Desenvolvedor PHP a 4 anosDesenvolvedor CakePHP a 2 anosPseudo-Formado em Computação na UEL –

Londrina ParanáPesquisador CNPq de Metodologias de

DesenvolvimentosFundador da usoSim e souÁgilUm dos escritores do blog kiss.souagil.com.brjoaojosepedrini@gmail.com

Programação

Onde está inserido o Testes AutomatizadosOs tipos de testes automatizadosPrincípios Framework de teste do CakePHPConceitos importantesMaiores dificuldadesTestando o MVCCakeAutoTestPerguntas

Onde está inserido?

Metodologias Rígidas

Metodologias Ágeis

Teste de Software

É uma área muito vasta e com bastante conteúdo

Há quem diga que é importantíssimo a permanência de pelo menos um profissional de teste numa equipe de desenvolvimento

Nem sempre é um desenvolvedor (na maioria das vezes não é)

Automação de Testes

Programados

Princípios

Princípios

Uma condição por Teste

Crie um teste para cada condição que existe no seu método

Não modifique o sistema

Não modifique seu sistema para facilitar o seu teste

Mas há exceção

Sistemas facilmente testáveis normalmente demonstram que possuem uma boa arquitetura

Teste conceitos separadamente

Muito comum nos framework MVC

Não entender realmente o que a classe ou método faz

Comunique a intenção do Teste

Teste, antes de tudo, é documentação

Ela será a melhor base para saber o que o sistema realmente faz

Minimize código não testado

Código não testado quer dizer que pode estar errado

Code Coverage existe para isto

Mas veja o custo benefício

Framework de Teste do CakePHP

Testes Unitários

Testes de Integração

Testes de Aceitação

SimpleTest

Asserções

TestSuite

WebTestCase

Objeto Dublê (Mock)

Asserções

Métodos de verificação

Base dos testes

Suíte de Testes

Estrutura básica para realização dos testes automatizados

Responsável por gerenciar a execução dos teste

MockObject

Dublê de Objetos

Facilita a remoção de dependência de outras classes

Permite testar um único conceito por vez

Muito usado em TDD para criar testes “dependentes” sem a necessidade de criar novas classes

Em alguns casos, um método de uma classe é dependente de outras

Isto dificulta a manter o encapsulamento dos testes

Mock elimina este problema

WebTestCase

Teste de aceitação do SimpleTest

Manipulação de ações via programação

“Um Navegador Programável”

Permite testar se o fluxo de uma aplicação esta correto

CakeTestSuite

Execução de teste via Browser

Execução de teste via Linha de Comando

Fixtures

Visualização da Cobertura de teste

TestAction

Execução pelo navegador

Execução pela linha de comando

Fixtures

É a garantia que o seu testes é repetível e independente

Reinicializa os dados a cada teste realizado

Maiores dificuldades

O principal motivo das pessoas sentirem dificuldades na hora de testar são

Testando Modelos

Dica de sempre: nunca acesse as funções do core do Model pelo Controller, crie funções próprias

Use e abuse dos Fixtures

Evite testar métodos do core do CakePHP, elas já estão testadas

MOSTRAR AO VIVO

Testando

CakeAutoTest