terça-feira, 19 de maio de 2020

Automação de Testes

Testes manuais ou automatizados

A automação de testes tem como um dos objetivos diminuir o envolvimento direto das pessoas em atividades repetitivas. Mas, como vimos, a automação de testes não se restringe ao trabalho repetitivo e chato. Na prática, a automação de 100% dos testes manuais pode não ser a melhor estratégia. A automação de testes é pouco eficaz quando os testes são complexos e exigem interações intersistemas ou validações subjetivas. Além disso, em vários casos o custo e o tempo para automatizar os testes de um projeto são maiores que o custo e o tempo do próprio projeto de desenvolvimento, inviabilizando a iniciativa.

Segundo Lages (2010), quando se deseja aplicar a automação na etapa de execução de testes das funcionalidades de um sistema, vários fatores devem ser avaliados para se identificar se é vantagem ou não a automação dos testes. Ela deve ser feita somente quando uma rotina específica de teste for executada várias vezes, pois a automação também demanda tempo de criação e manutenção de scripts. Lages ressalta que “[...] 70% dos testes do mercado são manuais. O teste automatizado serve basicamente para fazer Teste de Regressão. O que acha erro mesmo é o teste manual”.

Existem diversos tipos de testes para detectar a ineficiência de um sistema, e antes de muitos deles serem automatizados, são executados por várias vezes em modo manual para, depois de comprovado sucesso na sua utilização, serem automatizados.

Implementação dos testes

Uma vez que o software tenha sido elaborado, é necessário fazer a implementação dos testes manuais ou automatizados. Isto pode exigir conhecimento multidisciplinar, ou seja, conhecimento de programação, de testes de software, de linguagem de negócio e de ferramentas específicas. Portanto, o profissional responsável pelos testes automatizados normalmente é diferenciado.

Segundo Schach (2010, p. 463),

[...] implementação é o processo de converter o projeto detalhado em código. Quando isso é feito por um único indivíduo, o processo é relativamente bem compreendido. Porém, hoje em dia, a maioria dos produtos são muito grandes para serem implementados por apenas um programador dentro das restrições de tempo. Em vez disso, o produto é implementado por uma equipe, com todos trabalhando ao mesmo tempo em diferentes componentes do produto.

O trabalho colaborativo não indica a necessidade de todos realizarem tarefas semelhantes. Indica apenas a integração de ideias que naturalmente ocorre em uma equipe integrada.

De acordo com Pressman e Maxim (2016, p. 417), na década de 1970, McCall, Richards e Walters categorizaram os fatores que afetam a qualidade do software, relacionados com três áreas distintas: operação do produto, transição do produto e revisão do produto.

Fatores de qualidade de McCall
Fonte: Pressman e Maxim (2016, p. 417).

Ambiente de testes automatizados: homologação

Vamos recordar as diferenças entre os ambientes de desenvolvimento, de testes e de produção. O ambiente de desenvolvimento é utilizado pelos desenvolvedores para construir o software, reunindo máquinas nas quais o código é implementado. O ambiente de homologação corresponde ao ambiente de testes, no qual o desenvolvedor publica o software para submetê-los aos testes alpha. O ambiente de produção corresponde à que leem que os usuários finais utilizarão o software.
Ambientes de desenvolvimento, teste e produção
Fonte: Vidal (2017, p. 221).

Cada tipo de teste possui restrições próprias relacionadas com o ambiente que podem ter como dependência a flexibilidade e portabilidade das tecnologias utilizadas. Fatores externos de software ou hardware também podem influenciar a definição de onde executar os testes.

Um ambiente de testes ou ambiente de homologação, que é um ambiente criado para replicar todas as condições do ambiente de produção, contribui para a eficiência na execução dos testes e qualidade final da entrega. Não é fácil a criação e manutenção deste ambiente, então, quando ele já está em uso, deve ser usado de forma abrangente.

Com o tempo, é comum a infraestrutura do ambiente de homologação correr o risco de ficar desatualizada, e a equipe deve buscar mostrar aos responsáveis da área técnica a importância da manutenção de um ambiente de homologação atualizado. Este ambiente deve espelhar o máximo possível o ambiente de produção, de forma a buscar garantir sucesso na execução dos testes.

Existem várias alternativas para criar ou montar este ambiente de homologação. Entre elas encontramos, por exemplo, a virtualização, que, quando usada eficazmente, pode gerar um ambiente adequado e de baixo custo. Quando há uma grande quantidade de testes sendo executados neste ambiente simultaneamente, devem-se tomar cuidados para garantir recursos suficientes para que não haja uma sensível queda de desempenho do sistema, de forma a não comprometer a confiabilidade dos testes.

Conforme vimos, os testes de desempenho, de carga, de esforço/estresse e de longevidade requerem um ambiente de testes similar ao ambiente de produção, porque os resultados obtidos estão diretamente relacionados com este ambiente. Os testes de segurança normalmente requerem, também, uma infraestrutura similar ao do ambiente de produção, pois espera-se que estes testes exponham as vulnerabilidades do sistema no ambiente adequado.

Nenhum comentário:

Postar um comentário