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) }