Buscar

Teste de Softwares Aula_10

Prévia do material em texto

TESTES DE SOFTWARE – AULA 10
Ulisses Sperle Graça
Rio de Janeiro, outubro de 2011
FERRAMENTAS 
DE TESTE DE SOFTWARE
1. Estudar as técnicas de teste automatizado de software
e suas limitações;
2. Analisar o uso de ferramentas de teste automatizado no
desenvolvimento de sistema;
3. Analisar as principais ferramentas de teste
automatizado de software;
4. Resumo da Disciplina.
3
OBJETIVOS DESTA AULA
Por muitos anos os testes de software foram feitos com
simulação das situações criadas pelos programadores e/ou
analistas utilizando dados fictícios ou amostra dos dados
reais.
Estes dados eram gerados manualmente ou através da
utilização de programas temporários preparados
especificamente para este fim.
4
INTRODUÇÃO
Com o avanço das tecnologias como o advento das
interfaces gráficas (GUI) e da Internet, por exemplo, os
sistemas tornaram-se muito mais complexos.
Nesta aula serão abordadas as diferenças entre teste e
automação de testes. Será discutida a limitação dos testes
automatizados e apresentada as diferentes técnicas
utilizadas na automatização.
5
INTRODUÇÃO
Analisaremos o uso de ferramentas de teste automatizado
no desenvolvimento de sistema e as principais ferramentas
de teste automatizado de software utilizadas atualmente.
6
INTRODUÇÃO
Vale lembrar que nas aulas anteriores estudamos que as
revisões e testes são os instrumentos de controle de
qualidade de um projeto de desenvolvimento de software.
Estudamos também que o processo de teste está inserido
em todo o ciclo de vida do desenvolvimento da aplicação,
desta forma, serão apresentadas diversas ferramentas de
apoio a tais atividades, que variam quanto a parâmetros e
técnicas implementadas, e ainda, pelas linguagens
suportadas.
7
INTRODUÇÃO
O que é Automação de teste?
A diferença entre testes e automação de testes, é que no
primeiro você realiza a tarefa de testar, e no segundo você
usa um software que imita a interação com a aplicação no
que se refere ao teste tal qual um ser humano faria
(Graham e Fewster,1999).
8
AUTOMAÇÃO DO TESTE DE SOFTWARE
O conceito de testes manuais é a utilização de recursos
humanos para realizar todos os procedimentos de testes
especificados. Este tipo de teste requer um número grande
de profissionais e um controle eficiente de documentos em
circulação. O risco inerente a esse tipo de teste é a grande
incidência de erros humanos no processo devido a:
• A não execução dos procedimentos na ordem
estabelecida.
• A valores digitados erradamente.
9
AUTOMAÇÃO DO TESTE DE SOFTWARE
Os testes automatizados utilizam ferramentas de testes
que possibilitem simular usuários ou atividades humanas de
forma a não requere procedimentos manuais no processo
de execução dos testes. Entretanto requerem profissionais
especializados e tempo no desenvolvimento da automação
dos testes.
10
AUTOMAÇÃO DO TESTE DE SOFTWARE
Teste Regressivo
Quando temos nova versão de software e comparamos com
a versão anterior, o teste é em função de algo do passado.
Teste Progressivo
Quando utilizamos um script de teste de desempenho para
simular a quantidade de 1.000 usuários virtuais e depois
reexecutamos numa nova versão do sistema usando agora
2.000, desejamos ver o comportamento futuro do sistema.
11
TIPOS DE TESTE AUTOMATIZADO
Para agilizar e automatizar o processo de teste a maioria das
ferramentas de automação de testes apresentam como
principais características:
Gravador: Quase todas as ferramentas possuem de alguma
forma um gravador que, uma vez acionado, grava, na forma
de uma linguagem interna (seja visual ou não) tudo que o
usuário fizer, ficando armazenado no script de teste.
Script de teste: Uma vez acionado pelo executor de testes,
o script entra em execução, pois o que foi gravado vai sendo
repetido.
12
TÉCNICAS DE TESTE AUTOMATIZADO
Para agilizar e automatizar o processo de teste a maioria das
ferramentas de automação de testes apresentam como
principais características (cont.):
Executor de teste ou playback: recurso da ferramenta que
executa o que foi gravado ou registrado no script de teste.
Cada ferramenta implementa este recurso de uma forma,
porém todas fazem a mesma coisa.
Data-driven test ou teste dirigido a dados: Consiste em
criar um script e depois fazer isso de uma massa de dados
que será executada no script, dirigindo a forma como será
executado assim como a quantidade de vezes que ele será
executado.
13
TÉCNICAS DE TESTE AUTOMATIZADO
Segundo Graham e Fewster (1999), existem diferentes
estratégias consideradas ao se projetar e escrever scripts de
teste:
✓ Scripts lineares;
✓ Acripts estruturados e scripts compartilhados;
✓ Data-driven scripts(técnica orientada a dados);
✓ Keyword-driven scripts(técnica orientada a palavras
chave).
14
TÉCNICAS DE TESTE AUTOMATIZADO
Scripts lineares
É uma técnica que faz gravação ou replicação direta das
ações do teste sem nada acrescentar. Esta técnica consiste
em gravar as ações executadas por um usuário sobre a
interface gráfica de uma aplicação e converter estas ações
em scripts de teste que podem ser executadas quantas
vezes for necessário.
15
TÉCNICAS DE TESTE AUTOMATIZADO
Scripts estruturados ou scripts compartilhados
Esta técnica aciona mais de um comando simulando a
execução em paralelo de diversas ações. Na técnica de
scripts compartilhados os scripts podem ser utilizados em
mais de uma caso de teste e tendem a ser scripts genéricos
como login e logout, por exemplo. Ambas as técnicas são
uma extensão da técnica de scripts lineares possibilitando
que os scripts de teste gravados sejam, alterados para que
desempenhem um comportamento diferente.
16
TÉCNICAS DE TESTE AUTOMATIZADO
Data-driven scripts (técnica orientada a dados)
É uma técnica que separa os dados usados pelo script do
script em si. Consiste em extrair dos scripts de teste os
dados de teste e armazená-los em arquivos separados da
lógica de execução devido ao alto volume de dados. Uma
das vantagens na utilização desta técnica é a possibilidade
da utilização do mesmo script com diferentes arquivos de
dados, em diferentes formatos.
17
TÉCNICAS DE TESTE AUTOMATIZADO
Keyword-driven scripts (técnica orientada a palavras
chave)
Técnica muito semelhante ao data-driven script, porém neste
caso utiliza palavras-chaves ou ações específicas que são
usadas constantemente em mais de um script. Consiste em
extrair dos scripts de teste, o procedimento de teste que
representa a lógica de execução.
18
TÉCNICAS DE TESTE AUTOMATIZADO
As revisões e testes são instrumentos de controle de qualidade
de um projeto. Existem diversas ferramentas de apoio a tais
atividades, que variam tanto quanto a parâmetros como técnicas
implementadas e linguagens suportadas:
✓ Ferramentas de Planejamento de testes;
✓ Ferramentas de Revisões e Inspeções;
✓ Ferramentas de Modelagem e Automação;
✓ Ferramentas de Suporte aos Testes;
✓ Ferramentas de execução e conferência;
✓ Ferramentas de Revisões e Inspeções.
19
FERRAMENTAS DE TESTE AUTOMATIZADO
Ferramentas de Planejamento de Testes
Esta categoria de ferramenta apoia o processo de planeja-
mento dos trabalhos de testes, definindo escopos,
abordagens, agendando reuniões e programando atividades.
Auxiliam no processo de documentação inicial, possibilitando
gerar planejamentos padronizados e na elaboração de
estimativas de tempo e custo, além de dimensionar as
equipes de acordo com o tempo disponível.
20
FERRAMENTAS DE TESTE AUTOMATIZADO
Ferramentas de Planejamento de Testes (cont.)
Estas informações são geradas a partir da coleta inicial de
requisitos de software que irão possibilitar dimensionar o
esforço e complexidade envolvida no processo de
desenvolvimento. As principais características destas
ferramentas são a análise de criticidade e a geração de
documentos.
21
FERRAMENTAS DE TESTE AUTOMATIZADO
Ferramentas de Planejamento de Testes (cont.)
A análise de criticidade permite direcionar esforçosde forma
eficiente, através da priorização dos sistemas, indicando quais
sistemas devem ser testados inicialmente. Permite também
estimar tempo, custos e equipes através da análise da
complexidade de cada software, baseando-se nos requisitos a
serem cumpridos.
A geração de documentos facilita o processo de
documentação, através da utilização de parametrizações e
modelos de documentos. Permitem também gerenciar as
versões dos modelos e ainda possibilitam organizar workflow de
preparação, elaboração, inspeção e aceite dos documentos.
22
FERRAMENTAS DE TESTE AUTOMATIZADO
Ferramentas de Revisões e Inspeções
Auxiliam nas revisões de documentos e inspeções técnicas
que podem ser aplicadas em todas as etapas do processo
de desenvolvimento. Principais características:
✓ Análise de Complexidade;
✓ Compreensão do Código;
✓ Análise Sintática de Semântica.
23
FERRAMENTAS DE TESTE AUTOMATIZADO
Ferramentas de Revisões e Inspeções (cont.)
A análise de complexidade auxilia a identificar onde estão
as áreas mais complexas e quais possuem maior risco de
introduzir novos erros, além de quantificar o esforço e os
custos dos testes a serem empregados.
A análise sintática e de semântica localiza erros na sintaxe
e na semântica dos comandos empregados no código, os
quais o compilador não acusaria, sendo possível detectar
defeitos antes de os testes formais serem iniciados.
24
FERRAMENTAS DE TESTE AUTOMATIZADO
Ferramentas de Revisões e Inspeções (cont.)
A compreensão de código auxilia a inspecionar os códigos-
fontes, possibilitando avaliar a aderência a padrões de
programação estabelecidos pela organização. Exemplos:
✓ Padrão de nome,
✓ Utilização de rotinas corporativas,
✓ Variáveis não utilizadas,
✓ Sub-rotinas internas não acionadas,
✓ APIs incompatíveis com determinados SOs.
25
FERRAMENTAS DE TESTE AUTOMATIZADO
Ferramentas de Modelagem e Automação
As ferramentas de modelagem auxiliam no processo de
construção e documentação de como serão testados todos
os requisitos de negócio, possibilitando registrar todos os
procedimentos de teste a cada cenário estabelecido e ainda
o processo de conferência dos dados.
Estas ferramentas possibilitam o desenvolvimento de scripts
automatizados.
26
FERRAMENTAS DE TESTE AUTOMATIZADO
Ferramentas de Modelagem e Automação (cont.)
As principais características destas ferramentas são:
✓ Modelagem de Testes;
✓ Gerador de Massa de Dados;
✓ Automatizador de Scripts.
27
FERRAMENTAS DE TESTE AUTOMATIZADO
Ferramentas de Modelagem e Automação (cont.)
A modelagem de testes auxilia nos processos de
planejamento e construção dos testes, identificado os
diversos cenários estabelecidos para cada requisito a ser
testado. Determina as informações que devem ser
empregadas em cada procedimento de teste, atingindo o
menor nível de detalhamento.
Lembre que a modelagem dos testes é um processo
mental, assim nenhuma ferramenta substituirá a expe-
riência e abstração de um bom analista de testes, porém
estas ferramentas auxiliam na estruturação das ideias.
28
FERRAMENTAS DE TESTE AUTOMATIZADO
Ferramentas de Modelagem e Automação (cont.)
A geração de massa de dados possibilita a geração
automática de massa de dados baseada no planejamento
dos testes e critérios estabelecidos de forma a garantir uma
massa diferenciada e nas circunstâncias desejadas.
A automação de scripts possibilita a interação entre as
rotinas automatizadas e os softwares a serem testados
através da captura de valores em telas, arquivos, relatórios
ou mesmo em banco de dados. Permitem automatizar não
somente as atividades de entrada, como o processo de
conferência (análise da saída das informações).
29
FERRAMENTAS DE TESTE AUTOMATIZADO
Ferramentas de Execução e Conferência
Possibilitam o gerenciamento e o controle do processo de execução, 
reexecução e medição dos testes planejados. Possibilitam integra-
ção entre as demais fases, de forma a executar os testes seleciona-
dos no planejamento. Suas principais características são:
✓ Análise de Cobertura;
✓ Executor de Scripts;
✓ Simuladores de Performance;
✓ Testadores de Memória.
30
FERRAMENTAS DE TESTE AUTOMATIZADO
Ferramentas de Execução e Conferência (cont.)
A análise de cobertura possibilita estabelecer uma métrica
de cobertura do teste através do monitoramento das linhas
de código executadas. Os testes de caixa branca requerem
esse tipo de ferramenta, pois possibilita visualizar áreas do
código não cobertas pelos testes em execução.
31
FERRAMENTAS DE TESTE AUTOMATIZADO
Ferramentas de Execução e Conferência (cont.)
Como estas ferramentas são normalmente integradas aos
softwares de planejamento de testes e desenvolvimento de
scripts, o executor de scripts permite executar os
procedimentos na ordem e frequências preestabelecidas.
Permite também a gestão do ciclo de testes como um todo,
com o controle de execução de cada caso de testes, o
controle da reexecução dos testes e os desvios de testes
provocados por erros inesperados.
32
FERRAMENTAS DE TESTE AUTOMATIZADO
Ferramentas de Execução e Conferência (cont.)
Os testadores de memória auxiliam no processo de
detecção de problemas em relação ao uso e alocação de
memória pela aplicação. Sendo assim devem ser específicas
para cada linguagem e ambiente.
Os simuladores e medidores de performance estão
diretamente ligados aos testes de sistema, como os testes
de carga, de volume e de performance, já que nessa
categoria é impossível conceber a ideia de realizar testes
sem empregar ferramentas específicas.
33
FERRAMENTAS DE TESTE AUTOMATIZADO
Ferramentas de suporte aos testes
Estas ferramentas apoiam atividades que não estão
diretamente ligadas ao processo de testes, porém garantem
que determinados itens fundamentais desse processo estão
sendo bem gerenciados. Suas principais características são:
✓ Gerenciamento de defeitos;
✓ Gerenciamento de configurações.
34
FERRAMENTAS DE TESTE AUTOMATIZADO
Ferramentas de suporte aos testes (cont.)
O gerenciamento de defeitos tem como objetivo acompanhar e
controlar os defeitos identificados durante o ciclo de vida do
software e monitorá-los até a sua solução final, através da
produção de um grande número de indicadores de qualidade.
Também é conhecido por: gerenciamento de erros, gerenciamento
de problemas, registro de ocorrências, controle de incidências.
35
FERRAMENTAS DE TESTE AUTOMATIZADO
Ferramentas de suporte aos testes (cont.)
O gerenciamento de configurações permite controlar e coordenar
as mudanças efetuadas em documentações, fontes e ambientes
físicos. Estabelece a relação entre os artefatos de software e
identifica-los através de um único controle de versão enquanto
ocorre modificações de fontes de uma versão anterior.
36
FERRAMENTAS DE TESTE AUTOMATIZADO
Qual ferramenta utilizar?
Agora iremos descrever de uma forma resumida alguma das
principais ferramentas utilizadas no mercado:
✓ Junit;
✓ Jmeter;
✓ RFT (IBM Rational Functional Tester);
✓ Mercury Quality Center;
✓ JaBUTi (Java Bytecode Understanding na Testing).
37
FERRAMENTAS COMERCIAIS DE TESTE
Framework de código aberto que tem o objetivo de facilitar a
automatização de testes unitários em aplicações que utilizam
a linguagem Java e possui integração com várias IDEs.
Para acessar maiores informações: http://www.junit.org/index.htm
38
JUnit
http://www.junit.org/index.htm
A IDE (Integrated Development Environment ou Ambiente
Integrado de Desenvolvimento), é um programa de
computador que reúne uma série de características e
ferramentas de apoio ao desenvolvimento de software com o
objetivo de agilizar este processo.
39
JUnit
http://javafree.uol.com.br/wiki/IDEs
Ferramenta de código aberto para aplicações Java
projetada inicialmente para testes funcionais e de
performance para aplicações web.
Para acessar maiores informações consulte:
http://jakarta.apache.org/jmeter/
40
JMeter
http://jakarta.apache.org/jmeter/
RFT (IBM Rational FunctionalTester)
Ferramenta de propriedade da empresa IBM para
automação de testes de regressão, funcional, de interface
gráfica (GUI) e data driven.
Para acessar maiores informações consulte:
http://www-01.ibm.com/software/awdtools/tester/functional/
41
IBM Rational Functional Tester
http://www-01.ibm.com/software/awdtools/tester/functional/
Conjunto de ferramentas de propriedade da empresa HP
que abrange diferentes tipos de testes, linguagens e
arquitetura.
Possui uma interface integrada baseada na Web para teste
e gerenciamento de qualidade de software em diversos
ambientes de aplicação.
Para acessar maiores informações consulte:
http://www8.hp.com/br/pt/home.html
42
Mercury Quality Center
http://www8.hp.com/br/pt/home.html
JaBUTi (Java Bytecode Understanding na Testing)
Ferramenta de suporte ao teste estrutural para programas
Java, desenvolvida pela USP. O seu diferencial entre as
outras ferramentas existentes com a mesma função de
teste é que toda a análise estática necessária para a
realização do teste é feita sobre o programa objeto, ou seja,
sobre o bytecode Java e não sobre o programa fonte.
Maiores informações: http://ccsl.icmc.usp.br/pt-br/projects/jabuti-0
43
JaBUTi
http://ccsl.icmc.usp.br/pt-br/projects/jabuti-0
Um projeto de automação de teste é um investimento alto e
de longa duração, e por isso mesmo os dirigentes das
organizações obviamente tem expectativas em relação a
custos e aos benefícios trazidos pela sua implementação.
Por isso um projeto de automação de testes deve ser
cercado de alguns cuidados:
44
Projeto de Automação de Teste
Ferramenta: Seleção da ferramenta certa, adequada à
tecnologia usada e que possa integrar com as metodologias
de desenvolvimento e teste.
Metodologia: Existência de metodologias de
desenvolvimento e testes consolidadas e usadas, que
possam se integrar com a ferramenta escolhida.
45
Projeto de Automação de Teste
Infraestrutura: Disponibilidade de máquina e seus
recursos, um projeto em desenvolvimento (em fase de
testes) dedicado para o projeto de automação de testes.
Recursos: Garantia por parte dos dirigentes da
organização quanto à disponibilidade de recursos humanos
capacitados e financeiros para o projeto, apoio para as
mudanças requeridas nos processos de desenvolvimento e
testes, assim como nas ferramentas de desenvolvimento.
46
Projeto de Automação de Teste
Quais casos de testes são candidatos a automatização?
A cada nova versão de um software torna-se necessário
realizar um novo conjunto de teste, visando ampliar as
melhorias implementadas.
Desta forma também é necessário reexecutar um conjunto
de casos de testes (todos ou partes) de forma a avaliar se
as mudanças realizadas danificaram outras partes do
software que já funcionava.
47
Quando usar a Automação de Teste?
Os custos relativos à execução dos testes de progressão
não são importantes. Porém são importantes os custos de
execução dos testes de regressão, pois estes devem ser
reexecutados ao longo do ciclo de vida do software.
48
Quando usar a Automação de Teste?
Devemos considerar que os testes automatizados visam a
otimização da execução dos testes, mas deve ser feito
preventivamente um estudo de viabilidade técnica e um
estudo de custo beneficio para sua utilização ou não.
Os testes automatizados não substituem os testes
manuais, eles são complementares e para isso devemos
levar em consideração que todo caso de teste é
naturalmente candidato à automação, mas naturalmente
nem todos são recomendáveis para automação:
49
Quando usar a Automação de Teste?
1. Se o caso de teste for algo pontual e específico de alguma
versão do software e não se espera que seja testado em
versões futuras, não é candidato à automação.
2. Se o caso de teste tiver características de uso de uma
grande massa de dados, indica ser um data-driven test que
precisará provavelmente ser automatizado.
3. Não existe tempo hábil para automatizar o teste desejado
devido ao cronograma, então ele não será
momentaneamente um teste a ser automatizado.
50
Quando usar a Automação de Teste?
Tem-se notado o crescente aumento do Teste de Software
no mercado de TI, como também a presença de
profissionais qualificados na área de testes em empresas
de desenvolvimento de software.
➔ Cresce a consciência que esta parte do processo
exige conhecimentos específicos, contribuindo
decisivamente para o sucesso de um projeto.
51
CONCLUSÃO
Existem diferentes soluções e metodologias aplicáveis no
mercado, que contribuem para a construção de uma boa
estrutura na fase de teste de software, considerando que é
uma das fases mais importantes no ciclo de
desenvolvimento quando se fala em qualidade.
É necessário que os processos de TS sejam aplicados em
todas as etapas do ciclo de vida do software, de acordo
com a situação em que o software se encontre.
52
CONCLUSÃO
Para que o teste de software consiga manter a qualidade do
sistema em um mercado em que o tempo é um dos
principais fatores considerados, surge a necessidade de
que o teste seja realizado de forma mais rápida, o que leva
a grande procura por técnicas de automação.
A automação de testes é uma solução ágil, porém acarreta
em custos e tempo de criação e manutenção.
53
CONCLUSÃO
Por este motivo, a necessidade de automação ainda é
muito discutida no mercado, o que leva a empresa a avaliar
as vantagens, circunstâncias e o esforço necessário para
criar a automação de teste, analisando se o custo-benefício
será satisfatório.
Tem surgido cada vez mais vagas para profissionais
experientes, demonstrando que o mercado se preocupa
cada vez mais em entregar produtos de qualidade.
54
CONCLUSÃO
Os profissionais de teste de software têm por objetivo
identificar o maior número possível de irregularidades no
sistema, para que o software chegue ao cliente com o
menor número possível de bugs, reduzindo
significativamente os gastos das empresas com o re-
trabalho e evitando o descontentamento do usuário final.
55
CONCLUSÃO
Diante da incessante competitividade do mercado atual,
empresas procuram garantir a qualidade de seus produtos
como fator que represente sua capacidade em desenvolver
sistemas com qualidade.
No mercado existem varias técnicas de teste de software
que auxiliam essa garantia, cabendo a cada empresa
analisar quais realmente estão de acordo com suas
políticas e possibilidades de investimentos.
Fonte: O Teste de Software no Mercado de Trabalho
Filipe Bernardes Barbosa e Isabelle Vasconcelos Torres
56
CONCLUSÃO

Continue navegando