Escolar Documentos
Profissional Documentos
Cultura Documentos
Testes Ágeis
● Indispensáveis ao projeto:
– Fornecem a primeira validação do atendimento aos
requisitos funcionais e não-funcionais do sistema
– Consideram fatores subjetivos como a experiência do
usuário, interface do sistema, ...
– Variação no fluxo de execução das funcionalidades
– Aceitação do usuário
Testes Manuais Funcionais - Projeto
● Casos de Uso
– Derivação de casos de teste a partir das regras e fluxos
de execução descritos no requisito
Testes Manuais Funcionais - Projeto
● Casos de Uso
– Derivação de casos de teste a partir das regras e fluxos
de execução descritos no requisito
Testes Manuais Funcionais - Projeto
● Histórias de Usuário
– Descrição geral dos objetivos de uma funcionalidade do
ponto de vista do usuário
– http://wiki.cta.serpro/index.php/User_Stories_e_Ce%C
3%A1rios_de_Uso
Testes Manuais Funcionais - Projeto
● Cenários de Uso
– Descrição que contém atores, as informações por trás
deles, informações sobre o seu ambiente, os seus
objetivos e sequências de ações e eventos
– Pode incluir também os obstáculos, contingências e
êxitos dos atores
– http://wiki.cta.serpro/index.php/User_Stories_e_Ce%C
3%A1rios_de_Uso
Testes Manuais Funcionais - Projeto
● Características:
– Não são ad-hoc e nem criados com antecedência
– Não segue um roteiro rígido (segue guias e diretrizes)
– Baseado em pensamento estruturado e exploração livre
– Adaptativo e flexível
– Enfoca o aprendizado em paralelo
– A execução do teste é guiada/aprimorada com base em
execuções anteriores
– Exige profissionais experientes
– Expande o escopo dos testes tradicionais baseados em
roteiros (introduz variação aos casos de testes)
– Fluxo imediato de feedback (e correção de curso)
– Amplifica a cobertura dos testes
Testes Exploratórios
● O oráculo é o Testador:
– A experiência afeta diretamente a qualidade do teste
– Criatividade
– Observação cuidadosa
– Metódico
– Pensamento crítico
– Aprendizado rápido
– Intuição e Improviso
– Auto-gerenciamento
– Ideias diversificadas: baseia na sua experiência, mas usa
heurísticas, checklists, diretrizes e técnicas formais (classes
de equivalência, valores limítrofes, tabelas de decisão,
diagramas de estado, fluxogramas, etc)
– Recursos: usa ferramentas de apoio
Testes Exploratórios
Ferramentas?
Testes Exploratórios
● Algumas referências:
● Ferramenta para gravação de vídeos:
– http://www.debugmode.com/wink/
● Algumas heurísticas para testes exploratórios em
aplicações web
– http://voce.serpro/04151765905/blog/algumas-heuristicas
-para-testes-exploratorios-em-aplicacoes-web
Tipos de Testes
Testes de Acessibilidade
● Algumas referências:
– https://www.w3.org/WAI/ER/tools/
– http://www.utad.pt/wai/wai-pageauth.html
– http://www.acessibilidadelegal.com/13-validacao.php
– http://wiki.cta.serpro/index.php/Roteiro_para_Avalia
%C3%A7%C3%A3o_de_Acessibilidade
– http://wiki.cta.serpro/index.php/Checklist_para_Aval
ia%C3%A7%C3%A3o_de_Acessibilidade
Tipos de Testes
Testes de Usabilidade
● Algumas referências:
● Heurísticas de Nielsen:
– http://wiki.cta.serpro/index.php/Heur%C3%ADsticas_de_
Nielsen
● Lista de verificação para Testes de Usabilidade:
– http://wiki.cta.serpro/index.php/Lista_de_Verifica%C
3%A7%C3%A3o_de_Usabilidade
Tipos de Testes
Testes de Segurança
Fonte: https://jazz.net/wiki/bin/view/Main/RqmApi
RQM
PSDS RQM
● Algumas referências:
● Material de treinamento:
– http://portal.alm.serpro.gov.br/materiais-de-treinamento/r
qm
● Mentores de ferramentas:
– http://portal.alm.serpro.gov.br/mentores-de-ferramentas
/copy4_of_rqm
Automação de Testes
● Prós:
– Testes de regressão (refatorações e novas
implementações)
– Integração contínua
– Feedback rápido (tempo de execução)
– Confiabilidade do software
– …
● E Contras (?):
– Manutenção
Automação de Testes
● Benefícios:
– Feedback imediato ao desenvolvedor
– Segurança em mudanças e refatorações através dos
testes de regressão
– Ajudam na identificação e isolamento de defeitos
– Em conjunto com plugins de cobertura fornecem uma
visualização das áreas do software cobertas por testes
– Fornecem um exemplo executável de como funciona o
código (ou como deveria funcionar)
Testes Unitários
● JUnit
– Framework opensource, integrado ao Eclipse, com
suporte à criação de testes automatizados na linguagem
de programação Java
– Facilita a criação de código para a automação de testes
unitários com apresentação dos resultados
– Possibilita verificar se cada método de uma classe
funciona da forma esperada, exibindo possíveis erros ou
falhas, podendo ser utilizado tanto para a execução de
baterias de testes como para extensão
Testes Unitários
● JUnit
● Principais Facilidades
– Permite criação de testes unitários para métodos
pertencentes a uma classe
– Permite a definição e execução de um conjunto de testes
unitários – Suites de Teste
– Permite a execução de teste com relato de problemas
ocorridos e onde especificamente ocorreram os erros
– Uma vez escritos, os testes são executados rapidamente
sem que, para isso, seja interrompido o processo de
desenvolvimento
– Facilmente integrável com as IDEs Java já existentes
(Eclipse, Netbeans, JBuilder, ...)
Testes Unitários
Testes Unitários
● Mock
– É uma simulação do objeto real
● Implementa a interface e o comportamento do objeto
Classe Referenciada
Classe Testada pela
Classe Testada
Testes Unitários
Mock Implementação
Object da
Interface
Testes Unitários
● EasyMock
● Foi o primeiro gerador dinâmico de objetos mock, aliviando
os utilizadores manuais, ou a geração de código para eles:
– Criação dinâmica de objetos Mock
– Especifica os valores retornados por casos de teste
– Define apenas o que é necessário
– Código mais légivel
– Pode necessitar de refatoramento no código
– Não simula métodos estáticos e final
Testes Unitários
● JMockit
– Permite que os desenvolvedores escrevam testes
unitários e de integração
– Os testes podem ser facilmente escritos com mock final,
classes e métodos, métodos estáticos, construtores, e
assim por diante; não há limitações
– API de simulação simples e consistente
– Não há métodos especiais ou anotações que devem ser
usados no código de teste, com exceção daqueles que
realmente fazem sentido
Testes Unitários
● EasyMock x JMockit
– O EasyMock (o mesmo é verdadeiro para a maioria dos
frameworks de simulação) não simula métodos static ou
final, podendo apenas simular métodos públicos
– Muitos métodos estáticos no sistema:
● Problema de arquitetura?
● Refatoração?
● Bibliotecas externas?
– JMockit é uma pequena estrutura que pode ajudar
nesses casos
● Permite substituir os métodos dinamicamente com novas
definições
● Permite redefinir métodos privados, static, final e
construtores sem argumentos
Testes Unitários
Testes Unitários
Testes Unitários
Testes Unitários
● EclEmma
– Plugin para o Eclipse que mede e apresenta a cobertura
de testes em percentual
– Os testes são executados no próprio Eclipse e a
apresentação dos trechos cobertos e descobertos é
integrada ao editor Java
– Não requer modificações nos projetos ou qualquer outra
configuração (não-invasivo)
Testes Unitários
● Algumas referências:
● DECTA Ágil – Testes Unitários
– http://voce.serpro/articles/public/0108/5950/DECTA-TV-Te
stesUnit_rios.pdf
● Boas práticas em Testes Unitários:
– http://voce.serpro/siscoaf2/blog/testes-unitarios-boas-prat
icas
● Orientações para Testes Unitários:
– http://wiki.cta.serpro/index.php/Orienta%C3%A7%C3%
B5es_para_Testes_Unit%C3%A1rios
Tipos de Testes
Testes de Integração
● DbUnit
– Extensão do JUnit direcionado para projetos de banco de
dados que, entre outras coisas, coloca seu banco de
dados em um estado conhecido entre as execuções de
testes
– O banco pode ser populado com dados antes dos testes
unitários serem executados
– O banco pode retornar para o estado anterior ao teste
unitário
Testes de Integração / Funcionais
● SoapUI
● Ferramenta open source escrita em Java cuja principal
função é consumir e testar web services
● Dentre as suas principais características, podemos destacar
as seguintes:
– Importação e geração automática das requisições descritas no
WSDL
– Gerenciamento de múltiplos endpoints para cada web service
– Validação das respostas (asserções) de um web service
– Testes funcionais, carga e stress
– Execução de diversos testes em paralelo
– Criação de mock para testes de web service
– Suporta criação de testes complexos utilizando scripts Groovy
Testes de Integração / Funcionais
● SoapUI
● Para iniciar o teste de um web service com o SoapUI,
basta criar um novo projeto e informar o endereço do
WSDL:
Testes de Integração / Funcionais
● SoapUI
● O SoapUI disponibilizará uma request com os dados
necessários para serem informados no web service. Os
campos aparecem com um ponto de interrogação:
Testes de Integração / Funcionais
● SoapUI
● Execução e resultados obtidos:
Testes de Integração / Funcionais
● SoapUI
● É possível criar uma suíte de testes, onde será
possível observar o resultado da execução de todos os
testes, ou analisar os detalhes de cada um deles:
Testes de Integração / Funcionais
● SoapUI
● Exemplo de asserção de um teste que falhou:
Testes de Integração / Funcionais
Testes de Integração / Funcionais
● SoapUI
● Algumas referências:
– http://www.soapui.org/
– http://supst.serpronet.serpro/conteudo/produtos-e-servi
cos/framework-e-componentes/web-services/
Tipos de Testes
Testes de Integração / Funcionais
● Arquitetura REST
– Representational State Transfer
– Arquitetura utilizada para criação de APIs
– Trabalha, geralmente, sobre o protocolo HTTP/HTTPS
usando métodos GET, POST, PUT, DELETE, OPTIONS,
PATCH e HEAD
– Utiliza respostas no formato JSON ou XML
– Demoiselle 2.5
● HTML + REST
● Validação dos serviços que a aplicação expõe para outros
sistemas (integração) e que são consumidos pelas telas do
próprio software (funcional)
Testes de Integração / Funcionais
● Arquitetura REST
– Como testar manualmente:
● Curl em sistemas Unix
● Plugins para navegadores: RESTClient, Poster, ...
– RestAssured:
● Biblioteca Java para simplificar testes de serviços baseados em
REST
● Compatível com os principais métodos
● Possui mecanismos de validação de esquema, corpo e
cabeçalho de requisições
● Utiliza a sintaxe de especificação por exemplos, o Given-When-
Then, muito conhecida em testes dirigidos por comportamento
(BDD)
● https://code.google.com/p/rest-assured/
Testes de Integração / Funcionais
Testes de Integração / Funcionais
● Fest
● Desktop (Fest)
Testes Funcionais Automatizados
● Desktop (Fest)
– Seleção do Driver
Testes Funcionais Automatizados
● Desktop (Fest)
– Frame principal da aplicação
Testes Funcionais Automatizados
● Desktop (Fest)
– Configuração e execução
Testes Funcionais Automatizados
● JMeter
● Software open-source, 100% escrito em Java, mantido pelo
grupo Jakarta Apache, que tem a capacidade de executar
planos de testes configurados através da sua ferramenta
gráfica
● Pode ser utilizado para teste de performance de aplicativos,
simulando uma determinada demanda
● Também é possível adaptá-lo para testes de caixa preta
Testes Não Funcionais
● JMeter
● Requisição HTTP
Testes Não Funcionais
● JMeter
● Resposta de requisição HTTP com asserções
Testes Não Funcionais
● JMeter
● Exemplo de relatório de consulta a um banco de dados
Testes Não Funcionais
● JMeter
● Exemplo de relatório estatístico
Tipos de Testes
Ambiente de Integração Contínua
● Jenkins (http://jenkins.aic.serpro/)
– Ambiente AICAT
– Slaves dedicados a execução de testes automatizados
– Registro dos resultados no RQM e geração de relatórios
– Qualquer pessoa pode disparar os testes
– Possibilidade de disparar, antes da execução dos testes
funcionais automatizados, o job responsável por gerar e
publicar a build do sistema a ser testado
Ambiente de Integração Contínua
● Jenkins (http://jenkins.aic.serpro/)
Ambiente de Integração Contínua
● Jenkins (http://jenkins.aic.serpro/)
Radar de Práticas SUPDE
http://10.200.118.38/techradar/examples/
Tipos de Testes
Conclusão