Android Εκπαιδευτικό σεμινάριο δοκιμής εφαρμογών με το πλαίσιο αυτοματισμού

⚡ Έξυπνη Σύνοψη

Android Οι δοκιμές εφαρμογών επαληθεύουν μια κατασκευή σε ένα κατακερματισμένο τοπίο συσκευών, συνδυάζοντας ελέγχους μονάδων, ενοποίησης, λειτουργίας και συστήματος με πλαίσια αυτοματισμού που εκτελούνται είτε σε μια συσκευή είτε απευθείας στο JVM.

  • 🔘 Γιατί έχει σημασία: Android Εκτελείται σε αμέτρητους συνδυασμούς συσκευών και εκδόσεων, επομένως τα ελαττώματα συμβατότητας είναι σχεδόν σίγουρα.
  • ☑️ Τέσσερα επίπεδα δοκιμών: Οι δοκιμές μονάδας, ολοκλήρωσης, λειτουργίας και συστήματος εντοπίζουν η καθεμία μια διαφορετική κατηγορία ελαττωμάτων.
  • Πλαίσιο σε συσκευή: The Android το πλαίσιο δοκιμών βασίζεται JUnit και όργανα.
  • 🧪 Εναλλακτική λύση JVM: Ρομποηλεκτρικές σκιές Android κλάσεις, έτσι ώστε οι σουίτες να εκτελούνται στην JVM χωρίς συσκευή ή εξομοιωτή.
  • Ευρύτερο σύνολο εργαλείων: Espresso, Αυτοματοποιητής UI και Appium επεκτείνουν την κάλυψη πέρα ​​από τις ενσωματωμένες κλάσεις.
  • 📊 Μύθοι που πρέπει να αποφεύγετε: Μόνο οι εξομοιωτές, μερικές συσκευές χειρός ή οι διερευνητικές δοκιμές της τελευταίας στιγμής αφήνουν ελαττώματα στην παραγωγή.

Android σεμινάριο δοκιμής εφαρμογών που καλύπτει τα επίπεδα δοκιμών, τα πλαίσια αυτοματισμού και την κάλυψη συσκευών

Γιατί Android Δοκιμές;

Android είναι το μεγαλύτερο λειτουργικό σύστημα στον κόσμο. Συγχρόνως, Android είναι κατακερματισμένο: υπάρχουν τόνοι συσκευών και Android εκδόσεις με τις οποίες πρέπει να είναι συμβατή η εφαρμογή σας.

Δεν έχει σημασία πόσο χρόνο επενδύετε στο σχεδιασμό και την υλοποίηση, τα λάθη είναι αναπόφευκτα και θα εμφανιστούν σφάλματα.

Android Στρατηγική Δοκιμών

Ένα σωστό Android Η στρατηγική δοκιμών θα πρέπει να περιλαμβάνει τα ακόλουθα

  1. Δοκιμή μονάδας
  2. Έλεγχος ολοκλήρωσης
  3. Operaτεστ
  4. Δοκιμή συστήματος

Δοκιμές μονάδας

Οι Δοκιμές Μονάδων (Unit Tests) είναι σύνολα προγραμμάτων που έχουν σχεδιαστεί για την επαλήθευση μιας ατομικής μονάδας του πηγαίου κώδικα, όπως μια μέθοδος ή μια κλάση.

The Android η πλατφόρμα είναι προενσωματωμένη με το JUnit 3.0 framework. Είναι ένα framework ανοιχτού κώδικα για αυτοματοποίηση Δοκιμή μονάδαςκαι επιτρέπει στους προγραμματιστές να γράφουν αποτελεσματικά προγράμματα δοκιμών μονάδας.

Μια προσθήκη στις δοκιμές μονάδων είναι οι δοκιμές διεπαφής χρήστη (UI). Καλύπτουν τα στοιχεία UI της εφαρμογής-στόχου σας και διασφαλίζουν ότι επιστρέφει τη σωστή έξοδο για μια ακολουθία ενεργειών χρήστη στη συσκευή.

Συνήθεις ενέργειες χρήστη στο περιβάλλον εργασίας χρήστη σε ένα Android εφαρμογή όπως αγγίξιμο, πληκτρολόγηση και σάρωση

Ο συνήθης τρόπος εκτέλεσης δοκιμών UI σε μια συσκευή είναι Android Όργανα. Αλλά αυτό έχει προβλήματα απόδοσης. Ένα από τα καλύτερα εργαλεία για τη διεξαγωγή δοκιμών διεπαφής χρήστη Android is Robotium.

⚠️ Σημείωση έκδοσης: JUnit 3 τάξεις όπως InstrumentationTestCase είχαν καταργηθεί στο API 24. Τα τρέχοντα έργα χρησιμοποιούν AndroidΔοκιμή Χ, Espresso και Αυτοματοποιητής UI. Robotium δεν έχει κυκλοφορήσει από το 2016.

Δοκιμές ολοκλήρωσης

In Δοκιμή ολοκλήρωσης, όλες οι ενότητες που ελέγχονται σε μονάδες συνδυάζονται και επαληθεύονται. Android Αυτό συχνά σημαίνει έλεγχο της ενσωμάτωσης με στοιχεία όπως οι δοκιμές Υπηρεσίας, Δραστηριότητας και Παρόχου Περιεχομένου.

Τύποι δοκιμής ολοκλήρωσης σε Android που καλύπτει τις δοκιμές υπηρεσιών, δραστηριοτήτων και παρόχων περιεχομένου

Πολλά πλαίσια δοκιμών χρησιμοποιούνται για τη διεξαγωγή δοκιμών ολοκλήρωσης για Android, όπως η Troyd, η Robolectric και Robotium.

Operaεθνικές δοκιμές

OperaΟι δοκιμασίες επιχειρησιακού χαρακτήρα, που ονομάζονται επίσης Λειτουργικές Δοκιμές ή Δοκιμές Αποδοχής, είναι δοκιμές υψηλού επιπέδου που ελέγχουν την πληρότητα και την ορθότητα της αίτησης.

In Android, FitNesse είναι ένα πλαίσιο ανοιχτού κώδικα που διευκολύνει την εκτέλεση λειτουργικών δοκιμών στην εφαρμογή-στόχο.

Δοκιμές συστήματος

In Δοκιμή συστήματος το σύστημα ελέγχεται στο σύνολό του και ελέγχεται η αλληλεπίδραση μεταξύ των στοιχείων, του λογισμικού και του υλικού.

In Android, Η δοκιμή συστήματος συνήθως περιλαμβάνει

  • Δοκιμές GUI
  • Δοκιμές χρηστικότητας
  • Δοκιμές απόδοσης
  • Δοκιμές άγχους

Στην παραπάνω λίστα, Δοκιμές Απόδοσης δίνεται περισσότερη εστίαση. Μπορείτε να χρησιμοποιήσετε εργαλεία όπως Tracπροβολή για τη διεξαγωγή δοκιμών απόδοσης σε AndroidΑυτό το εργαλείο μπορεί να σας βοηθήσει να εντοπίσετε σφάλματα στην εφαρμογή σας και να καταγράψετε την απόδοσή της. Tracη αξιολόγηση έχει πλέον καταργηθεί υπέρ του Προφίλ CPU.

Αυτοματοποιημένη Android Δοκιμές

As Android είναι κατακερματισμένο, οι δοκιμές σε πολλές συσκευές είναι απαραίτητες και αυτό κοστίζει χρήματα. Αυτοματοποιημένο Android Οι δοκιμές βοηθούν στη μείωση αυτού του κόστους.

Οφέλη από την αυτοματοποίηση Android δοκιμών

  • Μειώστε το χρόνο για την εκτέλεση δοκιμαστικών υποθέσεων
  • Αυξήστε την παραγωγικότητα της διαδικασίας ανάπτυξής σας
  • Έγκαιρη ανίχνευση σφαλμάτων, εξοικονόμηση κόστους στη συντήρηση του λογισμικού
  • Βρήκε γρήγορα και διορθώστε τα σφάλματα κατά την υλοποίηση
  • Εξασφαλίστε την ποιότητα του λογισμικού

Θα μελετήσουμε τα ακόλουθα 2 πλαίσια

  • Android Πλαίσιο δοκιμών
  • Πλαίσιο ρομποηλεκτρικών δοκιμών

Android πλαίσιο δοκιμών

Ένα από τα τυπικά πλαίσια δοκιμών για Android εφαρμογές είναι η Android πλαίσιο δοκιμών. Είναι καλά ενσωματωμένο με το Android Τα εργαλεία SDK και η αρχιτεκτονική τους έχουν τρία μέρη.

  1. Το πακέτο εφαρμογής είναι η εφαρμογή-στόχος σας η οποία πρέπει να δοκιμαστεί.
  2. Το InstrumentationTestRunner είναι το Δοκιμαστική θήκη Εκτελώνταs που εκτελεί δοκιμαστικές περιπτώσεις στην εφαρμογή-στόχο. Περιλαμβάνει:
    • Εργαλεία δοκιμής: Εργαλεία SDK για τη δημιουργία δοκιμών. Ενσωματώνονται στο IDE ή εκτελούνται από τη γραμμή εντολών.
    • MonkeyRunner: Ένα εργαλείο που παρέχει API για τη σύνταξη προγραμμάτων που ελέγχουν ένα Android συσκευή ή εξομοιωτή εκτός Android κώδικας.
  3. Το πακέτο δοκιμής είναι οργανωμένο σε έργα δοκιμής και ακολουθεί μια σύμβαση ονομασίας. Εάν η εφαρμογή που υπό δοκιμή έχει όνομα πακέτου "com.mydomain.myapp", τότε το πακέτο δοκιμής θα πρέπει να είναι "com.mydomain.myapp.test". Το πακέτο δοκιμής περιλαμβάνει 2 αντικείμενα:
    • Κατηγορίες δοκιμαστικών περιπτώσεων: περιλαμβάνουν μεθόδους δοκιμών που θα εκτελεστούν στην εφαρμογή-στόχο.
    • Ψεύτικα αντικείμενα: συμπεριλάβετε εικονικά δεδομένα που θα χρησιμοποιηθούν ως δείγματα εισόδου για δοκιμαστικές περιπτώσεις.

Android Μαθήματα δοκιμαστικών περιπτώσεων

AndroidΔιάγραμμα κλάσης TestCase που δείχνει το JUnit και ιεραρχία περιπτώσεων δοκιμών οργάνων

  1. Το TestCase περιλαμβάνει JUnit μεθόδους εκτέλεσης JUnit δοκιμή
  2. Το TestSuite χρησιμοποιείται για την εκτέλεση ενός συνόλου δοκιμαστικών περιπτώσεων
  3. Το InstrumentationTestSuite είναι ένα TestSuite που εισάγει την Instrumentation στο InstrumentationTestCase πριν την εκτελέσει.
  4. Το InstrumentationTestRunner εκτελεί δοκιμαστικές περιπτώσεις στην εφαρμογή-στόχο.
  5. AndroidΤο TestCase επεκτείνεται JUnit TestCase με μεθόδους για πρόσβαση σε πόρους όπως το Activity Context.
  6. Το ApplicationTestCase επαληθεύει τις κλάσεις Application σε ένα ελεγχόμενο περιβάλλον.
  7. Το InstrumentationTestCase επαληθεύει μια συγκεκριμένη λειτουργία ή συμπεριφορά, για παράδειγμα την έξοδο του UI της εφαρμογής.
  8. Το ActivityTestCase είναι η βασική κλάση που υποστηρίζει τον έλεγχο των Δραστηριότητες Εφαρμογής.
  9. Το ProviderTestCase είναι μια κλάση για τον έλεγχο ενός μόνο ContentProvider.
  10. Το ServiceTestCase δοκιμάζει τις κλάσεις υπηρεσιών σε ένα περιβάλλον δοκιμών και υποστηρίζει τον κύκλο ζωής της υπηρεσίας.
  11. Το SingleLaunchActivityTestCase χρησιμοποιείται για τον έλεγχο μίας μόνο Δραστηριότητας με ένα InstrumentationTestCase.
  12. Μονάδα ΔραστηριότηταςTestCase Χρησιμοποιείται για τον έλεγχο μεμονωμένης μεμονωμένης δραστηριότητας.
  13. ΔραστηριότηταΟργάνωσηTestCase2 επεκτείνει το JUnit Η κλάση TestCase σας συνδέει με την εφαρμογή-στόχο με όργανα, ώστε να έχετε πρόσβαση σε στοιχεία GUI και να στέλνετε συμβάντα UI, όπως πατήματα πλήκτρων ή αγγίγματα.

Παρακάτω είναι ένα παράδειγμα του ActivityInstrumentationTestCase. Επαληθεύει τη λειτουργία του UI μιας εφαρμογής Αριθμομηχανής και ελέγχει την ορθότητα των εξόδων του UI.

Παράδειγμα ActivityInstrumentationTestCase2 για την επαλήθευση της εξόδου του UI της Αριθμομηχανής στο Android

Πλαίσιο ρομποηλεκτρικών δοκιμών

Δοκιμή χρησιμοποιώντας το Android Η δοκιμή του πλαισίου με μια συσκευή ή έναν εξομοιωτή είναι δύσκολη. Η δημιουργία και η εκτέλεση δοκιμών είναι αργή και απαιτεί μεγάλη προσπάθεια ανάπτυξης. Για να διορθωθεί αυτό το πρόβλημα, υπάρχει μια άλλη επιλογή: το πλαίσιο δοκιμών Robolectric.

Το Robolectric σάς επιτρέπει να τρέχετε Android δοκιμές απευθείας στην JVM χωρίς την ανάγκη για συσκευή ή εξομοιωτή.

Μαθήματα ρομποηλεκτρικών δοκιμών

Το Robolectric μπορεί να εκτελέσει τις ακόλουθες ενέργειες:

  • Εγγραφείτε και δημιουργήστε μια κλάση Shadow
  • Αναχαιτίστε τη φόρτωση του Android τάξη
  • Javaβοήθεια για την παράκαμψη των σωμάτων μεθόδου του Android τάξη
  • Σύνδεση αντικειμένου σκιάς σε Android τάξη

Αυτό επιτρέπει στον υπό δοκιμή κώδικα να εκτελεστεί χωρίς Android περιβάλλοντος.

Άλλα πλαίσια δοκιμών

Εκτός από τα πλαίσια δοκιμών που αναφέρθηκαν παραπάνω, υπάρχουν πολλά άλλα, όπως:

  • Android Έκθεση Junit, ένας προσαρμοσμένος δοκιμαστικός δρομέας οργάνων για Android που δημιουργεί αναφορές XML για ενοποίηση με άλλα εργαλεία.
  • Espresso
  • Appium

Μύθοι του Android Δοκιμές

Πολλές επιχειρήσεις αναπτύσσονται Android Δοκιμές στρατηγικές που βασίζονται σε κοινές παρανοήσεις. Αυτή η ενότητα εξετάζει μερικούς δημοφιλείς μύθους και πραγματικότητες Android δοκιμών.

Μύθος #1: Όλα Android οι συσκευές είναι οι ίδιες, επομένως η δοκιμή σε εξομοιωτές είναι αρκετή

Μια εφαρμογή μπορεί να λειτουργεί τέλεια σε εξομοιωτές, αλλά να παρουσιάζει σφάλμα κατά την εκτέλεση σε ορισμένες πραγματικές συσκευές.

Android παράθυρο διαλόγου σφάλματος εφαρμογής που εμφανίζεται κατά την εκτέλεση σε μια πραγματική συσκευή

Οι εξομοιωτές δεν επαρκούν για τις δοκιμές σας σε κινητά. Πρέπει να δοκιμάσετε την εφαρμογή σας σε πραγματικές συσκευές.

Μύθος #2: Οι δοκιμές σε ορισμένες κοινές συσκευές είναι αρκετές

Η εφαρμογή σας φαίνεται διαφορετική σε όλες τις συσκευές, επειδή το υλικό, τα μεγέθη οθόνης και η μνήμη διαφέρουν. Δοκιμάστε την σε μια σειρά συσκευών, εκδόσεων λειτουργικού συστήματος, δικτύων παρόχων και τοποθεσιών.

Μύθος #3: Αρκούν οι διερευνητικές δοκιμές λίγο πριν την κυκλοφορία

  • Στις περισσότερες δοκιμές σχεδιάζουμε περιπτώσεις δοκιμών και στη συνέχεια τις εκτελούμε. Στις διερευνητικές δοκιμές, ο σχεδιασμός και η εκτέλεση συμβαίνουν μαζί.
  • Δεν υπάρχει σχέδιο ή προετοιμασία, επομένως ο ελεγκτής εκτελεί όποιες δοκιμές επιλέξει. Ορισμένες συναρτήσεις δοκιμάζονται επανειλημμένα, ενώ άλλες δεν δοκιμάζονται ποτέ.

Μύθος #4: Εάν υπάρχουν κάποια σφάλματα στην εφαρμογή, οι χρήστες θα τα καταλάβουν

  • Εάν η εφαρμογή δεν λειτουργεί και παρουσιάζει σφάλματα, οι χρήστες την απεγκαθιστούν.
  • Τα ζητήματα ποιότητας είναι ο πρώτος λόγος για κακές κριτικές Google Παίξτε, βλάπτοντας τη φήμη σας και χάνοντας την εμπιστοσύνη των πελατών.

Επομένως, είναι απαραίτητο να υπάρχει μια σωστή Android στρατηγική δοκιμών σε ισχύ.

καλυτερα ασκησεις in Android Δοκιμές

  • Οι προγραμματιστές εφαρμογών θα πρέπει να δημιουργούν τις δοκιμαστικές περιπτώσεις την ίδια στιγμή που γράφουν τον κώδικα
  • Όλες οι δοκιμαστικές περιπτώσεις θα πρέπει να αποθηκεύονται στον έλεγχο έκδοσης, μαζί με τον πηγαίο κώδικα.
  • Χρησιμοποιήστε συνεχή ενοποίηση και εκτελέστε δοκιμές κάθε φορά που αλλάζετε τον κώδικα
  • Αποφύγετε να βασίζεστε μόνο σε emulators και rooted συσκευές. Επιβεβαιώστε τα αποτελέσματα σε πραγματικό υλικό με έναν επιθεωρητή όπως uiautomatorviewer

Συχνές Ερωτήσεις

Όχι. Τα σύγχρονα έργα χρησιμοποιούν AndroidΔοκιμή X με JUnit 4 και AndroidJUnitΔρομέας. Ο JUnit 3 κλάσεις δοκιμών που περιγράφονται εδώ καταργήθηκαν στο API 24 και παραμένουν μόνο για παλαιότερες σουίτες.

Η μηχανική μάθηση επιδιορθώνει τους εντοπιστές μετά από μια αλλαγή διάταξης, ομαδοποιεί διπλότυπες αναφορές σφαλμάτων και ANR και προβλέπει ποιες δοκιμές θα παρουσιάσουν σφάλματα σε μια αλλαγή, ώστε να εκτελείται μια μικρότερη σουίτα ανά υποβολή.

Το Copilot γράφει τα κοινά μοτίβα onView και ελέγχου από ένα περιγραφόμενο σενάριο. Δεν μπορεί να γνωρίζει τα αναγνωριστικά ή τον χρονισμό της προβολής σας, επομένως εκτελέστε κάθε πρόταση μία φορά και προσαρμόστε πρώτα τα αντιστοιχίσματα.

Espresso δοκιμάζει μέσα στην εφαρμογή σας και είναι γρήγορο και σταθερό. Το UI Automator ξεπερνά τα όρια της εφαρμογής, επομένως ταιριάζει σε ειδοποιήσεις, ρυθμίσεις και παράθυρα διαλόγου συστήματος. Πολλές σουίτες χρησιμοποιούν και τα δύο.

Το API ActivityScenario στο AndroidX Test, συνήθως με ένα ActivityScenarioRule. Μετακινεί μια δραστηριότητα μέσω καθορισμένων καταστάσεων κύκλου ζωής χωρίς να επεκτείνει μια παρωχημένη κλάση περίπτωσης δοκιμής.

Ξεκινήστε με μια συσκευή χαμηλής κατηγορίας, μια μεσαίας κατηγορίας και μια πρόσφατη ναυαρχίδα που εκτείνεται σε δύο ή τρία Android εκδόσεις, καθώς και ένα tablet. Προσθέστε εκτελέσεις σε συσκευές-cloud πριν από την κυκλοφορία αντί να αγοράσετε περισσότερο υλικό.

Εκτελούνται στο JVM της μηχανής κατασκευής με κλάσεις shadow αντί για μια πραγματική συσκευή, επομένως δεν υπάρχει συσκευασία, εγκατάσταση ή εκκίνηση από εξομοιωτή. Αυτό τα καθιστά πρακτικά σε κάθε υποβολή.

GoogleΤο τρέχον σύνολο βιβλιοθήκης δοκιμών του. Ομαδοποιεί JUnit και επεκτάσεις Truth, ActivityScenario, Espresso και UI Automator πίσω από μία ομάδα εξαρτήσεων που λειτουργεί σε συσκευές, εξομοιωτές και Robolectric.

Συνοψίστε αυτήν την ανάρτηση με: