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)
  • Маалыматтар базасы метрикалары (суроолордун саны, суроолорду аткаруу убактысы)

Жүктөө тестирлөө системанын иштен чыгышын алдын алууга жана колдонуучулардын кабыл алымдуу сапатын камсыз кылууга жардам берет.