learn advanced soapui groovy scripting concepts soapui tutorial 9
Os tutoriais anteriores do SoapUI foram uma introdução ao SoapUI e seus conceitos de programação. De agora em diante, passaremos para conceitos de script Groovy mais avançados. Vamos ser assim com Declarações de fluxo condicional - declarações booleanas e iterativas. Em seguida, passaremos para a coleção de matrizes.
Este é o 9º tutorial em nosso Série de tutoriais SoapUI .
As instruções condicionais são usadas para controlar o fluxo da execução. Aqui estão diferentes tipos de instruções condicionais no Groovy.
O que você aprenderá:
fase do ciclo de vida de desenvolvimento de software
- # 1. Declarações de controle ou lógicas:
- # 2. Loop ou declarações iterativas:
- # 3. Coleção Arrays:
- Conclusão
- Leitura recomendada
# 1. Declarações de controle ou lógicas:
Essas declarações resultam em verdadeiras ou falsas com base nas condições lógicas. Eles são AND, OR e NOT. Os símbolos usados são ‘&& (e)’, ‘|’ | e '! (Exclamação) 'respectivamente. O comportamento é conforme mencionado na tabela verdade:
Tabela de verdade do operador “E”:
Tabela de verdade do operador “OR”:
Operador “NÃO” para fins de negação
Afirmação condicional: as linguagens de programação suportam as seguintes instruções condicionais:
- Declaração If ... else
- Instrução If ... else if ... else
- Operador ternário
- Declaração de mudança
A) if… else block sintaxe:
E se
{
}
Outro
{
}
Nesta sintaxe, quando for verdadeiro, a instrução fornecida será executada. Precisamos colocar as declarações entre chaves se o bloco contiver mais de uma linha. Isso instrui que todo o bloco deve ser executado com base na condição.
Veja o exemplo de trecho de código.
int a=100 int b=200 if (a>b) { log.info('B is greater than A'); } else { log.info('A is greater or both are equal'); }
A se ... mais ... instrução deve conter apenas um bloco ELSE.
B) Múltiplos blocos condicionais: sintaxe if… else if… else
E se
{
}
Senão se
{
}
Outro
{
}
If ... else if ... else declaração é um pouco diferente de se ... mais ... declaração - em termos que tem mais se quadra. Este bloco é usado para adicionar várias condições. Veja o exemplo a seguir.
int a=100 int b=200 int c=300 if (a>b && a>c) { log.info('A is greater than B and C'); } else if (b>a && b>c) { log.info('B is greater than A and C'); } else { log.info('C is greater than A and B or All are equal numbers'); }
E veja a captura de tela de saída para o script acima: Além disso, use isso como uma referência para o exemplo do operador boolen também:
C) Operador ternário:
Este operador funciona de forma semelhante a se ... mais demonstração. Ele possui dois operandos, como ponto de interrogação (TRUE) e dois pontos para instruções FALSE / padrão.
ciclo de vida de bugs em teste de software
def A = 100
def B = (A> 100) ? “PASSA”: “FALHA”
log.info (B)
Aqui está a captura de tela do script acima.
D) Caso de troca: Esta instrução permite várias ramificações condicionais com valores diferentes. Também suporta a comparação de referências de objetos de classe, expressões regulares, coleções como matrizes, listas etc.
Interruptor
{
caso :
;
intervalo;
caso :
;
intervalo;
predefinição:
;
}
O caso declarações comparam os valores com o interruptor valor do caso. Se for uma correspondência, o bloco de caso correspondente é executado. Assim que o bloco for executado, ele deve ser interrompido pela palavra-chave “break”. Se perdemos a palavra-chave “break” no final da instrução case, a execução será movida para a próxima instrução case - e isso pode não ser necessário. Caso nenhum dos casos seja verdadeiro, predefinição bloco será executado. Observe que o Groovy oferece suporte a todos os principais operadores e palavras-chave, pois é incorporado às bibliotecas java.
def country='India' switch(country) { case 'Japan': log.info('Country matched with 1st case statement'); break; case 'Australia': log.info('Country matched with 2st case statement'); break; case 'India': log.info('Country matched with 3st case statement'); break; default: log.info('None of the matches available :('); }
Here’s the output screenshot for the above script.
# 2. Loop ou declarações iterativas:
Eles permitem a repetição sempre que precisamos e são especialmente úteis para testes baseados em dados.
Por exemplo, vamos supor que temos alguns códigos postais em um arquivo Excel. Para recuperar todos os códigos postais, um por um, do arquivo Excel e passá-los para o serviço, ou seja, GetSuppliersZipcode , podemos usar instruções iterativas. SoapUI também fornece um recurso alternativo chamado fonte de dados e etapas de teste de loop de fonte de dados. (Disponível apenas em versões de teste e licenciadas do SoapUI Pro).
Podemos usar as seguintes instruções iterativas no script groovy:
- For loop
- Loop while
Para loop:
pra (; ; )
{
;
}
Na sintaxe acima, a inicialização denota o ponto de partida do loop e, com base na condição, o loop continuará ou parará a execução.
Veja o script abaixo
para (int i = 1; i<=10; i++)
{
log.info ('Loop Iterado' + i + 'vezes');
}
O script acima produzirá os resultados conforme mostrado na imagem a seguir.
Agora vamos usar a instrução de controle e a instrução iterativa em nosso mundo de teste real. Siga as etapas abaixo:
- Adicione Testcase com o nome desejado. Eu criei como “T9_GetSupplierByZipCode_TestCase”.
- Em seguida, adicione uma propriedade chamada “Property_Zipcode”
- Adicione a etapa de solicitação de teste para o serviço “GetSupplierByZipCode” e coloque o nome da propriedade na solicitação, conforme mostrado na captura de tela.
Adicione a etapa de teste de script groovy conforme mostrado na captura de tela a seguir.
No excelente editor de scripts, escreva o seguinte script.
for (int zipCode=1; zipCode5) { log.info('**************Stopped Execution*************'); break; } testStep.run(testRunner,context); log.info('Executed ' + zipCode + ' times') }
O seguinte resultado é recebido no log, bem como na tela de resposta do serviço.
(Clique na imagem para ver ampliada)
Loop “while”:
Sintaxe:
enquanto
{
;
}
A lógica acima também pode ser implementada usando o loop “while”.
Portanto, a essência é que a instrução iterativa pode ser usada para:
- Execute os casos de teste ou etapas de teste repetidamente
- Controle o fluxo da execução através das instruções de controle.
# 3. Coleção Arrays:
A coleção de matriz ajuda a armazenar vários valores em uma única variável ou objeto. O índice do array começa em zero por padrão e precisamos usar esse índice com o nome do array para acessar o valor correspondente armazenado no array. Sintaxe para declarar matrizes em um script bacana:
ágil metodologia scrum entrevista perguntas respostas
arrayName = new Object (5) ou,
arrayName = new Object (10) () ou,
arrayName = novo objeto (10) (10) ()
Observação : Ao declarar arrays, devemos especificar o tamanho inicial, caso contrário, ocorrerá um erro de compilação. Aqui está o exemplo simples para a matriz dimensional única.
ArrayObj = novo objeto (5);
ArrayObj (0) = “Caso de teste1”;
ArrayObj (1) = “Caso de teste2”;
ArrayObj (2) = “Caso de teste3”;
ArrayObj (3) = “Caso de teste4”;
ArrayObj (4) = “Caso de teste 5”;
Agora vamos implementar isso em nossas etapas de teste regulares. Portanto, adicione propriedade, solicitação de teste e etapa de teste de script no conjunto de testes do projeto, conforme mostrado na captura de tela a seguir.
Em seguida, clique duas vezes na etapa de teste do script e escreva o seguinte script.
def MAX_LIMIT = 5 def zipCodes = new Object(MAX_LIMIT) zipCodes(0) = '92704' zipCodes(1) = '99362' zipCodes(2) = '31401' zipCodes(3) = '90247' zipCodes(4) = '87102' int i=0; while (i<5) { if (i<5) { testRunner.testCase.testSteps('Properties'). setPropertyValue('Property_Zipcode',zipCodes(i)); def testStep = testRunner.testCase.testSteps('GetSupplierByZipCode'); testStep.run(testRunner,context); log.info('Loop executed ' + i + ' times'); } i++; } log.info('Testcase execution is completed....');
In this script, we initialized array object as 5 and assigned five zip codes in each array location respectively. Next part of the script is iterative block. Here we iterate the loop up to 5 times. Each time array value will be assigned to the property and then move to GetSupplierByZipCode web service to pass this array value in the request. After that, service step will be executed with the zip code. Finally we will get the following message in the log as shown in the screenshot.
Portanto, os arrays são muito úteis para lidar com vários elementos com tipos diferentes. Mais prática promoverá uma melhor compreensão e facilidade de uso.
Conclusão
Essa foi uma introdução geral com exemplos de blocos condicionais ou lógicos que incluem IF ... ELSE, switch e declarações ternárias. Essas instruções são controladas por operadores lógicos como AND, OR, NOT. Quando comparado ao bloco “switch”, o bloco “if” é rápido e simples. Para lidar com várias coleções, como matrizes, para iterar o processo de teste, as instruções de loop são críticas.
Próximo tutorial SoapUI # 10 : Na próxima postagem, aprenderemos “Scripting Groovy Orientado a Objetos em SoapUI”.
Mais conceitos úteis surgirão nos próximos tutoriais do SoapUI Groovy Script. Continue lendo e compartilhe suas experiências e dúvidas nos comentários abaixo.
Leitura recomendada
- Como lidar com exceções em scripts SoapUI Groovy - Tutorial # 11 do SoapUI
- Como escrever um script Groovy básico em SoapUI - Tutorial SoapUi # 6
- Como usar propriedades em SoapUI Groovy Script - SoapUI Tutorial # 7
- Tutoriais detalhados do Eclipse para iniciantes
- 4 características importantes do SoapUI Pro para Pro Audience - SoapUI Tutorial # 12
- Mais de 15 tutoriais SoapUI: a melhor ferramenta de teste de API de serviços da Web
- Processo de instalação e download do SoapUI passo a passo - Tutorial # 3 do SoapUI
- Um guia rápido SoapUI para armazenar dados de solicitação e resposta em um arquivo - Tutorial # 15 do SoapUI