Sobes.tech
Junior

მითხარით დატვირთვის ტესტირების შესახებ.

sobes.tech AI

პასუხი AI-სგან

დამატვირთვის ტესტირება — ეს არის ტესტირების ტიპი, რომელიც მიზნად ისახავს აპლიკაციის (სისტემის) მუშაობის ეფექტურობის, სტაბილურობის და მასშტაბურობის განსაზღვრას სხვადასხვა დატვირთვაზე.

დამატვირთვის ტესტირების მიზნები:

  • სისტემის ზღვრული დატვირთვის განსაზღვრა;
  • "შლაგბაუტების" გამოვლენა;
  • სისტემის რეაგირების დრო შეფასება მითითებულ დატვირთვაზე;
  • სისტემის სტაბილურობის შემოწმება გრძელვადიან პერიოდში;
  • სისტემის მასშტაბურობის შემოწმება:

დამატვირთვის ტესტირების ტიპები:

  • დამატვირთვის ტესტირება (Load Testing): სისტემის ქცევის შემოწმება მოსალოდნელ (სტანდარტულ) დატვირთვაზე;
  • სტრესი-ტესტირება (Stress Testing): სისტემის შემოწმება დატვირთვაზე, რომელიც აღემატება ნორმალურს, სანამ სისტემას არ მოხდება სერვისის შეწყვეტა. მიზანია - გამძლეობის ზღვარის განსაზღვრა;
  • სულმოდულობის/მოწევის ტესტირება (Endurance/Soak Testing): სისტემის სტაბილურობის შემოწმება გრძელვადიან საშუალო ან მაღალი დატვირთვით, მეხსიერების გაჟონვის და მუშაობის სიჩქარის შემცირების გამოვლენა;
  • პიკი დატვირთვის ტესტი (Spike Testing): სისტემის ქცევის შემოწმება მკვეთრი, ერთდროული დატვირთვის ზრდის დროს;
  • მასშტაბურობის ტესტი (Scalability Testing): სისტემის შესაძლებლობის შეფასება ზრდის დატვირთვისთვის ჰორიზონტალური ან ვერტიკალური რესურსების მასშტაბირებით;
  • მოცულობის ტესტი (Volume Testing): მონაცემთა მოცულობის ზრდის დროს სისტემის ქცევის შემოწმება:

სამუშაო ეტაპები:

  1. მიზნების განსაზღვრა: მუშაობის მეტრიკების (პასუხის დრო, გამტარუნარიანობა, შეცდომების რაოდენობა) და წარმატების კრიტერიუმების ზუსტად განსაზღვრა;
  2. სცენარების დაგეგმვა და პროექტირება: მომხმარებელთა სცენარების ანალიზი, დატვირთვის პროფილის განსაზღვრა (ვირტუალური მომხმარებლების რაოდენობა, მოთხოვნების ინტენსივობა);
  3. ტესტ სკრიპტების შემუშავება: დატვირთვის ტესტირების ინსტრუმენტების გამოყენებით მომხმარებელთა ქმედებების იმიტაცია;
  4. ტესტ გარემოს მომზადება: სამუშაო გარემოს იმიტაციისთვის ტესტ სტენდის შექმნა;
  5. ტესტების ჩატარება: სხვადასხვა დატვირთვაზე ტესტების განახორციელება;
  6. მონიტორინგი და მონაცემების შეგროვება: სისტემის, სერვერების, მონაცემთა ბაზის მეტრიკების შეგროვება;
  7. შედეგების ანალიზი და ანგარიშგება: მიღებული შედეგების შედარება მიზნობრივ მეტრიკებთან, პრობლემების გამოვლენა, ანგარიშის მომზადება.

დამატვირთვის ტესტირების ინსტრუმენტები:

  • JMeter
  • LoadRunner
  • Gatling
  • k6
  • Locust

მაგალითი — მარტივი JMeter სკრიპტი (HTTP მოთხოვნა):

<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.6.2">
  <hashTree>
    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="დამატვირთვის ტესტის მაგალითი">
      <hashTree>
        <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group">
          <intProp name="ThreadGroup.num_threads">100</intProp>
          <intProp name="ThreadGroup.ramp_time">10</intProp>
          <longProp name="ThreadGroup.duration">60</longProp>
          <boolProp name="ThreadGroup.scheduler">true</boolProp>
          <hashTree>
            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP მოთხოვნის მაგალითი">
              <stringProp name="HTTPSampler.domain">example.com</stringProp>
              <stringProp name="HTTPSampler.path">/</stringProp>
              <stringProp name="HTTPSampler.method">GET</stringProp>
              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
              <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp>
              <boolProp name="HTTPSampler.embedded_url_report">true</boolProp>
              <boolProp name="HTTPSampler.connect_timeout"></boolProp>
              <boolProp name="HTTPSampler.response_timeout"></boolProp>
              <stringProp name="HTTPSampler.protocol">https</stringProp>
              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
              <stringProp name="HTTPSampler.comment"></stringProp>
              <stringProp name="HTTPSampler.port"></stringProp>
              <stringProp name="HTTPSampler.image_parser">true</stringProp>
              <stringProp name="HTTPSampler.concurrentDwn">Both</stringProp>
              <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
              <stringProp name="HTTPSampler.implementation_status">OK</stringProp>
              <boolProp name="HTTPSampler.postBodyRaw">false</boolProp>
              <listProp name="HTTPSampler.HTTP_HEADERS"></listProp>
            </HTTPSamplerProxy>
            <hashTree/>
          </hashTree>
        </hashTree>
      </hashTree>
    </TestPlan>
  </hashTree>
</jmeterTestPlan>

დამატვირთვის ტესტირების დროს შეგროვებული მეტრიკები:

  • პასუხის დრო (Response Time)
  • გამტარუნარიანობა (Throughput)
  • შეცდომების რაოდენობა ერთ წამში (Errors per Second)
  • მოთხოვნების რაოდენობა ერთ წამში (Requests per Second / Transactions per Second)
  • CPU გამოყენება (CPU Utilization)
  • მეხსიერების გამოყენება (Memory Usage)
  • დისკის აქტივობა (Disk I/O)
  • ქსელის აქტივობა (Network I/O)
  • მონაცემთა ბაზის მეტრიკები (მოთხოვნების რაოდენობა, მოთხოვნების შესრულების დრო)

დამატვირთვის ტესტირება ეხმარება სისტემის გაუქმებას მაღალი დატვირთვის დროს და უზრუნველყოფს მისაღებ ხარისხს მომხმარებლებისთვის.