Sobes.tech
Middle

Ի՞նչ են կատարողականության թեստավորման հիմնական аспектները և ինչ գործիքներ եք օգտագործել դրա իրականացման համար։

sobes.tech AI

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

Աշխատունակության փորձարկումը ներառում է.

  • Բեռնում (Load Testing): Սիստեմի վարքագծի գնահատում սպասվող բեռի դեպքում: Կարգավորում է օգտվողների կամ գործարքների առավելագույն քանակը, որը համակարգը կարող է դիմակայել, նախքան կատարողականությունը սկսի վատանալ:
  • Սթրեսային փորձարկում (Stress Testing): Սիստեմի փորձարկում экстремальных нагрузках, որոնք գերազանցում են սպասվողը, որպեսզի որոշվի անջատման կետը և համակարգի վարքագիծ այդ պայմաններում: Մտահոգություն – համոզվել, որ համակարգը վերականգնվում է բեռնաթափումից հետո:
  • Ավելի երկարատև փորձարկում (Endurance/Soak Testing): Սիստեմի փորձարկում երկար ժամանակահատվածում նշանակալի բեռի տակ, որպեսզի հայտնաբերվեն հիշողության արտահոսքերը կամ այլ խնդիրներ, որոնք հայտնվում են ժամանակի ընթացքում:
  • Անհատական բեռների փորձարկում (Spike Testing): Հանկարծակի բեռի բարձրացում համակարգում՝ ստուգելու համակարգի արձագանքը հանկարծակի ակտիվության աճին:
  • Տվյալների ծավալի փորձարկում (Volume Testing): Փորձարկում մեծ տվյալների ծավալով տվյալների բազայում կամ ֆայլային համակարգում՝ գնահատելու համակարգի կատարողականությունը մեծ տեղեկատվական ծավալով:
  • Սկալավորման փորձարկում (Scalability Testing): Սահմանել համակարգի կարողությունը բեռի ավելացմանը՝ ավելացնելով հարդվերային ռեսուրսներ կամ օպտիմիզացնելով ծրագրային ապահովումը:

Կատարման համար օգտագործվել են հետևյալ գործիքները:

  • Apache JMeter: Բազմաֆունկցիոնալ Java-կոդով բաց աղբյուրի գործիք, որը աջակցում է տարբեր պրոտոկոլների (HTTP, HTTPS, FTP, JDBC և այլն): Հնարավորություն է տալիս ստեղծել բարդ փորձարկման սցենարներ՝ պարամետրիզացիա, կոռելացիա, գրանցում և մանրամասն հաշվետվությունների սերունդ:
    // HTTP հարցման օրինակ JMeter-ում (JMX ֆայլ)
    <HTTPSamplerProxy guiclass="HttpTestSampleGui"
                       testclass="HTTPSamplerProxy"
                       testname="Sample"
                       enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain">example.com</stringProp>
      <stringProp name="HTTPSampler.port">80</stringProp>
      <stringProp name="HTTPSampler.protocol">http</stringProp>
      <stringProp name="HTTPSampler.path">/api/users</stringProp>
      <stringProp name="HTTPSampler.method">GET</stringProp>
    </HTTPSamplerProxy>
    
  • LoadRunner (Micro Focus): Առևտրային գործիք, հայտնի իր լայն հնարավորություններով՝ պրոտոկոլների աջակցում և արդյունքների վերլուծություն: Շատ հաճախ օգտագործվում է մեծ կորպորատիվ նախագծերում:
  • Gatling: Ժամանակակից բաց աղբյուրի գործիք, հիմնված Scala-ով: Գիտեն բարձր կատարողականության և արտահայտիչ լեզվի մասին՝ սցենարների ստեղծման համար (DSL):
    // Gatling սցենարի օրինակ (Simulation.scala)
    import io.gatling.core.Predef._
    import io.gatling.http.Predef._
    import scala.concurrent.duration._
    
    class BasicSimulation extends Simulation {
    
      val httpProtocol = http
        .baseUrl("https://example.com")
        .acceptHeader("application/json")
    
      val scn = scenario("Օգտագործողներ")
        .exec(http("Օգտագործողի ստացում").get("/api/users"))
    
      setUp(scn.inject(rampUsers(100) during (5.minutes))).protocols(httpProtocol)
    }