quinta-feira, 14 de abril de 2011

Seminario - Testes Automatizados

Otavio Henrique Mafra Almeida - RA: 0931457717
Washington Diego da Silva - RA: 0901351470


Introdução

Para acompanhar a complexidade e o tamanho dos sistemas de software atuais tornou-se inevitável uma grande preocupação com as questões de qualidade, desempenho, segurança e tempo de desenvolvimento, exigindo maior eficiência e eficácia durante o ciclo de desenvolvimento. A atividade do teste de software tornou-se essencial, garantindo a produção de informações em relação à qualidade do software que está sendo testado.

Teste de Software

O teste do software é a investigação do software a fim de fornecer informações sobre sua qualidade em relação ao contexto em que ele deve operar. Isso inclui o processo de utilizar o produto para encontrar seus defeitos.

O teste é um processo realizado pelo testador de software, que permeia outros processos da engenharia de software, e que envolve ações que vão do levantamento de requisitos até a execução do teste propriamente dito.

O teste deve ser realizado de maneira criteriosa e sistemática sustentada por processos de teste, a fim de proporcionar uma boa indicação de confiabilidade e qualidade no software como um todo, determinando com mais segurança o ponto de liberação do sistema.

Deve-se analisar os casos de teste e suas execuções de maneira exaustiva afim de se achar defeitos.

O setor de qualidade, dito como teste deve possuir uma visão destrutiva do software, não indo contra o desenvolvedor, mas sim, com o objetivo de de buscar defeitos para que sejam corrigidos, buscando assim uma melhor qualidade e confiabilidade do software.

Existem varias maneiras de se testar um software, porem também existem algumas técnicas muito utilizadas para diversos tipos de execução de testes.

Teste de Caixa Branca(WhiteBox) – Os testes de caixa branca ou testes estruturais, avaliam o comportamento interno do software, trabalhando diretamente sobre o codigo-fonte. Essa técnica é utilizada para testes de condição, teste de fluxo de dados, teste de ciclos, etc.

Teste de Caixa Preta(BlackBox) – Os testes de caixa preta ou testes funcionais, avaliam o comportamento externo do software, dados de entrada são fornecidos, o teste é executado e o resultado obtido é comparado a um resultado esperado previamente conhecido.

Teste de Regressão – Os testes de regressão são aplicáveis quando há uma nova versão do software, ou quando é necessário se executar um novo ciclo de testes durante o processo de desenvolvimento.

Para efeito de aumento de produtividade e de viabilidade dos testes, é recomendada a utilização de ferramentas de automação de teste, de forma que, sobre a nova versão ou ciclo de teste, todos os testes anteriores possam ser executados novamente com maior agilidade.


Automação de Teste
A automação de testes tem grande relevância na qualidade do software, pois tem maiores condições de assegurar que um software irá se comportar de forma adequada quando submetido ao uso depois de instalado na produção. Para tanto, os conceitos de qualidade de software devem ser utilizados durante todo o ciclo de desenvolvimento do sistema, assegurando que cada fase do ciclo de desenvolvimento seja homologada com mais segurança, possibilitando a não propagação de um defeito até o final do desenvolvimento.


Apesar do teste manual de software permitir encontrar vários erros em uma aplicação, é um trabalho desgastante e consome bastante tempo. Também, pode não ser efetivo na procura de classes específicas de defeitos. A automação é o processo de escrita de uma programa de computador para realizar o teste. Uma vez automatizado, um grande número de casos de teste podem ser validados rapidamente. As vantagens da automação tornam-se mais evidentes para os casos dos produtos que possuem longa vida no mercado, porque mesmo pequenas correções no código da aplicação podem causar a quebra de funcionalidades que antes funcionavam.

A automação envolve testes de caixa-preta, em que o desenvolvedor não possui conhecimento sobre a estrutura interna do sistema, ou caixa-branca, em que há pleno conhecimento da estrutura interna. Para os dois casos, a cobertura de teste é determinada respectivamente pela experiência do desenvolvedor ou pela métrica de cobertura de código.

A automação de teste pode ser cara, e geralmente é usada em conjunto com técnicas manuais. Entretanto, pode cortar custos a longo prazo, especialmente na fase de teste de regressão.

Visando o reuso dos testes e scripts, a automação ganha força quando se necessita de testes de regressão.

Quando temos casos de testes que garantem o funcionamento do software automatizados facilita o trabalho dos testadores quando se aplica uma nova versão do software.

Em pouco tempo esses testes de regressão automatizados irão garantir se as atualizações do software interferiram na funcionalidade do mesmo.

Importância da Automação de Testes

A automação de teste agrega muito valor na execução de alguns tipos de testes funcionais, por exemplo, volume, carga e regressão.

Já para testes de usabilidade, os testes automatizados não são indicados, pois para esta categoria a percepção humana (do usuário) é essencial.

A empresa deve avaliar cuidadosamente as vantagens, circunstâncias e o esforço necessário para criar a automação de teste, a fim de que o custo benéfico seja satisfatório.

O custo benefício da automação de teste pode ser verificado sob alguns aspectos:

- Ganho na avaliação da qualidade do software, pois permite realizar maior quantidade de testes em menos tempo;

- Maior cobertura de testes;

- Mais tempo para que a equipe possa realizar outras atividades do processo de teste, como, detalhar e elaborar os casos de testes cuidadosamente e mais complexos.

O retorno sobre o investimento da automação de teste também cresce potencialmente na medida em que a automação é usada de forma mais sistemática e cíclica.

Alguns tópicos são de grande importância para o sucesso dos projetos de automação de teste:

- Apresentar metas realísticas e uma maneira de mensurar o realizado versus o planejado;

- A migração da automação em uma organização deve ser realizada de forma gradativa, não é imediata;

- Importância da parceria entre as equipes de testes manuais e testes automáticos;

- Comunicação periódica aos participantes do cronograma atual, bem como, o planejamento futuro para atingir as metas desejadas;

- Estabelecer métodos de verificação dos resultados dos testes;

- Tratar a automação como um projeto de desenvolvimento; e

- Utilizar corretamente e de forma completa os recursos disponíveis na ferramenta de automação.

Automação em Aplicações Web

A automação para testes em aplicações web, se dá na maioria das vezes em técnicas de caixa preta, em testes funcionais que verificam o comportamento do software após a execução do teste.

A automação é muito comum em testes de Interface ou GUI (Graphical User Interface).

Muitas ferramentas de automação provêm funcionalidades de gravar a execução dos testes, permitindo aos usuários visualizar e analisar o comportamento do software, e se o mesmo está de acordo com o resultado esperado.

Permite também, que esse teste possa ser reexecutado quantas vezes o testados achar necessário.

A vantagem desta abordagem chamada de 'capture replay ou record play' dependendo da ferramenta, é que ela requer pouco ou nenhum desenvolvimento de software, facilitando a utilização por parte do testador que não precisa ter skills avançados em programação.

Uma desvantagem é que algumas modificações do software podem tornar o script obsoleto, sendo assim é necessário refazer a captura do script.

As Ferramentas de automação de testes mais conhecidas podem ser caras, apesar de já existirem diversas ferramentas gratuitas e com bom conjunto de funcionalidades de apoio a automação de testes. Por isso é importante realizar uma analise de custo beneficio no momento de escolher a ferramenta que será utilizada.

Exemplos de Ferramentas de Automação são:

Selenium Open Source

QTP – Quick Test Professional HP Mercury

RFT – Rational Functional Tester IBM Rational

Rational Robot IBM Rational

SilkTest Borland

Cada ferramenta tem sua especialidade resultando numa boa competitividade entre elas.

No caso de aplicações Web o Selenium é uma boa aposta pois é muito eficaz e não tem custo sendo que uma licença das Ferramentas HP e IBM giram em torno de 30 a 40 mil dolares (valor estimado).

Conclusão

Concluímos que a automação de testes pode trazer bons resultados e garantir efetivamente a qualidade do software.

Tendo em vista o valor alto de algumas ferramentas, é necessário traçar um bom plano de custos e benefícios que a automação trará ao projeto.

A automação visa também economizar tempo pois pode-se executar testes numa velocidade muito superior ao teste manual.

Economiza também o retrabalho, pois a automação é extremamente efetiva nos testes de regressão.

Fica claro que cada vez mais, testes, manuais ou automatizados, são essenciais para o ciclo de desenvolvimento do software, cada vez mais as empresas tem contratado o serviço de teste juntamente com o desenvolvimento, visando garantir melhor segurança, qualidade e também diminuir os custos, com a prevenção dos erros.

Nenhum comentário:

Postar um comentário