Apache JMeter — საწყისები: Listener-ები და მათი შესაძლებლობები

როგორც იყო საუბარი პირველ სტატიაში Performance Testing-ის შესახებ, მნიშვნელოვანი მომენტია ტესტის შედეგის შენახვა და მისი ანალიზი.
JMeter-ის განხილვის შემთხვევაშიც გვიწევს შევეხოთ ისეთ მნიშვნელოვან საკითხს, როგორიცაა Listener-ები.

გავაგზავნეთ მილიონი მოთხოვნა და სახეზეა აპლიკაციის შენელება ან სერვისის გაჩერება. გვჭირდება პასუხები შემდეგ კითხვებზე:

  1. რა რაოდენობის request-ზე დაიწყო პრობლემა?
  2. რა იყოს საშუალოდ response time?
  3. რამდენ request-ზე დაბრუნდა/არ დაბრუნდა code 200?
  4. რა ტიპის error code-ები ბრუნდებოდა წარუმატებელ request-ებზე?

ეს და სხვა საჭირო/საინტერესო მონაცემი შეგვიძლია ვნახოთ JMeter-ის listener-ებში — ესაც პასუხი კითხვაზე “რა არის Listener?” 🙂

განვიხილოთ 3 ყველაზე ხშირად გამოყენებადი Listener

View Results Tree — პირველი და ყველაზე ხშირად გამოყენებადი
გამოდის სია ყოველი request-თვის. დეტალების სანახავად უნდა ავირჩიოთ კონკრეტული sample(ჩანაწერი). ამ listener-ის ძირითადი ფუნქციაა აჩვენოს ზოგადი სტატუსი და ყველა request გამოიტანოს სათითაოდ, სიის სახით.

სახელი, კომენტარი , ფაილში ჩაწერა, ფილტრი სტატუსით(მხოლოდ წარმატებული/წარუმატებელი)— ეს ველები ყველა listener-ისთვის იდენტურია. შედეგების ფაილში ჩაწერას დავუბრუნდებით სტატიის მეორე ნაწილში.
ძირითადი განმასხვავებელი და ყველაზე საყურადღებოა 3 ჩანართი(tab):

  1. Sampler Result — ინფორმაცია იმის შესახებ თუ რა იყო სტატუსი(წარმატებული/წარუმატებელი. წინასწარ დაგეგმილი შედეგის მისაღებად), response time, Response code, Latency და ყველა ძირიტადი მაჩვენებელი მიღებული შედეგის შესახებ;
  2. Request, რომელიც თავის მხვრივ იყოფა ორ ჩანართად(Request Body, Request Headers) — რა მოთხოვნა და რა პარამეტრებით იყო გაგზავნილი
  3. Response Data — სრული ინფორმაცია თუ რა მოდის კონკრეტულ response-ში. GET, Json-ის მაგალითზე: https://reqres.in/api/users?page=2
    browser-ში და JMeter-ში მოდის ანლოგიური მონაცემები.

View Results in Table — შედეგების ჩვენება ცხრილის სახით.
აქ ყველა Sample-ზე ჩანს ძირითადი მონაცემი, გასხნის გარეშე. სწრაფი ნახვისთვის, სანამ გადავალთ დეტალურ ანალიზზე, გვექმნება წარმოდგენა როგორ მიდის ტესტირების პროცესი. საუბარია დიდი რაოდენობის request-ზე და პროცესში დაკვირვებაზე

შესაძლებელია სვეტების კონფიგურირება და sample-ების სორტირება.
P.S. Scroll automatically — საყურადღებოა, “უფრო live რეჟიმში” დასაკვირვებდას 🙂

Aggregate Report — შეჯამებელი ინფორმაცია თუ როგორ ჩატარდა ტესტი. რამდენი request გაიგზავნა, რამდენი იყო წარმატებული/წარუმატებელი, საშუალო დრო რას იყო საჭირო response-ზე და ზოგადი წარმოდგენისთვის საჭირო სხვა ინფორმაცია.

ერთი შეხედვით ყველაზე პრიმიტიულია, მაგრამ ყველასთვის გასაგები listener. ზოგჯერ რთული და კომპლექსური სამუშაოების შედეგის ჩვენება გვიწევს ნაკლებად ტექნიკურ ტიპებზეც 🙂

ნებისმიერი ტიპის Listener შეიძლება გამოვიყენოთ, როგორც უშუალოდ sampler-თან, ასევე Tread Group-ის შედეგებისთვის.

ვიდეოში ეშვება 2 sampler: Hello Google და JMeter — Get Started
ერთ შემთხვევაში ვუყურებთ Listen-ებს ინდივიდუალურად, ანუ 1 listener აჩვენებს ერთი კონკრეტული Sampler-ის შედეგებს. აქვე ყურადღებას ვამახვილებ Hello Google-1 Sampler Result-ში Response Code 429-ზე. ვიდეოს ჩაქერამდე გაშვებული მქონდა რამდენიმე ათასი მოთხოვნა და შემზღუდა 🙂
შემდეგ Tread Group-ზე დამატებთ View Results Tree-ს და აქ გამოდის ყველა Sampler-ის შედეგი რაცაც მოიცავს კონკრტული Tread Group.
იგივე შედეგია Jmeter — Get started-დან გამოტანილ Aggregate Report-ზე

P.S. JMeter-ში კოპირდება და წაშლა მუშაობს, როგორც სტანდარტულ, window-ის გარემოში. ანუ შეგვიძლია ავაწყოთ ერთი sampler, რომელშიც გვექნება ყველა საჭირო ელემენტი(არა მხოლოდ listener-ები. შეიძლება იყოს assertion-ები, pre და post processor-ები და ა.შ.) და პარამეტრი, შემდეგ კი გავადუბლიროთ ეს sampler და დავაკორექტიროთ რომელიმე ერთი პარამეტრი. მაგალითად: შევცვალოთ ლინკი და ერთხელ დაკონფიგურირებული “Hello Google”-ის კოპიაში request, რომელიც აკითხავდა https://www.google.com/search?q=hello+google-ს, გავაგზავნოთ https://reqres.in/api/users?page=2-ზე

ახლა კი შედეგების შენახვა ფაილში.
განვიხილოთ ტესტის შენახვა SCV ფაილში. წინა ტესტების მაგალითზე.
გაქვს მისამართი: https://www.jotform.com/form-templates/preview/thank-you/classic?, რომელზეც გავაგზავნით 1 000, ამჯერად POST Request-ს. ცოტა გავაფერადოთ ექსპერიმენტი 🙂
POST-ის საჭიროა პარამეტრების გაყოლება. ამ ემთხვევაში საუბარია რეგისტრაციის ფორმაზე. ყველა შესავსებ პორმას აქვს განსხვავებული მონაცემები.
მოკლედ, შევედი საიტზე, Network-ში ვნახე Request URL, Payload და დავაკოპირე რეგისტრაციის კონკრეტული ფორმისთვის საჭირო პარამეტრები.

ვისაც შეეშინდა 🙂 Network, Request URL, Payload — ეს ყველაფერი შეიძლება ცალკე სტატიად დავწერო, მაგრამ ამ მომენტში გაქვთ 2 ვარიანტი:
1. 
https://www.youtube.com/watch?v=yWQlra6hlwk აქ ან რომელიმე მსგავს ვიდეოში/სტატიაში უნდა გაარჩიოთ DevTools;
2. ჩვენი სტატიის გასაგრძელებლად, აიღეთ რომელიმე GET request.

ვაგრძელებთ..
HTTP Request-ში სახელად Registration form შევცვალე მეთოდი POST-ზე, მისამართი(არ მიყვარს საქმის გართულება და პირდაპირ path-ში) ისევ DevTools-იდან და პარამეტრებიც body data-ში(შეიძლებოდა parameter tab-ში ჩასმაც, მარგამ რატომღაც მარტივად არ კოპირდება და გამოვიყენე raw Body Data-ში).

რა მივიღეთ შედეგად?

გაიგზავნა 1 000 მოთხოვნა, სიმულაციიათ 100 მომხმარებლის 10–10 მცდელობა. დრო 1 წამი ფორმალურია, აქ ძირიტადი აქცენტი იყო შედეგის ფაილში ჩაწერაზე. View Results Tree-ს listener-ში ავირჩიეთ CVS ფაილი, რომელიც იქნებოდა გამოყენებული შედეგების ჩასაწერად.
აქვე ვახსენოთ ღილაკი “configure”, რომლის მეშვეობითაც შეგვიძლია დავაკონფიგურიროთ თუ რა მონაცემები უნდა შევინახოთ ფაილში. რიგ შემთხვევებში, მაგალითად Thread Name არაფერს გვაძლევს, გარდა იმისა, რომ შეიძლება გვქონდეს დიდი test plan და მაქედან მარტივად გავარჩიოთ რომელი კონკრეტული Thread-ის ქვეშ იყო listener.

ყურადღება უნდა მიაქციოთ შემდეგ ნიუანსებს:
1. ფაილი, რომელშიც იწერება მონაცემები არ უნდა იყოს გახსნილი — ტესტი არ გაეშვება
2. ტესტის გაშვების წინ JMeter გვთავაზობს უკვე არსებული მონაცემების წაშლას და ახალი ტესტის ჩაწერას ან ინფორმაციის დამატებას. დასანანი იქნება თუ შენახული, საჭირო ინფორმაცია წაგეშლებათ და გადაეწერება ახალი შედეგები.

შეჯამება:
საბაზისო დონეზე ვიცით რა არის Listener და როგორ მუშაობს ტესტის შედეგის შენახვა.

P.S. რჩევა: არცერთი კურსი, სტატია არ მოგცემთ შედეგს თუკი თქვენ არ ჩაატარებთ ექსპერიმენტებს. JMeter თქვენთანაა 🙂

მომდევნო სტატიაში განხილული იქნება Assertion-ები

ავტორი: anri.phutkaradze

კომენტარის დატოვება

თქვენი ელფოსტის მისამართი გამოქვეყნებული არ იყო. აუცილებელი ველები მონიშნულია *