Gerência - Qualidade e Testes

Test Infected: Tá tudo dominado

A necessidade de utilizar mecanismos de garantia de qualidade de software têm crescido à medida que as aplicações tornaram-se mais complexas, saiba através deste artigo como tornar-se um Test Infected e mude o seu perfil profissional para enfrentar o desafio da qualidade.

por Cristiano Caetano



Qualidade de software: Um caminho sem volta

A necessidade de utilizar mecanismos de garantia de qualidade de software têm crescido à medida que as aplicações tornaram-se mais complexas. Eu diria que esse crescimento tem sido exponencial em virtude da nossa dependência cada vez maior de aplicativos que controlam atividades de missão crítica; seja num hospital, na bolsa de valores ou no ônibus espacial. Em termos práticos, isso significa que cada vez mais cedo as empresas estão introduzindo atividades de qualidade de software nas diversas fases do desenvolvimento de sofware.

Revisões formais, estratégias de garantia de qualidade, planos de testes, gerência de riscos, entre outras atividades estão se tornando cada vez mais comuns no cotidiano das empresas. Em contrapartida, para dar sustentação a essa mudança de paradigma podemos notar a proliferação de ferramentas open-source e comerciais para a execução e gerência das atividades de teste e qualidade de software [4] [5].

Segundo uma pesquisa realizada pelo site Methods & Tools [6], notamos claramente que uma fatia significativa das empresas e profissionais consultados utilizam ferramentas para a realização de testes funcionais, como pode ser visto na Figura 1.


Figura 1. Tools for Functional Software Testing (Fonte: Methods & Tools - Software Development Magazine).

Em entrevista para a revista InformationWeek [1], Bill Gates afirma que os testadores na Microsoft empregam todo o seu tempo testando as aplicações ou em atividades de qualidade de software; adicionalmente, os desenvolvedores gastam cerca de metade do seu tempo testando as aplicações. Concluindo, Bill Gates diz que a Microsoft deveria ser considerada uma empresa de teste e garantia de qualidade de software ao invés de uma empresa de desenvolvimento de software. Como se nota na declaração anterior, a Microsoft dá um passo além e foca todos os esforços quase que exclusivamente em atividades de garantia de qualidade.

Essa tendência, também pode ser observada na evolução das suítes de desenvolvimento de sofware disponíveis no mercado. Tanto a Microsoft [3] quanto a Borland [2] estão apostando todas as fichas em suítes de desenvolvimento que suportam e fornecem ferramentas para todo o ciclo de vida do desenvolvimento de software, assim como ferramentas para a criação e gerência de testes funcionais, testes de carga, unidade, entre outros.

Test Driven

Test Driven Development também conhecido como Test First Design é uma prática de desenvolvimento de software em que os testes de unidade automatizados são escritos antes do código. Por meio do suporte de frameworks XUnit para a realização de testes de unidade, os testes são escritos incrementalmente encorajando a criação de um código mais com baixo acoplamento e alta coesão.

A utilização do Test Driven também encoraja o Refactoring do código já existente. Para quem não conhece, Refactoring é uma outra prática que prega melhoria da estrutura e do design interno do código sem, no entanto, modificar o seu comportamento. Por outro lado, esta prática só tem benefício quando realizada num código coberto por testes de unidade em virtude de que os testes de unidade detectam os defeitos imediatamente; garantindo assim que o código mantenha o seu comportamento externo apesar das várias modificações na sua estrutura interna.

A disseminação de técnicas como o Test Driven e a utilização de frameworks de testes de unidade tais como JUnit ou NUnit reinforçam a tendência discutida anteriormente de que atividades de qualidade de software estão sendo introduzidas cada vez mais cedo nas diversas fases do desenvolvimento de software. Segundo uma outra pesquisa realizada pelo site Methods & Tools [6], podemos perceber a dimensão da penetração dos frameworks de testes de unidade e da utilização do Test Driven Development nas empresas de acordo com o gráfico apresentado na Figura 2.


Figura 2. Unit Testing: Can You Repeat Please? (Fonte: Methods & Tools - Software Development Magazine).

Test Infected

Segundo Kent Beck, criador e disseminador do Extreme Programming, quando o programador atinge o nível de adorar o processo de escrever testes, significa que o programador tornou-se Test Infected. Entre os vários benefícios em tornar-se Test Infected, seguramente a mudança de atitude em relação à qualidade do software é, de longe, a melhor. Esses programadores tornam-se um tipo de guardiões da qualidade e, em conjunto com a equipe de testes, promovem a melhoria continuada do produto final.

Em geral, programadores Test Infected são mais produtivos, previsíveis e menos estressados. Martin Fowler, autor do livro "Refactoring: Improving the Design of Existing Code" define o espírito Test Infected com a seguinte frase: "Whenever you are tempted to type something into a print statement or a debugger expression, write it as a test instead". Inspirador não acham?

Em resumo, o espírito Test Infected é mais um indicador da tendência de que atividades de qualidade de software estão sendo introduzidas cada vez mais cedo nas diversas fases do desenvolvimento de software.

Testador-Desenvolvedor

Também não podemos deixar de notar uma mudança silenciosa no perfil dos profissionais da área de desenvolvimento de software. Nesse novo cenário, parece que está surgindo um novo tipo de desenvolvedor; um desenvolvedor com uma visão mais pragmática e um conhecimento mais profundo das técnicas e ferramentas para a realização de testes de software.

Usualmente esse novo perfil é chamado de Testador-Desenvolvedor e é um recurso escasso no mercado. São raros os profissionais com experiência em ambas áreas de atuação, mas no entanto eles existem. Normalmente projetos de automação de testes requerem profissionais com esse tipo de perfil em função de que os frameworks ou ferramentas para criação de testes automatizados requerem um extenso conhecimento de programação em Java ou C#. Testes de stress e testes de carga também utilizam as habilidades do Testador-Desenvolvedor.

Como você pode perceber, a hora é agora para tornar-se Test Infected e mudar o seu perfil profissional para enfrentar o desafio da qualidade.

Para saber mais...

[1] Q&A: Bill Gates On Trustworthy Computing
http://www.informationweek.com/story/IWK20020517S0011

[2] Borland - Accelerating the Application Lifecycle
http://www.borland.com/us/products/alm/index.html

[3] Microsoft Visual Studio 2005 Team Edition for Software Testers
http://msdn.microsoft.com/vstudio/products/vsts/test/default.aspx

[4] Open Source Software Testing Tools, News and Discussion
http://opensourcetesting.org/

[5] Open Source Testing Tools in Java
http://java-source.net/open-source/testing-tools

[6] Methods & Tools - Providing practical and free knowledge for the software developer, tester and project manager
http://www.methodsandtools.com

Cristiano Caetano

Cristiano Caetano - É certificado CBTS pela ALATS. Consultor de teste de software sênior com mais de 10 anos de experiência, já trabalhou na área de qualidade e teste de software para grandes empresas como Zero G, DELL e HP Invent. É colunista na área de Teste e Qualidade de software do site linhadecodigo.com.br e da revista Engenharia de Software Magazine. Autor dos livros "CVS: Controle de Versões e Desenvolvimento Colaborativo de Software" e "Automação e Gerenciamento de Testes: Aumentando a Produtividade com as Principais Soluções Open Source e Gratuitas". O autor também é criador e mantenedor do portal TestExpert, maior comunidade brasileira sobre teste e qualidade de software, confira no seguinte endereço: http://www.testexpert.com.br.