Web Service Testing
SoapUI & JMeter Basics
Ricardo Moura - Test Analyst
Ricardo Moura
Há 7 anos, inimigo número 1 dos desenvolvedores
Aspirante a desenvolvedor
Desde 2014 na equipe de QA da Tecban.
Certificado pelo BSTQB nos níveis Foundation e Agile Tester
#BlockChain
Amante dos carros velhos e rápidos
“Aquele cara chato”
“Por que comprar se eu posso fazer gastando o dobro?”
LinkedIN
www.linkedin.com/in/ricardoamr
Conceitos Stub++ Tipos de Teste Ferramentas
Teoria
Prática Testes
Manuais
Mocking
Testes
Automáticos
Performance
Teoria
Conceitos
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.
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.
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
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
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
Stub++
É 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
É 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
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
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
Tipos de Teste
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
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
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
Ferramentas
Online Parsers
http://www.freeformatter.com/xml-formatter.html
http://jsonlint.com/
Prática
Testes Manuais
1
2
3
4
5
6
Testes Manuais
Mocking
1
2
3
4
5 6
Mocking
7
8
Mocking
9 10
Mocking
Testes Automáticos
1
3
2
Testes Automáticos
4
5
5
6
Testes Automáticos
7
Testes Automáticos
8
9
10
Testes Automáticos
Performance
1
Performance
2
3
4
Performance
5
6
7
8
Performance
9
10
Performance
11
Performance
12
Performance
13
Performance
14
15 16
Links úteis e Referências
https://smartbear.com
https://getpostman.com
http://jmeter.apache.org
http://www.freeformatter.com/xml-formatter.html
http://jsonlint.com
https://community.smartbear.com
https://www.soapui.org/rest-testing/working-with-rest-services.html
https://pt.stackoverflow.com/questions/36745/qual-a-diferen%C3%A7a-entre-mock-stub
http://jmeter.com.br/2013/04/qual-a-diferenca-entre-teste-de-stress-performance-e-carga/
http://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.html
https://labsbank.com/
Ferramentas
Fóruns/guias/tutoriais
Parabéns
Muito obrigado a todos

SoapUI & Jmeter Basics Web service testing

  • 1.
    Web Service Testing SoapUI& JMeter Basics Ricardo Moura - Test Analyst
  • 2.
    Ricardo Moura Há 7anos, inimigo número 1 dos desenvolvedores Aspirante a desenvolvedor Desde 2014 na equipe de QA da Tecban. Certificado pelo BSTQB nos níveis Foundation e Agile Tester #BlockChain Amante dos carros velhos e rápidos “Aquele cara chato” “Por que comprar se eu posso fazer gastando o dobro?”
  • 3.
  • 4.
    Conceitos Stub++ Tiposde Teste Ferramentas Teoria Prática Testes Manuais Mocking Testes Automáticos Performance
  • 5.
  • 6.
  • 7.
    WebService Solução utilizada naintegraçã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.
  • 8.
    OpenBank OpenBanking é umtermo 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.
  • 9.
    SOAP É uma especificaçãopara 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
  • 10.
    REST Diferente do SOAPpois é 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
  • 11.
    XML / JSON Formatopara 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
  • 12.
  • 13.
    É um disparadorde 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
  • 14.
    É 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
  • 15.
    Mock Responde de maneiracondicional, 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
  • 16.
    Service Virtualization Inteligente comoum 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
  • 17.
  • 18.
    Testes de contratovalidam 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
  • 19.
    Valida o conteúdotrafegado 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
  • 20.
    Não devem obrigatoriamenteidentificar 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
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
    Links úteis eReferências https://smartbear.com https://getpostman.com http://jmeter.apache.org http://www.freeformatter.com/xml-formatter.html http://jsonlint.com https://community.smartbear.com https://www.soapui.org/rest-testing/working-with-rest-services.html https://pt.stackoverflow.com/questions/36745/qual-a-diferen%C3%A7a-entre-mock-stub http://jmeter.com.br/2013/04/qual-a-diferenca-entre-teste-de-stress-performance-e-carga/ http://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.html https://labsbank.com/ Ferramentas Fóruns/guias/tutoriais
  • 44.