Artigo do tipo Tutorial
Recursos especiais neste artigo:
Artigo no estilo Prático
Autores: Jeanne de Castro Trovão e Arilo Claudio Dias Neto
Porque esse artigo é útil
Este artigo é útil quando já se tem certa familiaridade ou interesse no desenvolvimento de aplicações para a plataforma Android e encontra-se a necessidade de um apoio ferramental para desenvolver e executar testes funcionais para aplicações desta plataforma através da automatização dos testes. Para isso, o artigo irá abordar alguns conceitos sobre testes funcionais (caixa-preta) e automação de testes. Em seguida, será discutido o tema de teste de software de aplicações para dispositivos móveis e, por fim, será apresentado um framework, Robotium, para automação de testes funcionais de aplicações para a plataforma Android com um exemplo prático usando um ambiente real de desenvolvimento de software.

Os testes de software podem ser classificados por diferentes técnicas. No artigo “Introdução a Teste de Software”, publicado na edição 1 da Engenharia de Software Magazine, os autores comentam os tipos de técnicas de teste que podem ser aplicadas em projetos de software, destacando que os conceitos por trás de tais técnicas permanecem inalterados independente da plataforma do software ou paradigma de desenvolvimento aplicado no projeto. Além disso, o objetivo principal destas técnicas continua a ser o mesmo: revelar falhas durante a execução de um software.

As técnicas de teste são classificadas de acordo com a origem das informações utilizadas para estabelecer os requisitos de teste. Elas contemplam diferentes perspectivas do software e impõe-se a necessidade de se estabelecer uma estratégia de teste que contemple as vantagens e os aspectos complementares dessas técnicas. As técnicas existentes são: técnica funcional e estrutural.

O foco deste artigo é discutir a técnica de Teste Funcional, que se caracteriza como um dos tipos de teste mais importantes para a detecção de defeitos e, consequentemente, a garantia da qualidade em um software, pois ele verifica cada funcionalidade especificada pelos requisitos do software, observando seu comportamento e resultado para avaliar se ela está executando conforme o esperado. Ao longo do artigo será discutida a aplicação de uma técnica de teste funcional por meio de uma ferramenta de automação em um aplicativo desenvolvido para uma plataforma de dispositivos móveis.

Para aplicar a técnica de teste funcional, devem ser criados vários cenários visando testar as diferentes possibilidades de uso para uma funcionalidade através de possíveis entradas para o sistema com resultados esperados já conhecidos. Para cada entrada e resultado esperado definido, executamos o teste e comparamos o resultado para saber se o sistema atingiu ou não o resultado ou comportamento esperado, em outras palavras, saber se o teste passou ou falhou.

O sucesso do teste funcional é influenciado pela cobertura dos testes, ou seja, quanto maior o número de entradas testadas, maior será a confiabilidade no software. No entanto, é quase impraticável, ou inviável, testar todas as possíveis entradas de um sistema (como por exemplo, quando o número de entradas corresponde ao conjunto de números naturais). Para resolver isso, existem critérios de geração de testes para a técnica de teste funcional que ajudam a encontrar um subconjunto de testes que diminuem o esforço de teste, mas não diminuem a confiabilidade do mesmo. Alguns exemplos de técnicas conhecidas são: particionamento por classes de equivalência e a análise do valor limite. Mais uma vez, o artigo “Introdução a Teste de Software”, publicado na edição 1 da ESM, contém detalhes sobre estes critérios de geração de testes funcionais.

Automação de testes

Mesmo com a ajuda de técnicas que ajudam a diminuir o esforço de teste, quando se trata de sistemas mais complexos, a execução de testes funcionais de forma manual pode se tornar um gargalo no cronograma de desenvolvimento do sistema. O problema se torna ainda maior ao ter que executar o teste de regressão, onde todos os testes funcionais já executados anteriormente para antigas versões do software devem ser reexecutados para verificar, por exemplo, se uma nova versão do sistema continua estável ou se algum efeito colateral foi observado após a correção de falhas no software.

Por este motivo, cada vez mais profissionais da indústria procuram ferramentas que apoiem a automatização dos testes funcionais, na tentativa de diminuir o tempo de criação e execução dos testes.

Automação dos testes consiste no uso de algum apoio computacional, ferramentas, para controlar a execução dos testes, a comparação dos resultados e comportamentos obtidos com a execução dos testes em relação aos resultados e comportamentos esperados, a configuração das pré-condições dos testes e outras atividades do controle dos testes e relato de seus resultados. Comumente, a automação dos testes envolve automatizar um processo manual já estabelecido em uma organização que utiliza um processo de testes formalizado.

...
Quer ler esse conteúdo completo? Tenha acesso completo