Testando serviços da web. Usando serviços SOAP externos
SOAP (protocolo de acesso a objetos simples) é um protocolo padronizado para transmissão de mensagens entre um cliente e um servidor. Geralmente é usado em conjunto com HTTP(S), mas também pode funcionar com outros protocolos da camada de aplicação (como SMTP e FTP). O teste SOAP do ponto de vista das técnicas de teste não é fundamentalmente diferente de trabalhar com outras APIs, mas requer
(em termos de teoria de protocolo) e ferramentas especiais de teste. Neste artigo, gostaria de formular uma pequena lista de verificação de conhecimentos e habilidades necessárias, que será igualmente útil tanto para um testador de SOAP (que muitas vezes não tem ideia do que agarrar depois de definir a tarefa) quanto para um gerente que está forçado a avaliar o conhecimento dos testadores e desenvolver planos de treinamento.
Base teórica
O fato de SOAP ser um protocolo tem muitas implicações para testes: é necessário estudar o protocolo em si, os padrões e protocolos "primários" nos quais ele se baseia e (conforme necessário) as extensões existentes.
Natasha
Lembrete
Não se esqueça de escrever um artigo!
Você pode aprender mais sobre XML em w3schools ou codenet (em russo). Preste atenção à descrição dos namespaces (um método para resolver conflitos ao descrever elementos em XML) - seu uso é obrigatório no SOAP.
...
...
XSD
Em seu trabalho, você também pode encontrar diversas “extensões” de SOAP – padrões como WS-*. Um dos mais comuns é o WS-Security, que permite trabalhar com criptografia e assinaturas eletrônicas. Freqüentemente, o WS-Policy é usado junto com ele, com o qual você pode gerenciar os direitos de uso do seu serviço.
Exemplo de uso do WS-Security:
Todas essas extensões são estruturas bastante complexas que não são utilizadas em todos os serviços SOAP; é improvável que seu estudo detalhado no estágio inicial de domínio dos testes SOAP seja relevante.
Como você já entendeu, SOAP é um assunto sério; para trabalhar com ele é preciso conhecer a teoria e vários padrões. Na prática, tal complexidade levaria a custos de mão de obra muito significativos (por exemplo, você teria que olhar sempre o diagrama em um notebook e enviar solicitações com curl). Portanto, foram criadas ferramentas para facilitar o trabalho com SOAP.
Editores XML/XSD
Um bom testador começa o teste na fase de redação da documentação, por isso é conveniente usar editores especiais para testar circuitos. Os dois mais famosos são Oxygen (plataforma cruzada) e Altova (somente Windows); ambos são pagos. Estes são programas muito poderosos que os analistas usam ativamente ao descrever serviços.
Na minha prática, três recursos do editor revelaram-se úteis: visualização XSD, geração de XML baseada em XSD e validação de XML baseada em XSD.
1. Visualização XSD necessário para uma representação visual do diagrama, permitindo identificar rapidamente os elementos e atributos necessários, bem como as restrições existentes. Por exemplo, para um CheckTextRequest, o elemento text é obrigatório e todos os três atributos são opcionais (com o atributo options tendo um valor padrão igual a zero).
A visualização é necessária quando existem muitos tipos e restrições no diagrama. Se você só precisa disso e não quer pagar por editores especiais, você pode considerar alternativas gratuitas (por exemplo, JDeveloper).
2. Geração XML baseada em XSDútil quando você deseja ver um exemplo válido de mensagem. Eu o uso para experimentar rapidamente possíveis conclusões de mensagens e testar as nuances de como as restrições funcionam.
3. Depois de usar o recurso do ponto 2, é útil realizar Validação XML contra XSD– isto é, verifique se a mensagem está correta. Juntos, os recursos 2 e 3 permitem detectar defeitos complicados no XSD, mesmo quando o serviço em si está em desenvolvimento.
O teste SOAP quase sempre envolve o uso do SoapUI. Você pode ler sobre o uso desta ferramenta em várias fontes (,), mas será mais eficaz ler a documentação oficial. Eu identifico 8 níveis condicionais de proficiência em SoapUI:
Nível 1 – posso enviar solicitações
Aprenda a criar um projeto baseado em WSDL. SoapUI pode gerar todas as consultas necessárias para você; Basta verificar se estão preenchidos corretamente e clicar no botão “Enviar”. Depois de desenvolver as habilidades para criar consultas válidas, você deverá dominar a arte de criar consultas incorretas que causam erros.
Nível 2 – Posso fazer suítes de testes e casos de testes
Comece a fazer mini-autotestes. Os kits de teste e casos de teste permitem criar scripts de teste de API, preparar dados para solicitações e verificar automaticamente a resposta recebida para garantir que ela corresponda ao esperado. A princípio, eles podem ser usados simplesmente como coleções de consultas. Por exemplo, se você criou um defeito e deseja verificá-lo rapidamente após corrigi-lo, poderá alocar um kit de teste separado especificamente para solicitações de defeitos.
Nível 3 – consigo escrever afirmações
Depois de dominar os casos de teste, será útil aprender como torná-los automaticamente verificáveis. Depois disso, você não precisará mais procurar informações sobre a resposta com os olhos: se houver verificação automática, os casos serão marcados em verde (se a verificação for aprovada) ou vermelho (se não for aprovada). SoapUI fornece um grande conjunto de asserções possíveis, mas as mais convenientes e simples são Contém e Não Contém. Com a ajuda deles você pode verificar a disponibilidade texto específico na resposta recebida. Essas verificações também oferecem suporte a pesquisas de expressões regulares.
Nível 4 – usar XPath e/ou XQuery em Asserções
Para aqueles que estão um pouco familiarizados com UI usando Selenium, a linguagem XPath é familiar. Grosso modo, o XPath permite pesquisar elementos em um documento XML. XQuery é uma tecnologia semelhante que pode usar XPath internamente; essa linguagem é muito mais poderosa, lembra o SQL. Ambas as linguagens podem ser usadas em Asserções. As verificações com a ajuda deles são mais direcionadas e estáveis, para que seus casos tenham maior confiança.
Nível 5 – Posso escrever testes complexos usando etapas especiais
Os casos de teste podem conter não apenas uma solicitação, mas também várias (por exemplo, quando você deseja emular o cenário de usuário padrão “criar entidade” → “exportar entidade”). Pode haver outras etapas especiais entre as solicitações, por exemplo:
Nível 6 – usando scripts Groovy
SoapUI permite que você escreva scripts Groovy em vários lugares. O caso mais simples é gerar dados na própria consulta usando inserções $(=). Eu uso essas inserções o tempo todo:
Scripts completos podem ser usados como etapas em casos e verificações. Em algum momento, você descobrirá que várias etapas especiais do quinto nível podem ser substituídas por um script.
Nível 7 – usando MockServices
SoapUI baseado em WSDL pode gerar objetos Mock. Um objeto simulado é a simulação mais simples de um serviço. Com a ajuda de “simulados” você pode começar a escrever e depurar casos de teste antes mesmo de o serviço estar realmente disponível para teste. Eles também podem ser usados como “stubs” para serviços temporariamente indisponíveis.
Nível 8 – Deus SoapUI
Você sabe a diferença entre pago e versões gratuitas SoapUI e use a API SoapUI no código. Você usa plug-ins e executa casos por meio da linha de comando e/ou CI. Seus casos de teste são simples e fáceis de manter. Em geral, você “comeu o cachorro” neste instrumento. Eu adoraria conversar com alguém que domine o SoapUI nesse nível. Se você é um, inscreva-se nos comentários!
Aqui está um exemplo de como é uma solicitação à API YandexSpeller, feita usando groovy-wslite:
importar wslite.soap.*
def cliente = novo SOAPClient("http://speller.yandex.net/services/spellservice?WSDL")
def resposta = client.send(SOAPAction: "http://speller.yandex.net/services/spellservice/checkText") (
corpo (
CheckTextRequest("lang": "ru", "xmlns":"http://speller.yandex.net/services/spellservice") (
texto("erro")
}
}
}
afirmar "erro" == resposta.CheckTextResponse.SpellResult.error.s.text()
afirmar "1" == [e-mail protegido]()
Até onde eu sei, ainda não existem estruturas de alto nível (como Rest-assurured) para testes de SOAP, mas recentemente apareceu uma ferramenta interessante - o caratê. Com sua ajuda, você pode descrever casos de teste de SOAP e REST na forma de scripts como Cucumber/Gherkin. Para muitos testadores, recorrer ao karatê será uma solução ideal, porque tais cenários, em termos de complexidade de escrita e suporte de casos, ficarão em algum lugar entre o uso do SoapUI e a escrita de sua própria estrutura para testar SOAP.
É improvável que você queira testar o SOAP apenas para si mesmo (como faria com REST). Este é um protocolo pesado usado em soluções empresariais sérias. Mas seu peso é ao mesmo tempo um presente para o testador: todas as tecnologias utilizadas são padronizadas e existem ferramentas de trabalho de alta qualidade. Tudo o que é exigido do testador é o desejo de aprendê-los e usá-los.
Vamos montar a mesma lista de verificação de habilidades necessárias para um testador. Então, se você está apenas começando a testar serviços SOAP, você precisa saber e ser capaz de usar:
Como você pode ver, a ênfase principal está no aprendizado dos padrões no SoapUI, basta apenas poder realizar consultas; Ao mergulhar nos testes SOAP, você encontrará tarefas que exigirão habilidades e conhecimentos mais sérios, mas não deve tentar aprender tudo de uma vez. A consistência no aumento do nível de complexidade das tarefas executadas é muito mais importante. Seguindo esta recomendação, um dia você perceberá que se tornou um bom especialista na área!
Serviços da Web em 1C
Este artigo discutirá questões de integração de 1C com serviços da web existentes e do uso do próprio 1C como um serviço da web.
Neste caso, serviços web serão entendidos como sistemas que operam na Internet e proporcionam interação com eles não apenas via SOAP (que é justamente um serviço web), mas também de outras formas, incluindo solicitações HTTP(S) regulares.
A plataforma 1C81 introduziu a implementação de serviços web.
Mas seu uso está repleto de riscos:
O cliente recebe um documento de venda (recibo) somente se a transação de serviço for bem-sucedida. Caso contrário, é possível uma situação em que o cliente recebe um cheque e tem a certeza de que recebeu um serviço, mas na verdade não o recebeu.
Os serviços da web SOAP usam esquemas WSDL e objetos XDTO para representar dados.
Para usar um serviço externo, você precisa baixar seu esquema WSDL.
Às vezes, o esquema WSDL não carrega em 1C. Você pode verificar a validade (correção) do esquema usando qualquer validador de esquema WSDL, por exemplo http://www.validwsdl.com/.
Você precisa fazer upload do esquema para algum site http (você pode usar ftp) e indicar o endereço do arquivo no qual o esquema é carregado:
A peculiaridade de carregar WSDL em 1C é que esquemas válidos podem não ser carregados. Não há validador embutido, então é necessário procurar um erro por meio de análise destrutiva, reduzindo sucessivamente o número de elementos do circuito. Você pode, por exemplo, excluir a descrição do serviço web.
Para testar um serviço web externo funcional, use o processamento “Test ArbitraryWebService.epf” do pacote deste artigo.
O teste pode ser usado usando o exemplo do serviço Morpher, que recusa nomes (endereço do serviço http://www.morpher.ru/WebServices/Morpher.asmx?WSDL):
Desta forma, você pode testar qualquer serviço que possua pontos de entrada simples contendo parâmetros de tipos simples: número, data, string.
Durante o processamento, você também pode especificar o login e a senha necessários para autorizar o acesso ao serviço web.
Para depuração, você pode usar o programa SoapUI, que pode enviar uma solicitação arbitrária a um serviço da web e receber uma resposta dele.
Infelizmente, o SOAP em 1C se comporta de maneira bastante caprichosa ao trabalhar através do protocolo HTTPS. A prática mostra que é impossível conseguir uma conexão HTTPS, embora a possibilidade seja declarada na plataforma; A falta de ferramentas de diagnóstico e depuração para descobrir os motivos pelos quais a conexão não é estabelecida está cobrando seu preço. Portanto, é conveniente usar SOAP via CURL.
O mecanismo integrado para usar HTTPS implica que todos os certificados devem ser publicados em um arquivo pem comum no diretório do programa 1C.
É uma boa prática criar uma operação no serviço que informe que o serviço está disponível. Isso facilita a vida dos integradores; será mais fácil para eles verificar se a comunicação com o serviço está estabelecida.
Por exemplo, você pode usar a operação Hello sem parâmetros, que simplesmente retorna o valor booleano True.
O procedimento está bem descrito na documentação: file:///C:/Program%20Files/1cv81/AddDoc/RU/V8AddDoc81.htm#_Toc176167634:
A tarefa de publicar serviços da Web se resume a colocar os arquivos de configuração *.1cws dos serviços da Web no diretório apropriado do servidor da Web com as configurações apropriadas para o servidor da Web. Para publicar serviços Web, você deve executar o comando do menu “Administração | Publicação de serviços da Web."
Como resultado da execução deste comando, a janela de publicação de serviços da Web será aberta.
A janela de publicação de serviços da Web contém o caminho para o servidor da Web e duas listas:
Usando o botão "Conexão...", você deve especificar o servidor web no qual deseja publicar os serviços web.
A janela de seleção do caminho do servidor web permite especificar o caminho de duas maneiras:
O serviço Web selecionado é publicado usando o botão “Publicar”
Para cancelar a publicação de um serviço Web, use o botão “Excluir”.
Você pode publicar em um diretório local ou via FTP. Você também poderá publicar em um servidor remoto por meio de um caminho UNC se o servidor remoto fizer parte da rede local.
Após a publicação, o serviço web fica disponível no endereço “http://localhost/test.1cws” ou “http://xxx.ru/test.1cws”, onde xxx.ru é o endereço do servidor remoto e localhost é o endereço típico do servidor local.
Para acessar o serviço você precisa passar pela autenticação.
As questões de autorização são bem abordadas aqui: http://www.forum.mista.ru/topic.php?id=341168 e no arquivo de documentação:///c:/Program%20Files/1cv81/AddDoc/RU/V8AddDoc81. htm
Normalmente, um serviço da web é executado sob um usuário específico (geralmente um usuário especialmente criado). Você pode “anexar” um usuário 1C usando autenticação do Windows ao usuário do Windows IUSR_ (desativar a autorização 1C para o usuário). Alternativamente, você pode limpar a lista de usuários 1C, então a autorização não é necessária.
Se forem necessários vários usuários, você pode criar vários logins para o servidor web, atribuir um usuário do Windows a cada um deles e, consequentemente, registrar o acesso aos usuários do Windows em 1C.
Nas propriedades Usuário e Senha do objeto WSProxy, não é o login 1C que é usado, mas o login do usuário do servidor web.
Para testar 1C como um serviço web, use o processamento “Test ArbitraryWebService.epf”, conforme descrito na seção “Testando um serviço web externo em execução”.
O arquivo 1cws é uma descrição WSDL do serviço web 1C.
Normalmente, os serviços de varejo são usados para fornecer vários serviços à população - aceitar pagamentos, reembolsar empréstimos, transferências de dinheiro, comprar programas etc.
Neste caso, é gerado um recibo em 1C pelo serviço prestado, no qual são salvos os parâmetros da transação. Após o qual este cheque é impresso para o cliente com informações detalhadas sobre o serviço prestado. É possível imprimir um cheque preliminar para que o cliente confirme os dados inseridos a partir de suas palavras com sua assinatura.
O serviço pode ser integrado de diferentes maneiras em um programa de varejo escrito na linguagem 1C (UT, Varejo e outros):
Para armazenar informações sobre uma transação em um recibo, você precisa criar uma parte tabular adicional “Vendas complexas” com os detalhes:
O diretório “Vendas Complexas: Parâmetros” contém uma lista de parâmetros de transação.
É mais lucrativo usar a parte tabular do que um conjunto de detalhes, porque uma transação pode ter muitos deles, e em outras verificações não relacionadas ao serviço, esses dados não serão utilizados e ocuparão espaço extra. Além disso, tal solução é universal para qualquer serviço e não requer reestruturação de dados após a implementação de um novo serviço.
O vendedor recebe um marcador separado (ou impresso, para não alterar a configuração), no qual pode visualizar a placa de dados da transação do cheque.
Vejamos o exemplo do serviço condicional Paym para a configuração “Varejo”.
Se Linha de Vendas Complexas estiver indefinida Então Product.Name = LP Abreviado(Linha de Vendas Complexas. Valor);
Usando programas que se integram ao 1C
XDTO é frequentemente usado em serviços da web. Aqui estão as dicas e receitas mais importantes para usar o XDTO em 1C.
XDTO na plataforma 1C
Pacotes XDTO, descritos no ramo “Objetos XDTO” da configuração, estão disponíveis para criação de tipos e objetos na fábrica global XDTO Factory. Isto não é imediatamente óbvio.
Alguns tipos no esquema não possuem nome; para obtê-los, é necessário passar pela hierarquia de tipos.
Problemas comuns com XDTO Diferentes formatos de esquema XSD Em alguns formatos, as tags são chamadas xs:, em alguns xsd:, mas 1C entende ambos os formatos com segurança. Certa vez, houve uma situação em que o XSD foi importado para 1C normalmente sem erros, mas não criou um único pacote. O motivo foi a ausência de um atributo
na tag, portanto, 1C não sabia em qual pacote colocar o diagrama, mas não gerou erros.
Suporte de serviço
EM últimos anos O uso de APIs e a dependência de serviços da web aumentaram. Aqui está uma lista de 12 ferramentas de teste de serviços da web que irão ajudá-lo significativamente.
Nos últimos anos, a popularidade e o uso de serviços web ou APIs aumentaram. Um serviço web ou API é um conjunto de procedimentos ou componentes de software que ajudam um aplicativo a se comunicar ou executar algum processo/transação formando uma conexão entre outro aplicativo ou servidor. Existem basicamente dois tipos de serviço web: REST e SOAP para transferência de dados e informações através do Internet Protocol.
Como esses serviços Web estão disponíveis na Internet e distribuídos em diferentes redes, eles são vulneráveis a vírus e ameaças à segurança que afetam os processos que dependem deles. Portanto, testar serviços web ou APIs torna-se necessário para garantir que funcionem corretamente e respondam corretamente às solicitações. O teste de software é uma área promissora na área de TI, onde você pode obter o conhecimento necessário;
Existem diversas ferramentas de teste comerciais e gratuitas no mercado para testar sua conectividade, resposta e desempenho. Essas ferramentas de teste automatizam testes para um cenário específico, como testes funcionais, testes de carga, testes de desempenho, etc.
Aqui estão 12 excelentes ferramentas de teste de serviços da web que você deve considerar para seus requisitos de teste de API ou de serviços da web:
SoapUI é uma ferramenta de teste multiplataforma de código aberto. Ele pode automatizar testes funcionais, de regressão, de consistência e de carga de serviços SOAP e REST. É fácil de usar e oferece suporte a tecnologias e padrões avançados para modelar e incentivar o comportamento de serviços da web.
TestingWhiz é uma ferramenta de automação de teste “sem código” compatível com APIs/serviços web. Ele permite realizar testes funcionais, de compatibilidade e de carga e trabalhar com serviços web REST e SOAP por meio de uma interface WSDL sobre HTTP e FTP.
SOAPSonar fornece testes de serviços web ponta a ponta para HTML, XML, SOAP, REST e JSON. Ele fornece testes funcionais, de desempenho, de compatibilidade e de segurança usando os padrões OASIS e W3C.
SOAtest é uma ferramenta para testar e validar APIs e aplicativos orientados por API. Ele fornece suporte robusto a blocos funcionais, integração, segurança, simulação e testes de carga usando tecnologias como REST, JSON, MQ, JMS, TIBCO, HTTP e XML.
TestMaker é uma ferramenta de código aberto para testar e monitorar o desempenho de serviços web e aplicativos SOA usando PushtoTest. Ele roda em Jython (Python escrito em Java). TestMaker pode redirecionar testes Selenium, testes SoapUI, testes Sahi ou quaisquer testes escritos em Groovy, Java, Python, PHP, Ruby e Perl em testes de carga funcionais.
Postman é outra ferramenta de teste de API/serviço web que possui poderoso suporte ao cliente HTTP. Possui um construtor de consultas fácil de usar que permite escrever casos de teste e gerenciar dados e tempos de resposta para testes e gerenciamento eficientes de casos de teste de API.
VRest é uma ferramenta desenvolvida para testes e benchmarking de APIS REST e serviços web. Ele também oferece suporte a testes de aplicativos da web, móveis e desktop que interagem com APIs ou serviços HTTP de terceiros.
HttpMaster é outra ferramenta exclusiva para testar serviços web REST. Ajuda os testadores a testar o comportamento das APIs REST e a validar a saída em formatos como XML, JSON e HTML. Com sua ferramenta HTTP universal, o HttpMaster também ajuda o desenvolvedor a modelar a atividade do cliente e o comportamento de resposta do aplicativo API.
Runscope é uma ferramenta simples para testar e monitorar o desempenho da API. Runscope também oferece suporte a testes de APIs e backend de aplicativos móveis.
Rapise é uma ferramenta de automação robusta com recursos poderosos e extensíveis. É baseado em uma arquitetura aberta e flexível para testes funcionais rápidos de serviços web REST/SOAP. Rapise também fornece suporte para teste de aplicações web incorporadas em Java, .NET, Ajax, Silverlight e Flash.
WebInject é uma ferramenta gratuita para testes automatizados funcionais, de aceitação e de regressão de serviços da web. É uma ferramenta de linha de comando baseada em Perl, o que facilita a execução de testes, pois não há necessidade de perder tempo na linha de comando. Além disso, não possui interface IDE, o que significa que os testes são escritos externamente interface do usuário WebInject. Pode ser executado em plataformas com interpretador Perl.
Finalmente, Storm é outra ferramenta de código aberto do CodePlex para testar serviços web escritos em Java ou .NET. Atualmente ele suporta apenas serviço web SOAP.
Claro que a lista não termina aqui, pois existe uma enorme variedade de ferramentas para testar serviços web.
Cadastre-se agora ou solicite uma ligação com uma consulta gratuita!
Hoje em dia é raro que uma aplicação moderna funcione sem uma API. Isto é verdade tanto para um site simples quanto para sistemas distribuídos altamente carregados. O teste de API é uma das principais tarefas no processo de garantia de qualidade. Não é surpreendente que a demanda por testadores que saibam testar APIs esteja aumentando a cada dia. Neste curso, você compreenderá métodos, ferramentas e abordagens em testes de API, adquirirá o conhecimento necessário, o que sem dúvida terá um efeito positivo em seu valor como especialista em testes.
Este curso será útil para alunos familiarizados com os conceitos básicos de teste de software que desejam crescer ainda mais e aprimorar suas habilidades.
Programa do curso:
Lição 1. Introdutório. Protocolo SOAP
Lição 2: Protocolo SOAP. Arquitetura REST
Lição 3. Apresentando o SoapUI. Trabalhando com um projeto REST
Lição 4. Trabalhando com projeto REST (XML)
Lição 5. Trabalhando com projeto REST (JSON)
Lição 6. Trabalhando com scripts Groovy
Lição 7. Recursos adicionais