Surgimento dos testes de software
A ação de realizar testes é conhecida há muito tempo, entretanto, foi somente na década de 1950 que o conceito se tornou de fato um processo de detecção de erros e não unicamente uma função de verificar se o software funcionava. Anos depois, em 1979, Glenford Myers produziu os primeiros trabalhos complexos sobre os processos de testes, uma espécie de bíblia dos testes e a partir de então, o conceito de testes esteve voltado para a intenção de encontrar erros.
Juntamente com a crescente demanda por software em busca de solucionar algum problema ou automatizar um processo, a complexidade desses softwares também foi se tornando cada vez maior. Segundo Bartié, mais de 30% dos projetos são cancelados antes mesmos de serem finalizados. Além disso, conforme o especialista: mais de 70% dos projetos falham nas entregas das funcionalidades, gerando um cenário totalmente problemático para as empresas.
Devido a esse cenário, criou-se a necessidade de realizar a implementação de processos de qualidade, com o intuito de estabelecer procedimentos que sirvam de garantia e gerenciamento de qualidade nos projetos. A partir disso, começou-se a serem desenvolvidos modelos que definissem esses processos, um dos primeiro é o CMM, Capability Maturity Model, elaborado pelo Instituto de Engenharia de Software (SEI). Esse modelo define uma estrutura de trabalho, possuindo itens necessários de modo a tornar o processo de testes eficiente e controlado.
Vale ressaltar que o CMM é dividido em cinco níveis, abrangendo desde o nível inicial de uma empresa até ao nível otimizado, tais níveis são sequenciais, portanto, para que uma empresa alcance o último nível do modelo, a mesma terá passado por todos os níveis anteriores. No nível dois do CMM é definido o processo de Garantia da qualidade de software (SQA), tal nível contempla diversos processos de testes.
Como meio de executar esses processos de testes, existem duas maneiras: a manual e a automatizada, e ambas necessitam de um profissional para realizá-las. Porém, os testes automatizados utilizam ferramentas como forma de automatizar os processos de testes que são repetitivos, tendo como principal objetivo, facilitar esse processo. Ambos os tipos de testes de softwares são extremamente essenciais tanto para o sucesso do processo de qualidade de software quanto para o software em si.
Benefícios com a implementação de testes automatizados
Visto que a demanda por desenvolvimento de software vem aumentando ano após ano, torna-se necessário a utilização de diferentes tipos de testes dentro do processo de qualidade para atender diversas características distintas existentes nos softwares. Pois, levando em consideração que cada software é desenvolvido para um determinado propósito, cada software terá diferentes funcionalidades, serviços, comportamentos, tecnologias e etc. Com isso os diferentes tipos de testes automatizados podem ser utilizados, tais como:
Teste de Performance;
Teste de Carga;
Teste de Escalabilidade;
Teste de Unidade.
Ao implementar testes automatizados durante desenvolvimento do software, pode resultar em diversas vantagens, como:
– Reduzir os erros encontrados durante a execução dos testes, pois um dos fatores que mais impossibilita a pessoa que está executando os testes manuais a encontrar erros é o fato de que ela está suscetível a falhas, porém quando é utilizado testes automatizados, os fluxos do software é mapeado e definido, sendo assim, não existe essa suscetibilidade.
– Eleva a eficiência dos recursos utilizados na execução dos testes, visto que os testes automatizados são mais otimizados e assertivos do que os manuais, isso resulta em uma maior disponibilidade de recursos, um dos principais é o tempo de um profissional para realizar testes manuais.
– Aumento na criação de cenários de testes, pois com a aplicação de testes automatizados, existe a possibilidade de se criar diversos cenários que estão além da capacidade ou recursos humanos, por exemplo, executar testes em paralelo, carga, performance e etc.
– Maior confiabilidade sobre os testes executados, já que os testes automatizados podem ser executados exaustivamente sobre os mesmos cenários de testes criados, se tornando fácil mensurar se o software possui consistência.
– Relatórios mais completos e descritivos, uma vez que os testes automatizados forem implementados é possível obter relatórios completos sobre os status da execução dos testes realizados, podendo ser utilizados para descrever a qualidade do software.
– Aumento na quantidade de testes a serem executados, pois os softwares sofrem uma evolução durante o seu desenvolvimento, ou seja, possuem várias versões. A implementação de testes automatizados otimizam esse processo, uma vez que, os testes já criados podem ser reutilizados sobre as versões futuras, disponibilizando um maior tempo para realização de testes manuais.
Desafios na implementação dos testes automatizados
Mesmo com diversas vantagens disponíveis com a implementação dos testes automatizados, existem algumas desvantagens que inviabilizam a implementação dos mesmos, como por exemplo:
– Aumento nos custos do desenvolvimento do software, pois, para que os testes automatizados possam ser implementados, será necessário ter profissionais qualificados para executá-los, além de novas ferramentas e tecnologias.
– Treinamentos específicos para automação, visto que a implementação de testes automatizados não é comum nos ambientes de desenvolvimento, encontrar profissionais qualificados ou específicos nessa área será um pouco difícil e na falta deles, a empresa terá que gastar com treinamentos.
– Falsos erros podem ser relatados, uma vez que durante a execução dos testes automatizados é comum que seja relatado erros no fluxo ou cenário de teste, porém muitas vezes esses erros são referentes à execução dos testes automatizados em si, e não sobre os recursos que foram testados.
– Constante manutenção sobre os testes automatizados desenvolvidos, porque os softwares passam por diversas evoluções. Os testes automatizados que foram desenvolvidos têm que estar sempre recebendo manutenções, de modo a acompanhar a evolução do software e isso gera um custo adicional no software.
Testes Manuais X Testes Automatizados
No gráfico abaixo é possível visualizar alguns benefícios da aplicação de testes automatizados em softwares se comparado com testes manuais.
Através do gráfico acima é possível visualizar que no início da construção do teste automatizado existe um esforço excessivo em comparação com o teste manual, porém ao longo do tempo de desenvolvimento do software esse excesso é compensado, pois com os testes automatizados implementados, os mesmos não irão precisar ser refeitos, diferentes dos testes manuais que vão se manter constantes, visto que não são aproveitados e sempre necessitarão ser refeitos.
Entretanto, vale ressaltar que nem todos os testes manuais podem ser automatizados, pois alguns deles dependem da capacidade humana para julgar determinada funcionalidade, um exemplo são os testes de usabilidade, isso porque os resultados desse teste não é algo exato, e por isso requer a avaliação de um profissional.
Custos e economias com a implementação de testes
A partir disso, podemos concluir que a aplicação de testes automatizados é capaz de trazer diversos benefícios para o software se for implementada corretamente, pois, com a sua aplicação se torna mais fácil de gerenciar a qualidade de um software.
Conforme podemos ver no gráfico abaixo, quanto mais demorado for para encontrar os problemas existentes no software, mais caro ficará para corrigi-los, pois a cada fase de desenvolvimento o custo é aumentado. Sendo assim, quanto mais cedo os testes começarem a serem definidos e realizados, mais barato ficará para corrigir os problemas.
Referências:
Automation Testing is Crucial for the Modern Enterprise
Top 10 Benefits of Test Automation
Importance of Automation in Software Testing | T/DG Blog
8 Benefits of Automated QA Testing for your Enterprise • Xcelacore • Business-Driven Technology
The top 10 benefits of Test Automation
https://www.linkedin.com/pulse/origem-do-teste-de-software-e-porque-testar-alexandre-sousa/
Automação de testes: um pouco da nossa história
Automação de testes: objetivos, abordagens, vantagens, desvantagens e limitações
The Shift-Left Approach to Software Testing
Texto escrito pelo nosso colaborador Hemerson Batista.