Κοινή χρήση τεχνολογίας

Τεχνικές δυσκολίες: σκέψη για το πώς το SpringBoot ενσωματώνει την ανάπτυξη Jmeter

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Τεχνικές δυσκολίες: σκέψη για το πώς το SpringBoot ενσωματώνει την ανάπτυξη Jmeter

Επισκόπηση απαιτήσεων

Δημιουργήστε μια πλατφόρμα προσομοίωσης ακραίων καταστάσεων υψηλής απόδοσης, η οποία πρέπει να καλέσει το JMeter μέσω του πλαισίου Spring Boot για τη διεξαγωγή αυτοματοποιημένης δοκιμής ακραίων καταστάσεων.

Λύση 1: Χρησιμοποιήστε την κλάση Runtime για να καλέσετε εξωτερικές διεργασίες

Τεχνική επισκόπηση

Η κλάση Runtime της Java παρέχει μια διεπαφή για αλληλεπίδραση με το λειτουργικό σύστημα, επιτρέποντας στις εφαρμογές Java να εκτελούν εντολές συστήματος, να ξεκινούν εξωτερικές εφαρμογές ή σενάρια και να αλληλεπιδρούν μαζί τους. Ακολουθεί η εφαρμογή της τάξης Runtime σε αυτό το σενάριο:

  1. Έναρξη και διαχείριση διαδικασιών: Χρησιμοποιήστε τη μέθοδο exec() της κλάσης Runtime για να ξεκινήσετε το εργαλείο γραμμής εντολών JMeter για δοκιμές ακραίων καταστάσεων.
  2. Πρόσβαση στους πόρους του συστήματος: Παρακολούθηση της χρήσης μνήμης της εικονικής μηχανής Java μέσω μεθόδων της κλάσης Runtime, όπως totalMemory() και freeMemory().
  3. εκτελέσει συγκεκριμένη ενέργεια: Χρησιμοποιήστε τη μέθοδο exit() που παρέχεται από την κλάση Runtime για να τερματίσετε με ασφάλεια την εφαρμογή και χρησιμοποιήστε τη nanoTime() και την currentTimeMillis() για να λάβετε ακριβείς πληροφορίες χρόνου.

Τάξη χρόνου εκτέλεσης

RuntimeΗ Class είναι μια βασική κλάση στη Java που παρέχει μεθόδους για αλληλεπίδραση με το περιβάλλον χρόνου εκτέλεσης Java

Παρέχει μια διεπαφή για αλληλεπίδραση με το λειτουργικό σύστημα, επιτρέποντας στις εφαρμογές Java να εκτελούν εντολές συστήματος, να έχουν πρόσβαση στους πόρους του συστήματος και να εκτελούν συγκεκριμένες λειτουργίες.

Οι κύριες χρήσεις περιλαμβάνουν τις ακόλουθες πτυχές:

  • Έναρξη και διαχείριση διαδικασιών

    • RuntimeΗ τάξη παρέχει κάποιες μεθόδους όπως π.χexec(), χρησιμοποιείται για την έναρξη και τη διαχείριση εξωτερικών διαδικασιών.

    • Αυτό επιτρέπει στις εφαρμογές Java να εκτελούν εντολές συστήματος, να εκκινούν άλλες εφαρμογές ή σενάρια και να αλληλεπιδρούν με εξωτερικές διεργασίες.

  • Πρόσβαση στους πόρους του συστήματος

    • RuntimeΗ τάξη παρέχει κάποιες μεθόδους όπως π.χtotalMemory()καιfreeMemory(), που χρησιμοποιείται για τη λήψη των πληροφοριών μνήμης της εικονικής μηχανής Java.

    • Επίσης διαθέσιμοgetSystemResource()Μέθοδος λήψης της διαδρομής πόρων του συστήματος, όπως διαδρομή κλάσης, διαδρομή βιβλιοθήκης κ.λπ.

  • εκτελέσει συγκεκριμένη ενέργεια

    • RuntimeΗ κλάση παρέχει επίσης κάποιες μεθόδους, όπως π.χexit(), που χρησιμοποιείται για τον τερματισμό εφαρμογών Java.

    • Επίσης διαθέσιμοnanoTime()μέθοδος λήψης του τρέχοντος χρόνου νανοδευτερόλεπτου και χρήσηcurrentTimeMillis()Μέθοδος λήψης του τρέχοντος χιλιοστού του δευτερολέπτου.

Λεπτομερής επεξήγηση της δοκιμής ακραίων καταστάσεων της γραμμής εντολών JMeter

Εισαγάγετε τον κατάλογο JMeter bin.

Ξεκινήστε το JMeter με τις παραμέτρους της γραμμής εντολών

./jmeter -n -t /Users/xdclass/Desktop/report.jmx -l /Users/xdclass/Desktop/temp/jtl/result.jtl -e -o /Users/xdclass/Desktop/temp/result

περιλαμβάνω:

  • -n: Εκτελέστε το JMeter σε λειτουργία χωρίς GUI.
  • -t <jmx文件路径>: Καθορίστε τη διαδρομή προς το σενάριο δοκιμής JMeter.
  • -l <结果日志路径>: Καθορίστε τη διαδρομή αποθήκευσης του αρχείου καταγραφής αποτελεσμάτων δοκιμής Βεβαιωθείτε ότι ο φάκελος υπάρχει και το όνομα του αρχείου δεν επαναλαμβάνεται.
  • -e: Δημιουργήστε μια αναφορά δοκιμής σε μορφή HTML μετά την εκτέλεση του σεναρίου δοκιμής.
  • -o <报告目录路径>: Καθορίστε τον κατάλογο όπου είναι αποθηκευμένη η αναφορά HTML Βεβαιωθείτε ότι υπάρχει ο φάκελος.

Πρακτική κωδικοποίησης

  1. public class JMeterIntegration {
  2. public static void main(String[] args) {
  3. try {
  4. // 构建JMeter命令行调用
  5. String command = "/path/to/jmeter/bin/jmeter -n -t /path/to/test.jmx -l results.log -e -o /path/to/result";
  6. Process process = Runtime.getRuntime().exec(command);
  7. // 读取JMeter输出
  8. new BufferedReader(new InputStreamReader(process.getInputStream())).lines()
  9. .forEach(System.out::println);
  10. // 等待JMeter进程结束并获取退出码
  11. int exitCode = process.waitFor();
  12. System.out.println("JMeter process exited with code: " + exitCode);
  13. } catch (IOException | InterruptedException e) {
  14. e.printStackTrace();
  15. }
  16. }
  17. }

Προβλήματα

  • Κακή αναγνωσιμότητα, συντήρηση και επεκτασιμότητα, δυσκολία στην πλατφόρμα και διατήρηση της υπάρχουσας γνώσης