Foto do(a) blog

O lado livre da internet

Testes Automatizados em Projetos de Código Aberto

Se mesmo grandes empresas enfrentam dificuldades nesse quesito, como garantir a qualidade do software livre? Saiba mais sobre testes automatizados.

PUBLICIDADE

Por CCSL
Atualização:
 Foto: Estadão

Por Eduardo Guerra*

PUBLICIDADE

É bastante claro para qualquer usuário de computador que a qualidade dos programas é assunto importante. Mas se mesmo grandes empresas enfrentam dificuldades nesse quesito, como garantir a qualidade do software livre? Com o acesso e a colaboração de diversas pessoas, muitas vezes em lugares diferentes e que nem se conhecem, como evitar que a contribuição de uma pessoa quebre alguma coisa que já estava funcionando?

Dentre outras, a automação de testes é uma técnica que pode ser utilizada nesse caso. Ela não evita propriamente que enganos aconteçam, mas permite que eles sejam detectados da forma mais rápida possível. Com eles, um desenvolvedor que contribui para o projeto pode ter feedback imediato se a alteração que fez no código quebrou ou não alguma funcionalidade. Porém, para que seu uso seja efetivo, todos os desenvolvedores devem possuir a disciplina de sempre adicionarem testes referentes à funcionalidade que estão adicionando.

A partir de uma boa cobertura de testes, é possível transmitir confiança a respeito da qualidade do projeto de código aberto. Isso vai desde potenciais contribuidores, que terão mais segurança em realizar alterações, até mesmo aos usuários, que terão confiança no software que estão utilizando. Vale ressaltar que os testes automatizados, principalmente de unidade ou de integração, também acabam servindo como referência para os desenvolvedores ao se iniciarem no projeto. Isso pode ser explicado pelo fato de cada cenário de teste ser um exemplo de uso do código, no qual é demonstrado o funcionamento de uma classe ou componente. Assim, mesmo o conhecimento de um colaborador que deixou o projeto permanece e é repassado aos novos participantes.

Se você tem um projeto de software aberto e quer fomentar que os desenvolvedores que contribuem para seu projeto criem testes automatizados, a melhor estratégia é liderar pelo exemplo. Criando os primeiros testes é possível mostrar como eles podem ser feitos no contexto do seu sistema e para cada tipo de componente em sua arquitetura. Dessa forma, os outros desenvolvedores terão um exemplo a seguir. Criar dashboards que mostram a cobertura de testes também ajuda a valorizar essa caraterística entre os desenvolvedores.

Publicidade

Um uso com sucesso de testes automatizados foi no projeto de código aberto Esfinge QueryBuilder (um framework de persistência para Java que gera consultas de bancos de dados baseando-se na assinatura do método). O sistema é capaz de funcionar com vários bancos de dados diferentes; no entanto, durante seu desenvolvimento, os testes de unidade e integração foram inicialmente criados para apenas um tipo de banco. A partir dos testes feitos para esse banco inicial, foi muito mais fácil criar os testes e os componentes necessários para tratar outros tipos de banco: os testes permitiram identificar toda funcionalidade que era necessário implementar e como verificar se ela estava criada corretamente.

Uma dica para quem quer aprender mais sobre design e teste de software na prática é acompanhar o canal no YouTube de Eduardo Guerra, onde semanalmente são adicionados vídeos relacionados a técnicas de design de software e desenvolvimento ágil.

*Eduardo Guerra é pesquisador do Instituto Nacional de Pesquisas Espaciais e editor-chefe da revista MundoJ Ágil

Comentários

Os comentários são exclusivos para assinantes do Estadão.