MATERA utiliza Testes de Regressão Automatizados

Uma boa prática adotada pela MATERA para garantir a qualidade final dos produtos é a realização de Testes de Regressão Automatizados em sua cadeia de processos de desenvolvimento ou evolução de software.

Teste de Regressão é uma expressão usada para descrever um subconjunto de testes, normalmente de número limitado, que podem ser executados em cada versão do software para determinar se ele regrediu em forma ou função desde a versão anterior [1]. Em outras palavras, refere-se à estratégia de executar um conjunto de casos de testes a fim de encontrar erros ou defeitos provocados pela manutenção realizada na versão corrente. Quando um erro ou defeito é encontrado, dizemos que o software regrediu e procuramos corrigir todos os problemas encontrados antes do lançamento da versão corrente.

Podemos destacar diversas vantagens na utilização destes testes, tais como:
• Melhoria na qualidade do produto final;
• Evolução no processo de desenvolvimento;
• Maior competitividade;
• Ganho de produtividade;
• Redução de retrabalho;
• Rapidez no atendimento aos clientes;
• Melhoria da satisfação dos clientes.

Antes de começar a automatizar todos os casos de testes existentes, devemos avaliar se realmente a funcionalidade em questão requer ou não sua adoção. Os principais fatores que devemos considerar são [2]:

• Relevância do teste: qual a frequência de utilização da funcionalidade? Se ela é muito utilizada, convém elaborar casos de testes automáticos;
• Dificuldade nos testes manuais: existem funcionalidades muito complicadas de serem testadas, pois envolvem diferentes perfis de usuários, regras de negócio diferenciadas, integrações diversas, ou seja, devido à esta complexidade a automatização vale a pena;
• Frequência de execução: se o caso de teste for executado somente uma vez, não existe a necessidade de automatizá-la.

Após tomada a decisão de que determinada funcionalidade realmente precisa de testes automatizados, o próximo passo é decidir qual ferramenta será utilizada para tal automação e como serão implementados os casos de testes.

Em um projeto recente para um dos nossos principais clientes, decidimos implementar uma ferramenta específica de testes automatizados para o software que estava sendo mantido, visto que se tratava de um sistema crítico e qualquer erro ou defeito poderia ocasionar enormes prejuízos financeiros. Esta ferramenta de testes foi desenvolvida na linguagem Java com os frameworks JUnit, SeleniumHQ e o conceito de DSL (Domain Specific Language).

DSL é uma abordagem na qual utilizamos uma linguagem de especificação dedicada a um domínio de problema particular, uma técnica de representação do problema específico e/ou uma técnica de solução específica. Ou seja, procuramos trabalhar na linguagem natural do cliente, utilizando termos de negócio conhecidos durante a elaboração dos testes.

Por exemplo, para a realização de um dos casos de testes no sistema, o nosso cliente realizava um procedimento denominado de “casamento de boleta”. Para a realização deste procedimento era necessário executar diversos comandos SQL no banco de dados, tanto para a sua execução, como para a sua conferência. Utilizando a DSL foi possível encapsular todas as operações realizadas em um único método, denominado casaBoleta(). Desta forma, a escrita dos testes foi direcionada para a linguagem natural do domínio do cliente, possibilitando a escrita da forma mais simples e entendível possível.

Outro aspecto interessante do trabalho realizado neste cliente é a evidência de execução do teste. Utilizando esta mesma ferramenta, elaboramos um relatório que exibia as informações necessárias a evidência, como ilustrado a seguir:

O resultado final deste trabalho possibilitou a descoberta de novos erros e defeitos, e claro, a correção de todos eles ainda na etapa de desenvolvimento das features. Isto garantiu a total satisfação do nosso cliente, pois durante a homologação e após a implantação da versão liberada do software, nenhum imprevisto ocorreu e tudo funcionou conforme suas expectativas.

Referências:
[1] IBM Rational Unified Process (RUP) v.2003. Para mais informações acesse http://www-01.ibm.com/software/awdtools/rup/;
[2] Gouveia, C. C.; Oliveira, J. C.; Filho, R. Q., A way of Improving Test Automation Cost-Effectiveness. CAST 2006, Indianápolis, EUA;
[3] Linguagem Java, disponível em http://www.java.com/;
[4] JUnit, disponível em http://www.junit.org/;
[5] Selenium HQ, disponível em http://seleniumhq.org;
[6] Domain Specific Language (DSL), disponível em http://en.wikipedia.org/wiki/Domain-specific_language.

Por MATERA SYSTEMS

Postado em: 14 de abril de 2011

Confira outros artigos do nosso blog

Nova diretoria de Inovação e Negócios da MATERA busca parcerias

20 de abril de 2017

Vania Hoshii

Páscoa Feliz 2017

18 de abril de 2017

Tamiris Fernanda Cella

Hackathon Internet Banking: UI/UX + APIs

15 de março de 2017

Pedro Farci

Three laws that enable agile software development

09 de março de 2017

Celso Gonçalves Junior

Deixe seu comentário