Os melhores programadores cometem erros. A diferença entre bons programadores e maus programadores é que bons programadores podem encontrar tantos erros quanto possível através de testes. Quanto mais rápido você testar os bugs, mais rápido você os encontrará e mais barato será para encontrá-los e corrigi-los. Isso explica por que testar software pouco antes de ser lançado é tão problemático. A maioria dos bugs nunca é encontrada, e a correção dos bugs encontrados é tão alta que você precisa priorizar a correção apenas desses bugs, porque simplesmente não pode se dar ao luxo de consertar todos eles.
Testar com PHPUnit não é algo completamente diferente da abordagem que você está usando. Eles apenas têm métodos diferentes. A diferença entre os dois é que a verificação do comportamento correto do programa é feita por meio de um lote de trechos de código que podem ser testados automaticamente. Esses trechos de código são chamados de testes unitários. Nesta parte, primeiro realizamos testes automáticos com base no código de teste impresso. Suponha que queiramos testar o array interno do PHP, Array. Um dos testes que precisa ser feito é a função sizeof(). A função sizeof() deve retornar 0 para qualquer array recém-criado. Quando adicionamos um novo membro do array, sizeof() deve retornar 1. O exemplo 1 mostra o que queremos testar.
Exemplo 1. Array de teste e sizeof()
<?php
$fixação = Array();
// $fixture deve estar vazio.
$fixture[] = "elemento";
// $fixture deve conter um membro do array.
?>
O método de teste mais simples é imprimir os resultados da operação de sizeof() antes e depois de adicionar membros do array. Se 0 e 1 forem retornados, significa que Array e sizeof() estão operando normalmente.
Exemplo 2. Use instruções de impressão para testar Array e sizeof()
<?php
$fixação = Array();
imprimir sizeof($fixture) "n";
$fixture[] = "elemento";
imprimir sizeof($fixture) .
?>
0
1
Agora, passamos o programa de teste de exigir interpretação manual para executá-lo automaticamente. No Exemplo 3, comparamos o valor esperado com o valor real e imprimimos ok se forem iguais. Se descobrirmos que alguns resultados não estão corretos, sabemos que há um problema.
Exemplo 3. Compare os valores esperados e reais de Array e sizeof()
<?php
$fixação = Array();
imprimir sizeof($fixture) == 0 ? "okn" : "não okn"
;
imprimir sizeof($fixture) == 1 ? "okn" : "não está okn";
?>
OK
ok,
agora introduzimos um novo elemento, se o valor esperado for diferente do valor real, lançamos uma exceção. Dessa forma, nossa saída é mais simples. Se o teste for bem-sucedido, nada será feito; se houver uma exceção não tratada, sabemos que algo está errado.
Exemplo 4. Usando funções de asserção para testar Array e sizeof()
<?php
$fixação = Array();
assertTrue(sizeof($fixture) = = 0);
$fixture[] = "elemento";
assertTrue(sizeof($fixture) = = 1);
function assertTrue($condição) {
if (!$condição){
throw new Exception("Asserção falhou.");
}
}
?>
Agora o teste está totalmente automatizado. Ao contrário da nossa primeira versão, esta versão torna os testes totalmente automatizados.
O objetivo de usar testes automatizados é cometer o mínimo de erros possível. Mesmo que seu código ainda não esteja perfeito, com bons testes automatizados você descobrirá que os erros serão significativamente reduzidos. Os testes automatizados dão a você a confiança de que seu código é justo. Com essa confiança, você pode dar saltos ousados no design, fazer parcerias melhores com sua equipe, melhorar o relacionamento entre você e seus clientes e dormir tranquilo todos os dias porque pode provar que o sistema é melhor por causa de seus esforços.