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