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"
                       ტესტმეთოდნომე="Sample"
                       გააქტიურებული="true">
      <ელემენტობჯექტნამე ჰიდდენფორმაფილდს="true"
                           არგუმენტსმე="true"
                           ბრაუზერკონექშენი="true"
                           პრეფიქსი="true" />
      კუკი მენეჯერი რეფ="კუკი მენეჯერი" />
      <ჰედერები>
        <ჰედერი>
          <ნამე>კონტენტ-ტაიპი</ნამე>
          <ვალუ>აპლიკაცია/ჯსონ</ვალუ>
        </ჰედერი>
      </ჰედერები>
      <ურიზე>https://example.com/api/users</ურიზე>
      <მეთოდი>GET</მეთოდი>
    </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")
        .inferHtmlResources
        .proxy(Proxy("localhost", 8888).httpsPort(443))
    
      val scn = scenario("Users")
        .exec(http("Get users").get("/api/users"))
    
      setUp(scn.inject(rampUsers(100).during(5.minutes))).protocols(httpProtocol)
    }