Escolar Documentos
Profissional Documentos
Cultura Documentos
Unochapec
Sumrio
Introduo
O que ?
Ciclo
Testes automatizados
Concluso
Teste de unidade
Sumrio
PHPUnit
O que ?
Objetivos
Instalao
Asseres
assertEquals
assertFalse
assertInstanceOf
assertCount
assertEmpty
assertNull
assertTrue
Sumrio
Exemplo prtico
Brainstorming
Referncias
Introduo
O que TDD?
Introduo
O que TDD?
Introduo
O que o TDD?
Introduo
Ciclo
Escrever o teste->Teste Falha->Escreve o programa->Teste passa->Refatora
Fonte: Computer World. Study: Buggy software costs users, vendors nearly 60b annually. http://www.computerworld.com/s/article/72245/Study_Buggy_software_
costs_users_vendors_nearly_60B_annually.
Testes automatizados
rpido,
logo
rodaramos
Testes automatizados
Testes automatizados
O que produtividade?
Concluso
Concluso
Concluso
Testar divertido, aumenta a qualidade do seu produto, e pode ainda ajud-lo a identificar
trechos de cdigo que foram mal escritos ou projetados;
Te livram vrias vezes da chatice do seu inimigo natural, o testador;
Testador
Programadores
Teste de unidade
Teste de unidade
Teste de unidade
Testes
automatizados
so
fundamentais
para
um
desenvolvimento de qualidade, sua existncia traz diversos
benefcios, como aumento da qualidade e a diminuio de
bugs em produo.
<?php
<?php
$componente
$componente==array();
array();
echo
echocount($componente).
count($componente).\n;
\n;
$componente[]
$componente[]=='elemento';
'elemento';
echo
echocount($componente).
count($componente).\n;
\n;
//Sadas:
//Sadas:
////00
//1
//1
?>
?>
<?php
<?php
$componente
$componente==array();
array();
echo
echocount($componente)
count($componente)==
==00?? ok
ok\n
\n: :no
nook
ok\n;
\n;
$componente[]
$componente[]=='elemento';
'elemento';
echo
echocount($componente)
count($componente)==
==11?? ok
ok\n
\n: :no
nook
ok\n;
\n;
//Sadas:
//Sadas:
////ok
ok
//ok
//ok
?>
?>
<?php
<?php
$componente
$componente==array();
array();
assertTrue(count($componente)
assertTrue(count($componente)==
==0);
0);
$componente[]
$componente[]=='elemento';
'elemento';
assertTrue(count($componente)
assertTrue(count($componente)==
==1);
1);
function
functionassertTrue($condicao)
assertTrue($condicao)
{{
ifif(!$condicao)
(!$condicao){{
throw
thrownew
newException('Assero
Exception('Asserofalhou.');
falhou.');
}}
}}
//Sadas:
//Sadas:...
...
PHPUnit
O que o PHPUnit?
PHPUnit
Objetivos
PHPUnit
Instalao
Asseres
Asseres
assertEquals
<?php
<?php
class
classIgualaTest
IgualaTestextends
extendsPHPUnit_Framework_TestCase
PHPUnit_Framework_TestCase
{{
public
publicfunction
functiontestFalha()
testFalha()
{{
$this->assertEquals(1,
$this->assertEquals(1,0);
0);
}}
}}
?>
?>
Asseres
assertFalse
<?php
<?php
class
classFalsoTest
FalsoTestextends
extendsPHPUnit_Framework_TestCase
PHPUnit_Framework_TestCase
{{
public
publicfunction
functiontestFalha()
testFalha()
{{
$this->assertFalse(TRUE);
$this->assertFalse(TRUE);
}}
}}
?>
?>
Asseres
assertInstanceOf
<?php
<?php
class
classInstanciaDeTest
InstanciaDeTestextends
extendsPHPUnit_Framework_TestCase
PHPUnit_Framework_TestCase
{{
public
publicfunction
functiontestFalha()
testFalha()
{{
$this->assertInstanceOf('RuntimeException',
$this->assertInstanceOf('RuntimeException',new
newException);
Exception);
}}
}}
?>
?>
Asseres
assertCount()
assertCount($contaEsperada,
$mensagem = ''])
$bateria[,
<?php
<?php
class
classContaTest
ContaTestextends
extendsPHPUnit_Framework_TestCase
PHPUnit_Framework_TestCase
{{
public
publicfunction
functiontestFalha()
testFalha()
{{
$this->assertCount(0,
$this->assertCount(0,array('foo'));
array('foo'));
}}
}}
?>
?>
string
Asseres
assertEmpty()
<?php
<?php
class
classVazioTest
VazioTestextends
extendsPHPUnit_Framework_TestCase
PHPUnit_Framework_TestCase
{{
public
publicfunction
functiontestFalha()
testFalha()
{{
$this->assertEmpty(array('foo'));
$this->assertEmpty(array('foo'));
}}
}}
?>
?>
Asseres
assertNull
<?php
<?php
class
classNuloTest
NuloTestextends
extendsPHPUnit_Framework_TestCase
PHPUnit_Framework_TestCase
{{
public
publicfunction
functiontestFalha()
testFalha()
{{
$this->assertNull('foo');
$this->assertNull('foo');
}}
}}
?>
?>
Asseres
assertTrue
<?php
<?php
class
classVerdadeiroTest
VerdadeiroTestextends
extendsPHPUnit_Framework_TestCase
PHPUnit_Framework_TestCase
{{
public
publicfunction
functiontestFalha()
testFalha()
{{
$this->assertTrue(FALSE);
$this->assertTrue(FALSE);
}}
}}
?>
?>
Asseres
Mais asseres:
http://phpunit.de/manual/3.7/pt_br/index.html
Exemplo prtico
I, unus, 1, (um)
V, quinque, 5 (cinco)
X, decem, 10 (dez)
L, quinquaginta, 50 (cinquenta)
Primeiro teste:
<?php
<?php
require_once
require_once'/usr/share/php/PHPUnit/TextUI/TestRunner.php';
'/usr/share/php/PHPUnit/TextUI/TestRunner.php';
require_once
require_once'ConversorDeNumeroRomano.php';
'ConversorDeNumeroRomano.php';
class
classNumerosRomanosTest
NumerosRomanosTestextends
extendsPHPUnit_Framework_TestCase
PHPUnit_Framework_TestCase{{
public
publicfunction
functiontestDeveEntenderOSimboloI()
testDeveEntenderOSimboloI(){{
$romano
$romano==new
newConversorDeNumeroRomano();
ConversorDeNumeroRomano();
$numero
$numero==$romano->converte("I");
$romano->converte("I");
}}
?>
?>
}}
$this->assertEquals(1,
$this->assertEquals(1,$numero);
$numero);
<?php
<?php
class
classConversorDeNumeroRomano
ConversorDeNumeroRomano{{
}}
}}
?>
?>
public
publicfunction
functionconverte($numeroEmRomano)
converte($numeroEmRomano){{
return
return1;
1;
}}
public
publicfunction
functiontestDeveEntenderOSimboloI()
testDeveEntenderOSimboloI(){{
$romano
$romano==new
newConversorDeNumeroRomano();
ConversorDeNumeroRomano();
$numero
$numero==$romano->converte("I");
$romano->converte("I");
}}
$this->assertEquals(1,
$this->assertEquals(1,$numero);
$numero);
public
publicfunction
functiontestDeveEntenderOSimboloV()
testDeveEntenderOSimboloV(){{
$romano
$romano==new
newConversorDeNumeroRomano();
ConversorDeNumeroRomano();
$numero
$numero==$romano->converte("V");
$romano->converte("V");
}}
$this->assertEquals(5,
$this->assertEquals(5,$numero);
$numero);
}}
}}
class
classConversorDeNumeroRomano
ConversorDeNumeroRomano{{
protected
protected$converteArray;
$converteArray;
public
function
public function__construct()
__construct()
{{
$this->converteArray
$this->converteArray==array('I'
array('I'=>
=>'1',
'1','V'
'V'=>
=>'5',
'5','X'
'X'=>
=>'10',
'10',
'L'
'L'=>
=>'50',
'50','C'
'C'=>
=>'100',
'100','D'
'D'=>
=>'500',
'500',
'M'
'M'=>
=>'1000');
'1000');
}}
}}
public
publicfunction
functionconverte($numeroEmRomano)
converte($numeroEmRomano){{
return
return$this->converteArray[$numeroEmRomano];
$this->converteArray[$numeroEmRomano];
}}
...
...
public
publicfunction
functiontestDeveEntenderOSimboloII()
testDeveEntenderOSimboloII(){{
$romano
$romano==new
newConversorDeNumeroRomano();
ConversorDeNumeroRomano();
$numero
=
$romano->converte("II");
$numero = $romano->converte("II");
}}
$this->assertEquals(2,
$this->assertEquals(2,$numero);
$numero);
public
publicfunction
functiontestDeveEntenderOSimboloIII()
testDeveEntenderOSimboloIII(){{
$romano
$romano==new
newConversorDeNumeroRomano();
ConversorDeNumeroRomano();
$numero
$numero==$romano->converte("III");
$romano->converte("III");
}}
$this->assertEquals(3,
$this->assertEquals(3,$numero);
$numero);
public
publicfunction
functionconverte($numeroEmRomano)
converte($numeroEmRomano){{
$acumulador
$acumulador==0;
0;
for($i
=
0;
$i
<
strlen($numeroEmRomano);
for($i = 0; $i < strlen($numeroEmRomano);$i++)
$i++){{
$acumulador
$acumulador+=
+=$this->converteArray[$numeroEmRomano[$i]];
$this->converteArray[$numeroEmRomano[$i]];
}}
return
return$acumulador;
$acumulador;
}}
...
...
public
publicfunction
functiontestDeveEntenderOSimboloIV()
testDeveEntenderOSimboloIV(){{
$romano
$romano==new
newConversorDeNumeroRomano();
ConversorDeNumeroRomano();
$numero
$numero==$romano->converte("IV");
$romano->converte("IV");
}}
$this->assertEquals(4,
$this->assertEquals(4,$numero);
$numero);
public
publicfunction
functiontestDeveEntenderOSimboloXI()
testDeveEntenderOSimboloXI(){{
$romano
$romano==new
newConversorDeNumeroRomano();
ConversorDeNumeroRomano();
$numero
=
$romano->converte("XI");
$numero = $romano->converte("XI");
}}
$this->assertEquals(11,
$this->assertEquals(11,$numero);
$numero);
Brainstorming
Referncias
http://phpunit.de/manual (2013);