წინა სტატიებში განხილული მაგალითების უმეტესობა იყო ერთი კონკრეტული მისამართის ფარგლებში. რეალურ პირობებში, რომელიც მოიცავს დიდი რაოდენობს სერვისების/Request URL-ების ნახვას, Test Plan-ის აწყობისთვის საჭიროა მცირე დოზით “ავტმატიზაცია”. კომპლექსური Performance testing-ისთვის JMeter-ს გააჩნია ცვლადებისა და ფუნქციების შემოტანის შესაძლებლობა.
ცვლადები და ფუნქციები. “მარტივ ენაზე” ?
ცვლადი — კონტეინერი, რომელიც მოიცავს წინასწარ გაწერილ მნიშვნელობას.
მაგალითი: ცვლადი, რომელსაც აქვს დომეინის მნიშნელობა google.com, და გამოყებული იქნება Test Plan-ის ყველა ელემენტში, შესაძლებელია შევცვალოთ სხვა დომეინით მხოლოდ ერთ ველში(ცვლადის მნიშვნელობაში) და არა ყველგან სადაც გვეწერებოდა “google.com”
ფუნქცია — 1 ან მეტი მოქმედების ერთიანობა.
მაგალითი: ფუნქცია, რომელიც გამოიყენება მიმდინარე თარიღის გამოსატანად, გამოყენებული იქნება ერთხელ და იმუშავებს პროექტის ბოლომდე. არ იქნება საჭიროება ყოველ დღეს, ყველა ველში შეიცვალოს თარიღის მნიშველობა.
როგორ მუშაობს ცვლადები და ფუნქციები JMeter-ში?
განვიხილოთ 2 ძირითადი საკითხი: სინტაქსი და გამოყენების ტექნიკა/პრინციპი.
Java Based JMeter, რათქმაუნდა გამოიყენებს Java-ს სინტაქსს 🙂
ცვლადებისთვის — ${ცვლადისსახელი}
ფუნქცია — ${__ცვლადისსახელი} ფუნქციის გამოსატანად და ფუნქცია, რომელიც მოიცავს ცვლადებს ${__ცვლადისსახელი(ცვლადი1, ცვლადი2, …)}.
ორივე შემთხვევაში მიღებული სტანდარტია ლათინური ასოები.
2 სიტყვიანი ცვლადის შემთხვევაში, ორივე სიტყვა ერთადაა(არ გამოიყენება space(ჰარი)) და მეორე სიტყვა იწყება დიდი ასოთი.
მაგალითად: ${domainName}, ${__getDate}
გამოყენებისას ყველაზე დიდი პლიუსია ის მომენტი, რომ ერთხელ გაწერილი ცვლადი ან ფუნქცია შესაძლებელია გამოვიყენოთ Test Plan-ის ნებისმიერი ელემენტის ნებისმიერ ველში.
მაგალითი: ცვლადი, რომელიც იქნება request URL-ში გვერდის მნიშვნელობა, შეგვიძია გამოვიყენოთ იმავე sampler-ის სახელშიც.
მაგალითი ცვლადის გამოყენებით:
გვაქვს წინა სტატიებიდან ცნობილი https://reqres.in-ის GET Request-ზე მორგებული მისამართ https://reqres.in/api/users?page=2, საიდანაც მოდის მომხმარებლების სია გვერდების მიხედვით.
შემოგვაქვს ცვლადი, რომელის მნიშვნელობაც იქნება გვერდის ნომერი
ვიდეში გამოყენებულია configuration element, რომლითაც შემოგვაქვს ცვლადები ელემენტით User Defined Variables. სადაც მანამდე მოცემულ ცვლადს(Doman)დავამატეთ ახალი ცვლადი — “page”, საწყისი მნიშვნელობით 2.
პირველ სტარტში(ტესტის გაშვება) Sampler-ის სახელი და სრული request URL იყო ცვლადის გარეშე, ხოლო მეორეში — ${page} დაემატა ორივე ველში.
მესამე სტარტის წინ შეიცვალა ცვლადის მნიშვნელობა “0″-ით და result tree-ში ვნახეთ ახალი sampler სახელით “GET Request გვერდისთვის: 0” და request URL-ში “https://reqres.in/api/users?page=0”.
მაგალით 2:
Google-ის ძიებაში ჩაწერილი ციფრი “1” ლინკის სახით წარმოადგენს შემდეგ მისამართს: https://www.google.com/search?q=1.
შემოგვაქვს ცვლადი configuration element(counter)-ის მეშვეობით და ვაგზავნით ძიების request-ებს 1–10 შედეგის მისაღებად.
საწყისი მნიშვნელობაა 1, ბიჯი — 1, მაქსიმალური მნიშვნელობა — 10.
ცვლადის სახელი “number”
რა გაკეთდა და რა მივიღეთ?
1. დავამატეთ counter, რომელიც გავიტანეთ Thread Group-ს გარეთ, რადგან ამ counter-მა იმუშაოს ყველა Thread Group-ზე რაც იქნება გამოყენებული Test Plan-ს ფარგლებში;
2. გავწერეთ sampler-ს სახელში და request URL-ის იმ ნაწილში სადაც გვჭირდებოდა რიცხვების ცვლა.
Thread Group-ში გაწერილია იტერაციების რაოდენობა — 10. რადგან counter აკეთებს თვლას ყოველი ახალი sampler-ისთვის. თუ ჩავწერდით 10-ზე მეტს, counter დაისყწბდა თვლას საწყოსო მნიშვნელობიდან(1);
3. შედეგი: გაიგზავნა 10 request, 10 განსხვავებულ URL-ზე.
P.S. ცვლადის გარეშე იგივე შედეგის მისაღებად დაგვჭირდებოდა 10 განსხვავებული HTTP Request ელემენტის დამატება, განსხვავებული ლინკებით.
მაგალით ფუნქციის გამოყენებით
ისევ https://www.google.com/search?q=, სადაც უნდა გამოვიყენოთ ფინქცია “random”, რომლიც ყოველ sampler-ზე მოგვცემს შედეგს შემთვევითბით არჩეული რიცხვის სახით(1-დან 10-ის ჩათვლით).
დავამატეთ ფუნქცია ${__Random(,,)}, სადაც ავირჩიეთ მინიმალური და მაქსიმალური მნიშვნელობა(1–10) და ჩავსვით საძიებო პარამეტრში.
შედეგად მივიღეთ 10 request, სადაც JMeter შემთხვევითბით ირჩევდა საძიებო ციფრს/რიცხვს.
უფრო საინტერესო და მასშტაბური მაგალით ფუნქციის გამოყენებით 🙂
POST მეთოდით ვამატებთ 10 მომხმარებელს, მისამართზე: https://reqres.in/api/users. ფუნქციით {__time()} ვწერთ request-ის გაშვების დროს და POST-ში პარამეტრად რეგისტრაციის თარიღს. ასევე გამოყენებულია ${Domain} და ${number} ცვლადები.
შედეგად მივიღეთ 10 მოთხოვნა, რომლითაც დავამატეთ 10 განსხვავებული მომხმარებელი, სხვადასხვა პარამეტრით და ყოველ sampler-ს აქვს response-ის დრო.
რა ვისწავლეთ?
ზოგადად, ცვლადებისა და ფუნქციების შინაარსი და რა ტიპის/მასშტაბების ამოცანების შესრულებაა შესაძლებელი მათი მეშვეობით.
შემდეგი სტატიაში განხილული იქნება მონაცემების წაკითხვა CSV ფაილიდან.
ავტორი: anri.phutkaradze