Download pdf - Teste cabra da peste

Transcript

Teste, cabra da peste!

Introdução ao unit test

WP 2.8 -> WP 3.5Difícil, mas a gente aprende

"Mesmo bons programadores cometem erros. A diferença entre um bom e um mau programador é que o bom programador usa testes para detectar seus erros o mais cedo possível." phpunit

Fluxo de desenvolvimento sem testes automatizados:1) Editar o código.2) Abrir o navegador e entrar manualmente dados (posts, comentários), ativar o plugin, alterar configurações.4) Verificar se existem erros em 200 lugares diferentes.5) Repetir os passos acima um milhão de vezes, para ter certeza.6) Passar o resto da semana dando suporte.

Fluxo de desenvolvimento com testes automatizados:1) Editar o código.2) Abrir o terminal.3) Executar os testes.4) Correr pro abraço.

Fonte: http://blog.typemock.com/2011/12/23/happy-holidays-from-typemock

Mais vantagens* Integração contínua.* Contribuir com o WordPress.* Confiabilidade.

PHPUnit produz testes* Fáceis de aprender a escrever.* Fáceis de ler e escrever.* Fáceis e rápidos de executar.* Isolados.

As fábricas de teste do WP permitem criar

* post* attachment* comment* user

* term* category* tag* blog

Exemplos

Cobertura de código

Perguntas e RespostasA factory do WordPress cria os posts em banco? Sim, ela usa as funções do WordPress por debaixo dos panos (wp_insert_user, wp_update_post...).

É possível usar mocks em vez de acessar o banco? Sim, o phpunit tem suporte a mocks.

Tem alguns exemplos de projetos com unit test? Os plugins jetpack, liveblog, wordpress-seo.

Perguntas e RespostasComo garantir que os testes foram desenvolvidos corretamente? Não há como garantir. É um exercício de criatividade pensar no que poderia dar errado. Porém, o relatório de cobertura de testes ajuda a entender o que foi testado.

O travis-ci tem relatório de cobertura de testes? Não, mas ele se integra bem com ferramentas como code climate e coveralls. Algumas ferramentas como scrutinize têm relatório de cobertura embutido. No jenkins é possível instalar plugins.

Obrigada!