O documento discute testes em webservices, mencionando conceitos como SOAP, REST, XML, JSON e tipos de testes como contrato, funcional e performance. Também apresenta ferramentas como parsers online e links úteis sobre o tema.
2. Eu
www.linkedin.com/in/ricardoamr
QA desde 2010 e desde 2014 na equipe de QA da Tecban.
Certificado pelo BSTQB nos níveis Foundation e Agile Tester
“Team Integration Matters”
Amante dos carros velhos e rápidos
#BlockChain
Evangelista DIY
“Por que comprar se eu posso fazer gastando o dobro?”
5. WebService
Solução utilizada na integração entre diferentes aplicações.
Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já
existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis.
6. OpenBank
OpenBanking é um termo relativamente novo
https://labsbank.com/
Bancos fornecem uma API publica para desenvolvedores criarem soluções
Aplicativos possuem permissão para movimentar as contas dos clientes
One Bank,
one Public API,
available in the cloud,
for developers of
multiple platforms.
7. SOAP
É uma especificação para a troca de informação entre sistemas
Formata os dados trocados entre diferentes sistemas e estabelece um padrão que garanta
a interoperabilidade entre eles.
Requer um WSDL(Web Services Description Language) para cada serviço disponibilizado
É baseado em XML para composição das mensagens
Método de transporte genérico
Pode usar qualquer meio de transporte existente para enviar sua requisição, SMTP, HTTP,
JMS
Simple Object Access Protocol
8. REST
Diferente do SOAP pois é somente um estilo arquitetural usado em projetos de aplicações
Utiliza para transporte o protocolo HTTP e seus métodos(GET, POST, PUT, DELETE, HEAD)
Mais simples que SOAP e não requer um WSDL pois interage com os serviços sempre da
mesma forma(http)*
Flexivel para composição das mensagens, pode utilizar XML, JSON, HTML
Pode possuir um contrato WADL(Web Application Description Language) que determina o
contrato entre as partes.
Representational State Transfer
9. XML / JSON
Formato para a criação de documentos com dados organizados hierárquicamente.
Não depende das plataformas de hardware ou de software, um banco de dados pode,
através de uma aplicação, escrever em um arquivo XML, e um outro banco distinto pode
ler então estes mesmos dados.
Trabalha com <tags>, requer abertura e fechamento de cada elemento da estrutura.
Padrão amplamente utilizado em diversos sistemas(Excel, TestLink, Mantis, ...)
JavaScript Object Notation
Formato leve para intercâmbio de dados computacionais.
Fácil leitura para humanos e fácil criação para maquinas
Não utiliza <tags>, estrutura mais simples
Utilizado em sistemas de comunicação assíncrona
É um formato independente
eXtensible Markup Language
11. É um disparador de transação, as mensagens partem dele contra
um sistema, é usado para emular estímulos, muito usado para
testar webservices.
Driver
Request A
Request B
Request C
WS
12. É um rebatedor, responde sempre da mesma forma, é “burro”,
muito simples e sem capacidade de tomar decisões complexas
além de responder X para A, Y para B...
Stub
Request A
Request B
Request C
Response X
Response Y
Response Z
13. Mock
Responde de maneira condicional, possui a inteligência não
presente nos Stubs pois faz verificações no conteúdo das
chamadas para determinar as respostas.
Request A
Request B
Request C
Response X
Response Y
Response Z
14. Service Virtualization
Inteligente como um Mock na maneira de responder, porém é
capaz de aprender como o sistema se comporta e substitui-los.
WSSem SV
WSSV Learn
WS
SV SV
1
2
3
16. Testes de contrato validam se as aplicações envolvidas em uma integração,
tiveram suas entradas e saídas desenvolvidas em conformidade com um
contrato WSDL/WADL pré-definido.
Essencial em sistemas do tipo WebService
Pode ser feito manualmente ou automaticamente através de ferramentas.
Ajuda a limpar o “lixo” criado durante a fase de desenvolvimento,
principalmente quando esta é iniciada sem uma especificação mensagens
pronta.
Reduz significativamente a quantidade de problemas de integração nas fases
posteriores de teste
Contrato
17. Valida o conteúdo trafegado nas mensagens esta correto.
Se os inputs dos usuários do sistema forem persistidos de alguma forma nas
mensagens, o conteúdo destas deve ser verificado.
É mais abrangente se feito utilizando Drivers e Mocks.
Também valida o comportamento do sistema em caso de respostas http
inválidas.
Funcional
18. Não devem obrigatoriamente identificar em que momento uma aplicação cai,
este é apenas um dos objetivos.
Denominados testes negativos.
Ajuda a equipe a simular a carga de um ambiente de produção, permitindo
otimizações no código do software ou no hardware onde esta instalado.
Deve-se isolar bem o sistema alvo para não serem gerados falsos resultados.
Divididos geralmente em Carga e Stress, onde o primeiro simula um numero
crescente de usuários até o momento de ruptura da aplicação e o segundo
além do grande volume de requisições, insere algum cenários de crash a fim
de validar a recuperação da aplicação.
A monitoração da aplicação durante o teste é tão ou mais importante que o
próprio teste.
Performance