Vamos testar o PHP?

Felipe Limeira
Aug 27, 2017 · 5 min read
Mascote do PHP TestFest.

Sim, é isso mesmo! Você não leu o título errado. Vamos testar o PHP e suas funcionalidades, não o seu software criado usando PHP.

Inicialmente, pode parecer assustador e extremamente complicado de se fazer, mas é aí que está a “mágica” do PHP. Para você entender melhor o core da linguagem, você não precisa necessariamente saber C ou como funciona o interpretador do PHP. Ou seja, se você já possui experiência ou está dando os primeiros passos na linguagem, você conseguirá ajudar da mesma forma.

Por que seria legal você ajudar a testar o PHP?

Primeiramente, testar a linguagem ajuda a manter a qualidade da mesma e a encontrar possíveis bugs, mas a ideia de realizar testes vai além dessas citadas, a intenção é aproximar os desenvolvedores ainda mais da linguagem, do core e a ajudar a manter o PHP.

Um outro bom motivo, é que quem programa utilizando essa linguagem sabe como é essa relação de amor com o PHP e como sempre queremos melhora-la. Está convencido? Sim? Então vamos cair de cabeça nesse relacionamento.


Preparando o ambiente.

Preparar o ambiente é tão simples quanto fazer os testes, e a primeira coisa que você precisa ter é a versão do PHP que você deseja testar, a segunda é ter o docker-phpqa que irá precisar do Docker instalado na maquina.

  • Instale o Docker.
  • Faça o download ou clone do repositório herdphp/docker-phpqa.

git clone https://github.com/herdphp/docker-phpqa.git

  • Após o download terminar, execute o Docker terminal, que foi instalado juntamente com o Docker, e acesse a pasta do docke-phpqa.

cd caminho/para/o/diretorio/docker-phpqa

  • Os testes ficam dentro da pasta phpt e por padrão recomendamos criar uma pasta com o seu nome.

mkdir phpt/seu_nome

Criando o primeiro arquivo de teste (.phpt)

Antes de começar de fato a ver nosso primeiro arquivo de teste, é bom falar um pouco sobre o GCOV e o LCOV.

GCOV é o total geral de cobertura de testes do PHP mostrado pela aplicação, esse total pode ser visualizado no link a seguir http://gcov.php.net/.

LCOV é o número de linhas cobertas por testes no PHP. Essa informação pode ser vistas no link http://gcov.php.net/PHP_HEAD/lcov_html/, nesse link é possível ver também a porcentagem testada de cada cada função.

Por que é interessante ter em mente as informações acima? Porque se você está interessado em contribuir com a cobertura de testes da linguagem e consequentemente com a própria linguagem, é interessante saber quais funções já foram testadas para evitar testes repetitivos.

Porcentagens e suas respectivas aceitações:

low: < 75 % medium: >= 75 % high: >= 90 %

Vamos começar a colocar a mão na massa…

Existem alguns padrões que devem ser seguidos para a criação dos arquivos .phpt, o primeiro é a nomenclatura do arquivo:

  • Testes para bugs
    bug<bug_id>.phpt (bug17123.phpt)
  • Testes para o comportamento básico de uma função
    <function_name>_basic.phpt (dba_open_basic.phpt)
  • Testes para o comportamento de erro da função
    <function_name>_error.phpt (dba_open_error.phpt)
  • Testes para variações no comportamento da função
    <function_name>_variation.phpt (dba_open_variation.phpt)
  • Testes gerais para extenções
    <ext_name><no>.phpt (dba_003.phpt)

Vamos começar a escrever nosso teste. Inicialmente deve ser criado o arquivo na pasta, com o seu nome seguindo o padrão de nomenclatura acima.

# echo_basic.phpt

— TEST — : Descrição do que está sendo testado.

— CREDITS — : Identificação do autor do teste (opicional).

— FILE — : O código PHP que queremos testar.

— EXPECT — : A saída que o código PHP deve gerar.

— EXPECTF — : Serve para a mesma coisa que o EXPECT, mas para quando ocorre a utilização incorreta, erro. (vou deixar isso mais claro mais adiante)

Para rodar o teste execute o comando a segui:

Windows: ./bin/phpqa.sh run phpt/seu_nome/echo_basic.phpt

Linux: phpqa run phpt/seu_nome/echo_basic.phpt

A saída será:

Show, funcionou. Agora vamos testar um caso de erro. :)

Para esse teste vamos escolher uma outra função, a função será .

# filemtime_error.phpt

Lembra que eu falei que deixaria mais claro o uso do EXPECTF? Então, ele serve para casos de erro, por esse motivo ele foi utilizado nesse teste.

E a saída deste teste foi:

Tudo certo novamente. :)

Existem muitas outras coisas bacanas que podem ser feitas nos testes do PHP, mas com o que foi passado já é possível iniciar seus testes e contribuições com a linguagem.


PHP TestFest 2017

Uma informação muito bacana para quem quer ajudar com os testes e ajudar novas pessoas a contribuir com o PHP, é que em 2017 está acontecendo um evento chamado PHP TestFest, com a intenção de introduzir pessoas aos testes do PHP e ao mesmo tempo aumentar o numero de contribuições.

Para saber mais sobre esse evento e a edição que ira ocorrer no Brasil, acesse https://phptestfestbrasil.github.io/


Duvidas? Crises? Dificuldades? Entre em contato utilizando os meios a segui:

· Meu Twitter: https://twitter.com/lflimeira02

· Meu e-mail: lflimeira02@gmail.com

Training Center

Conectamos pessoas que querem aprender algo relacionado a desenvolvimento de software com gente que pode guiá-las.

)

Thanks to Guilherme Augusto Henschel (Cenoura)

Felipe Limeira

Written by

Developer, geek and passionate about technology.

Training Center

Conectamos pessoas que querem aprender algo relacionado a desenvolvimento de software com gente que pode guiá-las.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade