Para praticamente todos os gestores e diretores de empresas que desenvolvem sistemas, quando converso sobre qualidade de software, a opinião é unânime: “investir na qualidade e testes é muito importante”; alguns afirmam ser “essencial para o sucesso do projeto”. Contraditoriamente, quando lhes pergunto o quanto as empresas onde trabalham investem em testes, fico surpreso, pois a resposta é também praticamente unânime: pouco ou nada.
O que os levam a, mesmo afirmando serem conscientes da necessidade de um processo vital dentro da fase de desenvolvimento de software, na prática não aplicá-lo? As justificativas são as mais variadas possíveis: uns afirmam que os custos com testes são altos e os gastos não se pagam. Outros acreditam que o prazo acaba se estendendo muito e que, é melhor entregar um sistema dentro do cronograma estimado e realizar melhorias e correções pós-entrega. Já uma boa parte acredita que investir em bons desenvolvedores minimiza a chance de que defeitos sejam encontrados e esse atalho diminui custos do projeto, e alguns poucos admitem que, apesar de acreditarem que é importante, desconhecem o processo de teste e como aplicá-lo adequadamente dentro do ciclo de desenvolvimento do sistema.
O fato é que teste reduz (e muito) os custos totais da construção de um software, principalmente se aplicado adequadamente durante todo o projeto, mas, por se tratar de um processo pouco conhecido e com mão-de-obra especializada escassa, acaba nem sempre sendo priorizado ou até mesmo aplicado nas empresas.
O conceito de fábrica de testes em resumo é garantir, por meio de processos e metodologias, ferramentas e técnicas manuais e automatizadas, que teste de software faça parte do processo de construção do sistema e seja aplicado devidamente. Agora, o que é, de fato, teste de software? De forma simples, é um processo que envolve técnicas e ferramentas específicas em fases de planejamento e execução e, quando aplicadas, torna-se possível identificar defeitos em requisitos, em projetos, processos e em sistemas.
Com a implantação de um modelo de fábrica de testes na empresa, ou mesmo terceirizando os serviços com empresas especializadas, é possível reduzir consideravelmente os custos com o projeto de software e, principalmente se tornar competitivo no mercado devido ao aumento da qualidade do sistema que é disponibilizado a seus usuários e a diminuição da necessidade de suporte, manutenções constantes e alterações de funcionalidades ou regras não previstas.
Se considerarmos quatro as principais fases de um projeto de desenvolvimento de um sistema: (1) concepção e elaboração, (2) implementação (e integração), execução de (3) testes funcionais e não funcionais e (4) entrega, cada “defeito”, item ou regra de negócio não prevista em uma dessas fases, tem seu custo de correção de 4 a 10 vezes maior se fosse realizado na fase anterior. Isto é, o custo de se corrigir um defeito considerado grave encontrado em produção teria sido de 4 a 10 vezes mais barato se fosse identificado e corrigido durante a fase de testes; ou de 40 a 100 vezes durante a etapa de implementação, ou de 400 a 1.000 vezes mais barato durante a fase de concepção e elaboração.
Se analisarmos o percentual do custo do projeto destinado a suporte e correções de falhas identificadas no sistema já em produção, o quanto de economia não seria possível se esses mesmos problemas (ou suas causas) fossem identificados durante as fases de elaboração ou implementação? Ou o quanto a produtividade de implementação poderia aumentar se as regras de negócio e documentações fossem definidas adequadamente e sem falhas ou indefinições? Você já parou pra pensar no quanto de dinheiro sua empresa gasta com correções de defeitos, mudanças de requisitos e atendimento devido a um sistema mal planejado? Já analisou o quanto esse tempo e o custo dos recursos alocados para resolver os problemas correspondem ao custo total do projeto?
Sei que muitos nunca pararam para refletir sobre o quanto poderiam economizar de tempo e dinheiro se, de fato, aplicassem os conceitos e técnicas do processo de teste durante todas as etapas de um projeto de software, e o quanto poderiam se tornar competitivos se esse dinheiro fosse aplicado a novas funcionalidades, melhorias ou até mesmo ao desenvolvimento de novos produtos ou tecnologias. Um software que já tiver muitas de suas falhas detectadas e tratadas durante seu desenvolvimento terá poucas chances de apresentar novas falhas graves em produção, e consequentemente será consolidado como um software de alta qualidade.
[Crédito da Imagem: Fábrica de Testes – ShutterStock]