Nos últimos anos a adoção por novas metodologias ágeis por parte dos times de desenvolvimento de Software vem aumentando gradativamente conforme o crescimento do produto considerando o aumento das demandas.
Rodrigo Bittencourt de Lima aborda que devido a crescente adoção de novos métodos ágeis dentro do desenvolvimento do Software, diversos processos precisaram ser adaptados a sua realidade.
Diante deste contexto considera-se a qualidade do Software como parte importante de uma entrega do produto ao cliente final, sendo este um fator recorrente a mudanças.
Definição de qualidade de software e seu impacto
Quando falamos em qualidade de Software devemos levar em consideração a constante evolução dos processos que vem sofrendo inúmeras mudanças durante o ciclo de desenvolvimento do produto. Por exemplo:
- Demandas de desenvolvimento entrando no ciclo num espaço curto de tempo.
- Crescimento do mercado digital.
- Busca por soluções mais eficazes. Clientes buscando por produtos com alta qualidade
- Funcionalidade adequada a cada cenário.
- Alto desempenho e garantia na integração dos dados.
Contudo, controlar a qualidade de um Software se torna desafiador, pois cada vez mais os sistemas estão elevando seu nível de complexidade e adotando novos modelos em seu processo de desenvolvimento. É o que dizem Paulo Cheque Bernardo e Fabio Kon na revista Engenharia de Software Magazine.
A agilidade no desenvolvimento de software e análise de testes
Quando se trata de atender a grandes demandas em um espaço curto de tempo, diversos fatores devem ser levados em consideração, tais como:
- Tempo de análise.
- Tempo de priorização.
- Tempo de desenvolvimento.
- Tempo de testes.
- Tempo de entrega da solução ao cliente final.
Considerando que uma entrega precisa ser realizada dentro de um determinado período em uma data acordada com todo o time, o tempo começa a correr contra o relógio, tornando o processo de desenvolvimento da solução cada vez mais desafiador para todo o time.
Diante de cada etapa: análise, priorização, desenvolvimento, testes e entrega, temos processos que se tornam repetitivos e demorados, impactando a entrega dentro do prazo com uma qualidade mais robusta. Este processo repetitivo pode ser encontrado na atividade de teste e validação manual da funcionalidade implementada.
Ainda existem Softwares no mercado que são testados de forma totalmente manual, o que demanda tempo, alto custo e consequentemente se tornam repetitivos. Estes testes podem gerar retrabalhos futuros e estão sujeitos a falhas. Quando falamos em tempo de teste estamos falando do tempo dedicado a cada teste funcional da aplicação.
Por exemplo: imagine que o seu time liberou uma atividade na qual pode impactar todo o processo do sistema, esta atividade precisa ser testada e entregue em menos de oito horas, como você faria? Como atuaria diante deste cenário? Entregaria sem garantia de qualidade? Atingiria o objetivo realizar o máximo de cobertura possível nos testes manuais dentro deste espaço de tempo? Existe um alto custo realizar todo este trabalho de forma manual, já pensou ter que testar toda a funcionalidade da aplicação como um todo, em um tempo reduzido, e de forma manual?
Rodrigo de Lima retrata que, quando um erro é encontrado na execução de um determinado cenário de testes, a equipe de desenvolvimento deve se encarregar de corrigir e liberar novamente a atividade para validação, onde todo o fluxo de teste realizado inicialmente será repetido. E assim sucessivamente, sempre que erros forem encontrados e corrigidos pelo desenvolvedor.
Os testes automatizados como solução
Diante deste contexto surge a ideia de tornar o processo de teste automatizado. Os testes automatizados são rotinas que há pouca ação humana envolvida, onde diversas funcionalidades podem ser executadas, segundo Rodrigo de Lima.
Com este processo é possível reduzir o custo do teste, o custo do tempo, o retrabalho bem como evitar a execução dos testes de forma repetitiva. Paulo Bernardo e Fabio Kon retratam que os scripts de testes automatizados podem ser simulados e executados diversas vezes em diferentes situações especificas onde os passos essenciais não serão deixados de lado por uma falha humana, facilitando a identificação de um comportamento não desejado no Software.
Com a utilização da automação do teste de Software, todo o esforço necessário para executar um teste funcional que requer grandes quantidades de fluxos pode ser reduzido em um curto espaço de tempo e serem executados de forma automática sempre que acionados. É o que afirma Eliane Collins no IX Simpósio Brasileiro de Qualidade de Software.
Devemos levar em consideração que o tempo gasto para desenvolver scripts de testes automatizados é relativamente alto, dependendo de cada realidade do projeto em que será desenvolvido. Desenvolver os scripts automatizados pode demorar mais do que a execução do manual do teste.
Porém, pensando em uma realidade próxima, se o desenvolvimento destes scripts for reaproveitado para os próximos testes que estiverem sujeitos a execução futura de outras atividades, o tempo que seria gasto executando o teste de forma manual será totalmente desconsiderado, podendo ser utilizado em um outro teste exploratório da funcionalidade, ou seja, o script pode ser reaproveitado para cenários futuros.
Conclusão
Concluímos então que a adoção de novas metodologias dentro do desenvolvimento do Software requer mudanças, e que diante dessas mudanças temos o contexto de qualidade, no qual vem crescendo gradativamente conforme a procura por Softwares com qualidade. Dentro de um cenário de desenvolvimento podemos executar diversos processos para a melhoria da qualidade do produto e proporcionar uma ótima experiência ao usuário final, um destes processos é o teste de Software, porém a etapa de testes de Software é uma etapa demorada, exaustiva e repetitiva quando executado de forma manual.
Com o intuito de melhorar a escalabilidade do teste foi apresentado a importância de adotar os testes automatizados dentro dos processos de teste do projeto. Com esta implementação podemos ter grandes resultados como: diminuir o tempo do teste, teste menos exaustivo, não tornar o teste repetitivo, melhorar a qualidade e a confiabilidade do teste, cobertura dos testes em maiores quantidades e por fim utilizar o tempo de teste funcional para a execução de testes exploratórios, enquanto os demais cenários relacionados a cada funcionalidade seja testado de forma automatizada, tendo assim uma melhoria na performance do teste de Software, consequentemente entregando dentro do prazo.
Referências:
BERNARDO, Paulo Cheque; KON, Fabio. A importância dos testes automatizados. Engenharia de Software Magazine, v. 1, n. 3, p. 54-57, 2008.
COLLINS, Eliane F. et al. Experiência em Automação do Processo de Testes em Ambiente Ágil com SCRUM e ferramentas OpenSource. IX Simpósio Brasileiro de Qualidade de Software, 2010.
LIMA, Rodrigo Bittencourt de et al. Testes de integração automatizados sobre API Rest do software Hawa. 2019.