LoadRunner Transações, Texto e Imagem de Cheques, Comentários e Pontos de Encontro
Introdução de melhorias básicas de VuGen Script:
exploramos a Correlação em LoadRunner em detalhes em nosso tutorial anterior neste Completa LoadRunner Tutoriais de Treinamento.
nos dois últimos tutoriais, trabalhamos no tratamento de dados em um script VuGen (correlação e parametrização).
neste tutorial do LoadRunner, veremos os outros aprimoramentos básicos (listados abaixo) necessários para o nosso script:
- transações-para medir a taxa e o tempo de resposta das ações do Usuário.
- verificações de texto e imagem – para garantir que a resposta retornada esteja correta.
- Rendezvous points – para fazer com que os usuários executem uma tarefa simultaneamente.
=> Clique Aqui Para Completar a Série de Tutoriais LoadRunner
Transações em VuGen Script
A mera repetição de scripts de desempenho irá apenas colocar uma carga sobre a aplicação, mas não medir nada. O objetivo final de qualquer script de desempenho é injetar carga e medir a taxa e o tempo de resposta das ações do usuário no aplicativo.
por exemplo, quanto tempo uma pesquisa de Produto Levou quando 100 usuários estão no aplicativo, quantos relatórios são gerados em um tempo de, digamos, 15 minutos e assim por diante. Para medi-los, temos que inserir transações em um script VuGen (após o teste, podemos ver a taxa e o tempo de resposta dessas transações nos resultados).
‘uma transação é uma medida de fim a fim de uma ação do usuário (ou um grupo de ações do usuário) em um aplicativo’.
as transações podem ser inseridas de duas maneiras:
- Durante a Gravação
- Após a Gravação (onde podemos inserir manualmente as funções de transação no script)
Vamos inserir transação para o ‘Login’ ação do usuário em nosso Web Tours aplicação.
em nosso primeiro tutorial, vimos como registrar as ações do Usuário. Durante a gravação, depois de inserir o ‘nome de usuário’ e ‘senha’ na página de Login, antes de clicar no botão ‘Login’, clique no ícone ‘inserir transação inicial’ na barra de gravação flutuante.
vugen solicita o nome da transação. Digite qualquer nome significativo. Nós demos ‘Login’ aqui, mas é uma boa prática seguir uma convenção como esta (número da transação, nome do cenário, ação do Usuário etc.): 01_WebTours_Launch 02_WebTours_Login (e assim por diante).
agora clique no botão Login.
assim que chegarmos à página inicial (página principal), clique no ícone ‘inserir transação final’ na barra de gravação flutuante.
selecione a transação que queremos encerrar (transação de’ Login ‘ aqui).
pare a gravação e veja o script gerado. Podemos ver que as funções de início e fim da transação são inseridas no script (destacadas em amarelo) e todas as solicitações correspondentes à ação do usuário ‘Login’ estão incluídas entre essas funções.
lr_start_transaction("Login");web_submit_data("login.pl","Action=http://127.0.0.1:1080/cgi-bin/login.pl","Method=POST","TargetFrame=","RecContentType=text/html","Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home","Snapshot=t3.inf","Mode=HTML",ITEMDATA,"Name=userSession", "Value=123530.624949372zDftVAzpfcAiDDDDDiVctpzDQVcf", ENDITEM,"Name=username", "Value=jojo", ENDITEM,"Name=password", "Value=bean", ENDITEM,"Name=JSFormSubmit", "Value=off", ENDITEM,"Name=login.x", "Value=69", ENDITEM,"Name=login.y", "Value=8", ENDITEM,LAST);lr_end_transaction("Login",LR_AUTO);
a sintaxe das funções’ início da transação ‘e’ fim da transação ‘ é bastante simples. Ambos têm o nome da transação como o primeiro argumento. A função’ end transaction ‘tem mais um atributo – ‘LR_AUTO’, isso instrui VuGen a passar ou falhar uma transação automaticamente (em vez de especificarmos explicitamente uma condição para um passe ou falha).
se o Load runner encontrar algum erro na execução de solicitações dentro de uma transação, ele falhará na transação, caso contrário, ela passará pela transação.
verificações de texto e imagem no Script VuGen
as verificações de texto são usadas para verificar se a resposta retornada para a solicitação está correta ou não. No tutorial’ correlação’, vimos que às vezes o VuGen pode não mostrar nenhum erro, mas a resposta retornada pode não ser a correta. Portanto, para garantir que a resposta esteja correta, usamos verificações de texto.
por exemplo, quando fazemos login no Aplicativo Web Tours, acessamos a página inicial. Vamos verificar no script que estamos recebendo a resposta correta (página inicial) ou não quando fazemos login.
para fazer isso, temos que identificar algum texto na resposta (página inicial aqui) que pode dizer se a resposta está correta ou não. “Bem-vindo” é um desses textos.
para verificação de texto, usamos a função’ web_reg_find ‘ pouco antes da solicitação.
A sintaxe desta função é:
web_reg_find("Text=","SaveCount=","Fail=",LAST);
Aqui temos três atributos (consulte VuGen de ajuda para obter uma lista completa de atributos):
‘Texto’- Usado para especificar o texto a procurar.
‘SaveCount – – salva o número de ocorrências do texto especificado em um parâmetro que especificamos.
‘Fail’ – pega um dos dois valores – ‘Found ‘ e’ NotFound ‘ e falha no script de acordo.
Então, a função, web_reg_find(“Text=bem-vindo”,”SaveCount=WelcomeCount”,”Fail=NotFound”, ÚLTIMA) procura o texto de ‘boas-Vindas na resposta e salva o número de ocorrências para o parâmetro ‘WelcomeCount’ (e não o script, se o texto não é encontrado).
o script se parece com isso:
web_reg_find("Text=Welcome","SaveCount=WelcomeCount","Fail=NotFound",LAST);web_submit_data("login.pl","Action=http://127.0.0.1:1080/cgi-bin/login.pl","Method=POST","TargetFrame=body","RecContentType=text/html","Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home","Snapshot=t2.inf","Mode=HTML",ITEMDATA,"Name=userSession", "Value=123531.149939247zDftVDDpfcfDiVctpiAVVf", ENDITEM,"Name=username", "Value=jojo", ENDITEM,"Name=password", "Value=bean", ENDITEM,"Name=JSFormSubmit", "Value=off", ENDITEM,"Name=login.x", "Value=66", ENDITEM,"Name=login.y", "Value=12", ENDITEM,LAST);
agora, se reproduzirmos o script, obteremos um erro para a solicitação de login (consulte no log de retransmissão) porque VuGen não encontrou o texto que especificamos, na resposta. Isso ocorre porque não obtivemos a página inicial correta (como mostrado no ‘visualizador em tempo de execução’).
agora vamos corrigir nosso script (correlacionar a sessão de usuários) e repetir o script novamente.
web_reg_find("Text=Welcome","SaveCount=WelcomeCount","Fail=NotFound",LAST);web_submit_data("login.pl", "Action=http://127.0.0.1:1080/cgi-bin/login.pl", "Method=POST", "TargetFrame=body", "RecContentType=text/html", "Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home", "Snapshot=t2.inf", "Mode=HTML", ITEMDATA, "Name=userSession", "Value={corUserSession}", ENDITEM, "Name=username", "Value=jojo", ENDITEM, "Name=password", "Value=bean", ENDITEM, "Name=JSFormSubmit", "Value=off", ENDITEM, "Name=login.x", "Value=66", ENDITEM, "Name=login.y", "Value=12", ENDITEM, LAST);
desta vez, não vemos nenhum erro no log de repetição, mas vemos uma mensagem de que nossa verificação de texto foi bem-sucedida. Portanto, obtivemos a resposta correta desta vez (como é corroborado pelo ‘visualizador de tempo de execução’).
podemos combinar verificações de texto com transações e fazer com que o VuGen passe uma transação se a verificação de texto for bem-sucedida e falhe uma transação se uma verificação de texto falhar.
isto é mostrado abaixo:
lr_start_transaction("Login");web_reg_find("Text=Welcome","SaveCount=WelcomeCount",LAST);web_submit_data("login.pl", "Action=http://127.0.0.1:1080/cgi-bin/login.pl", "Method=POST", "TargetFrame=body", "RecContentType=text/html", "Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home", "Snapshot=t2.inf", "Mode=HTML", ITEMDATA, "Name=userSession", "Value={corUserSession}", ENDITEM, "Name=username", "Value=jojo", ENDITEM, "Name=password", "Value=bean", ENDITEM, "Name=JSFormSubmit", "Value=off", ENDITEM, "Name=login.x", "Value=66", ENDITEM, "Name=login.y", "Value=12", ENDITEM, LAST);if(atoi(lr_eval_string("{WelcomeCount}"))>0){lr_end_transaction("Login",LR_PASS);}else{lr_end_transaction("Login",LR_FAIL);}
usamos ‘if statement’ aqui com o atributo ‘SaveCount’. O parâmetro ‘WelcomeCount’ (que salva o número de ocorrências do texto) é usado como uma condição para passar/falhar a transação. Os atributos’ LR_PASS ‘e’ LR_FAIL ‘ das funções de transação são usados para passar e falhar explicitamente (respectivamente) uma transação.
Nota: usamos duas novas funções aqui – ‘atoi ‘ e’lr_eval_string’. Falaremos sobre essas funções mais tarde.
mais algumas informações sobre a combinação de atributos de função ‘web_reg_find’ :
#1) se apenas o atributo ‘Text’ for usado –
exemplo: web_reg_find – “Text = Welcome”, LAST) –
VuGen procura o texto e falha no script se a pesquisa não for bem-sucedida.
#2) Se somente o ‘Texto’ e ‘SaveCount’ atributos são usados
Exemplo: web_reg_find(“Text=bem-vindo”,”SaveCount=WelcomeCount”, ÚLTIMA) – VuGen pesquisas para o texto e salva o número de ocorrências (mesmo se for zero) para o parâmetro especificado (não falha o script se a pesquisa é bem-sucedida).
#3) se apenas os atributos ‘Text’ e ‘Fail’ forem usados –
exemplo: web_reg_find (“Text=Welcome”, “Fail=NotFound”, LAST) – VuGen procura o texto e falha no script se o texto for encontrado/não encontrado.As verificações de texto também podem ser inseridas durante a gravação usando o ícone’ inserir verificação de texto’ na barra de gravação flutuante. Isso inserirá a mesma função ‘web_reg_find’ no script.
mas é melhor que inserimos esta função manualmente, pois teremos melhor controle principalmente sobre os atributos.
entendemos verificação de texto claramente, agora vamos para verificação de imagem.
a verificação de imagem é usada para verificar a presença de uma imagem especificada em uma resposta. a função’ web_image_check ‘ é usada para verificação de imagem. Esta função deve ser colocada após a solicitação (na resposta da qual estamos esperando a imagem).
exemplo desta função:
web_image_check("Image","Src=/WebTours/images/flights.gif",LAST)
onde o primeiro atributo é qualquer nome significativo e o segundo atributo (‘Src’) é o nome/link da imagem (consulte a ajuda do VuGen para obter a lista completa de atributos).
comentários no Script VuGen
comentários em um script VuGen podem ser inseridos durante a gravação e também manualmente após o script ser gravado.Durante a gravação, clique no ícone’ Inserir Comentário ‘ na barra de gravação flutuante.
digite o comentário (diga ‘Login’ aqui).
Após a gravação, podemos ver os comentários no script, como mostrado abaixo.
/* Login */web_submit_data("login.pl", "Action=http://127.0.0.1:1080/cgi-bin/login.pl", "Method=POST", "TargetFrame=body", "RecContentType=text/html", "Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home", "Snapshot=t6.inf", "Mode=HTML",
em VuGen, uma única linha pode ser comentada apenas colocando ‘/ / ‘ antes da linha como mostrado abaixo:
// web_add_cookie("SRCHD=AF=IESS3N; DOMAIN=www.bing.com");web_add_cookie("SRCHUID=V=2&GUID=89730C3AA700412BAB917005DE9F5F47&dmnchg=1; DOMAIN=www.bing.com");web_add_cookie("SRCHUSR=DOB=20180312; DOMAIN=www.bing.com");
E várias linhas podem ser ligados por colocar ‘/*’ no início e ‘*/’ no final (como mostrado abaixo)
/* web_add_cookie("SRCHD=AF=IESS3N; DOMAIN=www.bing.com");web_add_cookie("SRCHUID=V=2&GUID=89730C3AA700412BAB917005DE9F5F47&dmnchg=1; DOMAIN=www.bing.com");web_add_cookie("SRCHUSR=DOB=20180312; DOMAIN=www.bing.com"); */
Nota: Nos exemplos acima, comentou o cookie funções (web_add_cookie). Falaremos sobre funções de Cookies mais adiante nesta série de tutoriais.
é uma boa prática inserir comentários em cada etapa durante a gravação, pois isso nos ajudará a relacionar as solicitações no script às ações do usuário no aplicativo.
Ponto de encontro no Script VuGen
se tivermos um cenário em que um número maior de usuários execute uma ação simultaneamente no aplicativo (como verificar resultados) e se tivermos que simular o mesmo em nosso teste de desempenho, podemos usar um ‘ponto de encontro’.
um ‘ponto de encontro’ é uma função única e simples em um script VuGen que instrui o load runner (durante um teste com vários usuários) a esperar em uma etapa especificada no script até que todos os Vusers (executando o script) cheguem a essa etapa para que a solicitação subsequente possa ser executada simultaneamente.
a sintaxe para a função Rendezvous é:
lr_rendezvous("MeaningfulName");
esta função pode ser inserida durante a gravação e também manualmente após o script ser gravado.
suponha que queremos colocar uma carga simultânea na etapa de pagamento em nosso aplicativo ‘Web Tours’. Durante a gravação nessa etapa (antes de enviar os detalhes do pagamento), clique no ícone ‘inserir encontro’ na barra de gravação flutuante.
e digite o nome do ponto de encontro (qualquer nome significativo).
após a gravação, podemos ver a função rendezvous no script assim.
lr_rendezvous("Payment");web_submit_data("reservations.pl_3","Action=http://127.0.0.1:1080/cgi-bin/reservations.pl","Method=POST","TargetFrame=","RecContentType=text/html","Referer=http://127.0.0.1:1080/cgi-bin/reservations.pl","Snapshot=t13.inf","Mode=HTML",ITEMDATA,"Name=firstName", "Value=Jojo", ENDITEM,"Name=lastName", "Value=Bean", ENDITEM,"Name=address1", "Value=1st Lane, Down Street", ENDITEM,"Name=address2", "Value=567123", ENDITEM,"Name=pass1", "Value=Jojo Bean", ENDITEM,"Name=creditCard", "Value=123456789101", ENDITEM,"Name=expDate", "Value=0520", ENDITEM,"Name=oldCCOption", "Value=", ENDITEM,"Name=numPassengers", "Value=1", ENDITEM,"Name=seatType", "Value=Coach", ENDITEM,"Name=seatPref", "Value=None", ENDITEM,"Name=outboundFlight", "Value=020;338;05/03/2018", ENDITEM,"Name=advanceDiscount", "Value=0", ENDITEM,"Name=returnFlight", "Value=", ENDITEM,"Name=JSFormSubmit", "Value=off", ENDITEM,"Name=.cgifields", "Value=saveCC", ENDITEM,"Name=buyFlights.x", "Value=63", ENDITEM,"Name=buyFlights.y", "Value=12", ENDITEM,LAST);
agora, quando executamos este script com vários usuários no controlador, o script será executado por Vusers de forma independente, mas os Vusers esperarão nesta etapa de ‘pagamento’ até que todos (ou alguma porcentagem de Vusers definida na política de encontro) cheguem a essa etapa após a qual eles executam essa etapa simultaneamente.
veremos mais sobre a Política de encontro (opções) no tutorial do controlador.
conclusão
até agora, discutimos correlação e parametrização nos tutoriais e transações anteriores, verificações de Texto/Imagem, comentários e pontos de encontro neste tutorial, também cobrimos os métodos de aprimoramento de script mais importantes.
em nosso próximo tutorial, veremos mais alguns desafios de script junto com as maneiras de lidar com eles.
=> Visite aqui para uma série completa de tutoriais LoadRunner
Tutorial anterior / próximo Tutorial
Leave a Reply