Não seria correto dizer que um tema de tal abrangência seria coberto em sua totalidade em um simples texto, sendo assim, é importante explicar o que está por vir. Apresentaremos, de forma simples e direta, as técnicas, os processos, as metodologias e as ferramentas que podem ser utilizadas para a garantia da qualidade de um software.
Minha pretensão é passar a você os pilares de um conhecimento, que, acredite, é muito vasto. E digo mais, muitas vezes contraditório entre as literaturas, para que se possa adquirir um serviço, estruturar um projeto, entender o contexto e debater o assunto e, acima de tudo, para que se consiga tomar decisões com mais segurança.
Um ponto importante para ressaltar é que, apesar de conseguirmos atingir um nível aceitável de qualidade – mesmo sem um processo maduro de desenvolvimento – isto não reflete o cenário ideal, principalmente por remeter a um maior tempo, maior custo e, com certeza, muito maior estresse. É importante buscar o equilíbrio entre processo de desenvolvimento e processo de testes de software, para que se possa garantir uma solução de alta qualidade, com custo e tempo adequados.
O que pretendo dar aqui é uma visão abrangente do contexto de testes, através da abordagem de temas distintos. Mas antes gostaria de tocar em um ponto que é objeto de grande discussão: a inserção de testes nos processos de gestão de projetos tradicionais (cascata) e processos de gestão ágeis.
O tema é objeto para outro artigo com foco exclusivo no assunto. Mas para que fique alinhado, por ora, basta afirmar que a inserção de um processo estruturado de testes é viável tanto em projetos que rodam com metodologias ágeis, como nos desenvolvidos em metodologias tradicionais, e que, ao analisarmos o todo, com certeza os testes não remetem a gastos, e a tempos excedentes, mas, sim, à redução de custos, riscos e ganho de tempo.
Então agora vamos entender como testar, quando testar, o que testar, com que ferramentas e quais as melhores práticas que se pode utilizar, levando-se em conta os seguintes temas:
É importante sabermos quais os guias mais utilizados no mercado e para tal apresento a ISO 29119 e o Syllabus do ISTQB (International Software Testing Qualifications Board). Ambos os guias devem ser utilizados como documentos de cabeceira para quem quer trabalhar com qualidade de software.
Recentemente foi desenvolvido no Brasil o modelo SQMMI- Software Quality Maturity Model Integrated voltado para empresas menores que tinham dificuldades de implementar o MPT e o TMMI. O SQMMI também pode ser implementado em empresas de maior porte e desta forma o mercado brasileiro atualmente tem dois modelos de melhoria de processo de teste de software.
Estes documentos têm foco maior na estruturação e na execução de testes, ao contrário dos modelos de maturidade, que possuem foco maior na gestão e no controle.
Os modelos mais difundidos para testes de software são o MPT.br – Melhoria do Processo de Testes Brasileiro, que pude implementar em todos os níveis e tive o prazer de ser o primeiro a alcançar o nível 5 no Brasil na empresa em que trabalho, e o TMMI – Testing Maturity Model Integration, que, de forma geral, diverge do MPT.Br apenas no custo de implementação. Outros modelos também abrangem o tema testes de software, mas com menor intensidade e podem conviver com os aqui citados, exemplo: CMMI – Capability Maturity Model Integration e MPS.br – Melhoria de Processos do Software Brasileiro.
De forma geral, a maior preocupação com a implementação de tais modelos é a necessidade de estudos, tempo e dinheiro que devem ser investidos, não apenas no processo de estruturação e certificação, mas também no processo de manutenção para recertificação. Com certeza, esses modelos trazem um maior nível de controle e uma visão muito mais madura da que se tem antes de passar pelo processo de certificação.
Em consulta à literatura que trata do assunto e a pesquisas de mercado, o investimento deve ficar entre 15% e 40% do valor total investido no desenvolvimento da solução. É importante que entenda que existem diversos pontos a serem considerados, e que o percentual, normalmente varia de acordo com o nível de complexidade e com o foco de atuação do sistema.
Este é um assunto complexo, pois são diversas as formas de avaliação, mas para que exista o conhecimento básico das práticas mais utilizadas, abaixo apresento as mais difundidas:
Você escutará sobre testes de CAIXA-PRETA, TESTES DE CAIXA-CINZA e TESTES DE CAIXA-BRANCA, e por isso é importante que se conheçam os termos. Vou esquecer a teoria e apresentar da forma mais simples possível:
Para complicar um pouco mais, agora que são conhecidos os níveis de atuação, de fora (CAIXA-PRETA) para dentro (CAIXA-BRANCA), vamos falar das fases e nomenclaturas utilizadas no mercado. Normalmente o que se encontra são:
Os testes funcionais, como o próprio nome diz, são os testes que validam as funcionalidades de um sistema ou aplicativo. Os testes funcionais podem ser manuais ou mesmo automatizados, mas sempre orientados à identificação de problemas relacionados às funcionalidades e regras de negócios que o sistema possui.
Os testes não-funcionais remetem a aspectos tais como: a aparência, a facilidade de uso, a velocidade e a robustez do sistema para que este suporte a quantidade, simultaneidade, velocidade e segurança esperadas. Dentre os testes não-funcionais, podemos citar:
Principalmente para os testes funcionais, existe a possibilidade de automatização com o auxílio de ferramentas, nas quais se consegue criar scripts (códigos) que simulam as operações que eram executadas de forma manual, com o benefício de possibilitar a sua execução em diferentes plataformas, sistemas operacionais, browsers e tamanhos de telas. Isto traz um ganho muito grande de custo, tempo, qualidade e redução de riscos.
Como técnicas de aplicação de testes, cito a validação de valores máximos e mínimos para os dados de entrada e saída do sistema, a tipagem de valores apresentados em um determinado campo, o uso de partição de equivalência, com a identificação de agrupamentos de testes (por ex.: regras de aceite de dados entre datas etc.).
Algumas das ferramentas que sugiro, caso sua pretensão seja montar uma equipe, são:
E quais ferramentas devo utilizar? A resposta é: se tem dinheiro para investir, use o JIRA, pois com certeza sua organização terá praticamente tudo o que precisa em uma única ferramenta; entretanto, se a empresa quer investir pouco, pode partir para uma junção entre Mantis e TestLink, pois ambos são de plataforma aberta, ou seja, com custo zero. Existem muitas outras ferramentas no mercado, o que fiz aqui foi citar algumas das ferramentas que entendo possam cobrir a maioria dos casos.
As opções acima apresentadas são somente algumas das que entendo serem factíveis para uso, e que cabem em qualquer contexto e tamanho de empresa. Existem também muitas outras ferramentas no mercado, como as da Borland, da HP e outras mais. É importante ressaltar que tanto o Selenium, quanto o Appium são ferramentas free, e suficientemente poderosas para serem utilizadas em qualquer contexto web ou mobile.
As ferramentas para a execução de testes de estresse, de carga e de volume, podem ser o Jmeter e o SoapUI para testes de REST & SOAP.
Até aqui apresentei os padrões de mercado, as abordagens (caixas branca, cinza e preta), os tempos de teste (desde a unidade até o pós lançamento e novas versões), o que são testes funcionais e não-funcionais, falou-se sobre processos, técnicas e ferramentas tanto de gestão e controle, quanto de automação, e dei uma pincelada no que tange a viabilidade de inserção do processo de testes em metodologias ágeis e tradicionais de desenvolvimento. Assim, espero que o texto, “uma versão simplificada” e “adaptada” de um “apanhado de conhecimentos e conversas”, tenha sido de valor. Se o assunto gerou interesse, e despertou vontade de aprofundar as leituras, os interessados verão que existem diferenças entre ISTQB, ISO, e outras fontes, mas o importante é entender o que pode, quando pode, e como pode ser feito. Mãos à obra!
Por: Maicol Peixe