Sobes.tech
Junior

Պատմեք ինձ բեռի թեստավորման մասին։

sobes.tech AI

Պատասխան AI-ից

Բեռնաթափման փորձարկումը՝ դա փորձարկման տեսակ է, որը նպատակ ունի որոշելու հավելվածի (համակարգի) արտադրողականությունը, կայունությունը և ընդարձակելիությունը տարբեր բեռների դեպքում:

Բեռնաթափման փորձարկման խնդիրները՝

  • սահմանել համակարգի դիմացկունության սահմանը;
  • հայտնաբերել «կեղտոտ» տեղերը (բոտլնեկները);
  • գնահատել համակարգի արձագանքման ժամանակը նշված բեռի դեպքում;
  • ստուգել համակարգի կայունությունը երկարաժամկետ բեռի դեպքում;
  • ստուգել համակարգի ընդարձակելիությունը:

Բեռնաթափման փորձարկման տեսակները՝

  • Բեռնաթափման փորձարկում (Load Testing): ստուգում է համակարգի վարքը սպասվող (ստանդարտ) բեռի դեպքում;
  • Սթրես-փորձարկում (Stress Testing): ստուգում է համակարգը այն բեռի դեպքում, որը գերազանցում է նորմալը, մինչև համակարգը չվնասվի։ Մ maksat - սահմանել դիմացկունության սահմանը;
  • Ավարտական/սպասման փորձարկում (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)
  • Տվյալների բազայի մետրիկները (հարցումների քանակ, հարցումների կատարման ժամանակ)

Բեռնաթափման փորձարկումը օգնում է կանխել համակարգի սխալները արտադրականում բարձր բեռի դեպքում և ապահովել ընդունելի որակական մակարդակ օգտվողների համար։