Δοκιμή αυτοματισμού iOS με Xcode Πλαίσιο UI

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

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

  • 🔘 Κύκλος TDD: Σχεδιάστε, δοκιμάστε, υλοποιήστε και δοκιμάστε ξανά από τις τέσσερις φάσεις που εφαρμόζονται στις δοκιμές εφαρμογών iOS.
  • ☑️ Απαιτούμενα: Ένα Mac με λειτουργικό σύστημα OS X και Xcode IDE, ένα πλαίσιο αυτοματισμού και το εγκατεστημένο iOS SDK.
  • Διαδρομή οργάνων: Το όργανο αυτοματισμού καταγράφει ένα σενάριο, το εμφανίζει στο αρχείο καταγραφής σεναρίων και το αναπαράγει κατ' απαίτηση.
  • 🧪 Διαδρομή OCUnit: Ένας στόχος Unit Test Bundle, ένα ενεργό σχήμα, μια ομάδα δοκιμών και μια κλάση δοκιμών γραμμένη σε Objective-C.
  • ⚠️ Κατάργηση: Το εργαλείο UIAutomation καταργήθηκε το Xcode 8 και αφαιρέθηκε. Το XCUITest είναι ο υποστηριζόμενος διάδοχος.
  • Σύγχρονο ισοδύναμο: Ένας στόχος UI Testing Bundle συν τα ερωτήματα XCUIApplication αντικαθιστούν το καταγεγραμμένο σενάριο Instruments.

Δοκιμή αυτοματισμού iOS με το Xcode Πλαίσιο αυτοματισμού UI που εκτελεί ένα ηχογραφημένο σενάριο σε μια εφαρμογή

Δοκιμή αυτοματισμού iOS με χρήση Xcode

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

Κύκλος ανάπτυξης βάσει δοκιμών για δοκιμές αυτοματισμού iOS που δείχνει τις φάσεις σχεδιασμού, δοκιμής, υλοποίησης και επανάληψης δοκιμής

Η Δοκιμαστική Ανάπτυξη (TDD) είναι α δοκιμών μοντέλο που εφαρμόζεται στις δοκιμές εφαρμογών iOS και εντάσσεται στην ευρύτερη πρακτική του δοκιμές για κινητάΣε αυτό το μοντέλο, ένας δοκιμαστής πρέπει να ακολουθήσει τις παρακάτω 4 φάσεις:

  • σχεδιασμού: Κατανοήστε τι θέλετε να δοκιμάσετε και σχεδιάστε τις δοκιμαστικές σας περιπτώσεις.
  • Δοκιμή: Εκτελέστε όλες τις δοκιμές και δείτε εάν κάποια από τις περιπτώσεις δοκιμών αποτύχει.
  • Υλοποιώ, εφαρμόζω: RevΔιορθώστε τον κώδικά σας και διορθώστε τα σφάλματα που προκάλεσαν την αποτυχία της δοκιμής.
  • Δοκιμή ξανά: Εάν μια δοκιμή αποτύχει, επαναφέρετε τον κώδικα στο σχέδιο. Εάν όλες οι περιπτώσεις δοκιμής είναι επιτυχείς, ο κώδικας πληροί ολόκληρη την απαιτούμενη δοκιμή.

Εγκαθιστώ Xcode Έργο για δοκιμή διεπαφής χρήστη

Για να δημιουργήσετε ένα δοκιμαστικό πρόγραμμα iOS, χρειάζεστε έναν Mac. Ο Mac σας πρέπει να έχει ήδη εγκατεστημένα τα ακόλουθα:

  • OS X — το λειτουργικό σύστημα για Mac.
  • Xcode IDE — το εργαλείο ανάπτυξης για iOS.
  • Ένα αυτοματοποιημένο πλαίσιο δοκιμών — Αυτοματοποίηση UI, OCUnit και ούτω καθεξής.
  • iOS SDK 4 ή υψηλότερη.

⚠️ Σημείωση έκδοσης: Οι παραπάνω προϋποθέσεις περιγράφουν την αλυσίδα εργαλείων της εποχής στην οποία γράφτηκαν οι δύο οδηγίες που ακολουθούν. Σε έναν τρέχοντα Mac, Xcode Αποστέλλει τα πλαίσια XCTest και XCUITest στο κουτί και το ξεχωριστό εργαλείο αυτοματισμού UI δεν αποτελεί πλέον μέρος της εγκατάστασης. Τα αρχικά βήματα διατηρούνται παρακάτω επειδή τεκμηριώνουν τον τρόπο λειτουργίας του πλαισίου και το σύγχρονο ισοδύναμο περιγράφεται παρακάτω.

Τρόπος δημιουργίας iOS Automation χρησιμοποιώντας το UI Automation Framework

Τα οκτώ παρακάτω βήματα καταγράφουν ένα σενάριο με το εργαλείο αυτοματισμού και το αναπαράγουν στην υπό δοκιμή εφαρμογή.

Βήμα 1) Εκκίνηση οργάνων

Άνοιγμα XCode -> Άνοιγμα Εργαλείου Προγραμματιστή -> Εργαλείο

Αρχικά Όργανα από το Xcode Άνοιγμα μενού Εργαλείο προγραμματιστή

Βήμα 2) Προσθήκη οργάνου αυτοματισμού

Στο παράθυρο Όργανα, επιλέξτε το όργανο Αυτοματισμού.

Επιλογή του οργάνου αυτοματισμού στον επιλογέα προτύπων οργάνων

Για να δημιουργήσετε ένα δοκιμαστικό σενάριο, είτε καταγράφετε ένα σενάριο δοκιμής ή το προγραμματίζεις χειροκίνητα.

Βήμα 3) Πατήστε το κόκκινο κουμπί

Ένα όργανο εκκινείται — σταματήστε αμέσως την εγγραφή. Αν θέλετε να ξεκινήσετε την εγγραφή, πατήστε το κόκκινο κουμπί.

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

Βήμα 4) Δημιουργήστε ένα νέο σενάριο

Στο παράθυρο Σενάρια, κάντε κλικ στις επιλογές Προσθήκη > Δημιουργία για να δημιουργήσετε ένα νέο σενάριο.

Μενού Προσθήκη και Δημιουργία στο παράθυρο Σενάρια Οργάνων για ένα νέο σενάριο αυτοματοποίησης

Βήμα 5) Επιλέξτε τον στόχο

Βρίσκεστε τώρα στο Tracπαράθυρο e. Χρησιμοποιήστε το κουμπί Επιλογή Target αναπτυσσόμενο μενού για να μεταβείτε στην έκδοση εντοπισμού σφαλμάτων της εφαρμογής σας.

Επιλέξτε Target αναπτυσσόμενο μενού στα Όργανα Tracπαράθυρο που δείχνει προς την έκδοση εντοπισμού σφαλμάτων

Σε αυτήν την περίπτωση, το δείγμα της Apple SimpleDrillDown Η εφαρμογή χρησιμοποιείται ως η εφαρμογή υπό δοκιμή. Έχει το γραφικό περιβάλλον χρήστη που φαίνεται παρακάτω.

Δείγμα διεπαφής εφαρμογής SimpleDrillDown που χρησιμοποιήθηκε ως η εφαρμογή υπό δοκιμή

Βήμα 6) Ξεκινήστε την εγγραφή του σεναρίου σας

Καταγράψτε το σενάριό σας πατώντας το κουμπί εγγραφής στο επάνω ή στο κάτω μέρος του εργαλείου.

Κουμπί εγγραφής στην άκρη του παραθύρου Οργάνων που ξεκινά την καταγραφή σεναρίου

Τώρα μπορείτε να εκτελέσετε ορισμένες ενέργειες UI στην εφαρμογή σας υπό δοκιμή και το σκριπτ σας καταγράφεται.

Βήμα 7) Δείτε το σενάριό σας

Για να δείτε το σενάριό σας, πατήστε το Trace Αναπτυσσόμενο μενού Αρχείο καταγραφής / Αρχείο καταγραφής προγράμματος επεξεργασίας και μετάβαση στην προβολή αρχείου καταγραφής σεναρίων.

TracΑναπτυσσόμενο μενού Αρχείο καταγραφής και επεξεργασίας που χρησιμοποιείται για εναλλαγή στην προβολή αρχείου καταγραφής σεναρίων

Θα δείτε το ηχογραφημένο σενάριο σας.

Εγγεγραμμένο σενάριο αυτοματισμού περιβάλλοντος εργασίας χρήστη που εμφανίζεται στην προβολή καταγραφής σεναρίου οργάνων

Βήμα 8) Παίξτε το σενάριό σας

Πατήστε το κουμπί αναπαραγωγής. Το σενάριο εκτελείται και μπορείτε να το σταματήσετε αφού εμφανιστούν τα αρχεία καταγραφής.

Αναπαραγωγή του ηχογραφημένου σεναρίου αυτοματισμού με έξοδο καταγραφής στο παράθυρο Instruments (Όργανα)

⚠️ Ιστορικό σημείωμα: Το εργαλείο αυτοματισμού που χρησιμοποιήθηκε σε αυτά τα οκτώ βήματα είχε καταργηθεί στο Xcode 8 και αργότερα αφαιρέθηκε, επομένως δεν υπάρχει πλέον στο τρέχον Xcode εγκαταστάσεις. Τα βήματα διατηρούνται εδώ ως αρχείο για το πώς λειτούργησε το πλαίσιο. Για νέες εργασίες, χρησιμοποιήστε την αναλυτική παρουσίαση του XCUITest παρακάτω σε αυτήν τη σελίδα.

Πώς να δημιουργήσετε αυτοματισμό iOS χρησιμοποιώντας το πλαίσιο OCUnit

Η δεύτερη διαδρομή τοποθετεί τις δοκιμές μέσα στο Xcode το ίδιο το έργο και όχι μέσα σε Όργανα.

Βήμα 1) Έναρξη Xcode IDE, Προσθήκη στόχου δέσμης δοκιμής μονάδας

Προσθήκη στόχου Unit Test Bundle σε υπάρχον Xcode project

Βήμα 2) Γράψτε το όνομα της νέας δέσμης δοκιμών μονάδας όπως φαίνεται στο παραπάνω σχήμα και, στη συνέχεια, κάντε κλικ στο Τέλος.

Βήμα 3) Ορίστε το Unit Test ως τον ενεργό στόχο

Επιλογή της δέσμης δοκιμής μονάδας ως ενεργού στόχου στο Xcode

Βήμα 4) Προσθέστε μια ομάδα για δοκιμαστικές τάξεις

Δημιουργία ομάδας έργου για τη διεξαγωγή των μαθημάτων δοκιμής μονάδων iOS

Βήμα 5) Προσθέστε μια κλάση δοκιμής μονάδας

Προσθήκη ενός νέου αρχείου κλάσης δοκιμής μονάδας μέσα στην ομάδα δοκιμών στο Xcode

Βήμα 6) Τώρα ξεκινήστε την εφαρμογή σας

Κενή κλάση δοκιμής μονάδας στο Xcode ο επεξεργαστής είναι έτοιμος για την δοκιμαστική εφαρμογή

Το OCUnit χρησιμοποιεί τη γλώσσα Objective-C για να δημιουργήσει το πρόγραμμα δοκιμών, επομένως ο προγραμματιστής πρέπει να γνωρίζει αυτήν τη γλώσσα. Σύγχρονο Xcode εκδόσεις αποστέλλονται δοκιμή μονάδας μέσω του XCTest, το οποίο υποστηρίζει τόσο Objective-C όσο και Swift, αλλά η δομή στόχου και κλάσης που εμφανίζεται σε αυτά τα έξι βήματα παραμένει αμετάβλητη.

UIAutomation vs XCUITest: Τι άλλαξε

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

Άποψη Αυτοματοποίηση UI (Εργαλεία) XCUITest
Κατάσταση Καταργήθηκε σε Xcode 8 και αφαιρέθηκε από μεταγενέστερες εκδόσεις Υποστηριζόμενο πλαίσιο δοκιμών UI της Apple
Πού βρίσκονται οι δοκιμές Σενάρια μέσα σε ένα μουσικό όργανο tracηλεκτρονικό έγγραφο Ένας στόχος δέσμης δοκιμών UI μέσα στο Xcode project
Γλώσσα JavaΓραφή Swift ή Objective-C
Εκτελών δοκιμής Το όργανο αυτοματισμού XCTest, ο ίδιος δρομέας με τις δοκιμές μονάδων
Συνεχής ολοκλήρωση Αμήχανα — οδηγείται μέσα από όργανα Εκτελείται από τη γραμμή εντολών παράλληλα με τις δοκιμές μονάδας
Εγγραφή Κουμπί εγγραφής στη γραμμή εργαλείων οργάνων Κουμπί εγγραφής στο Xcode επεξεργαστής, ο οποίος εκπέμπει Swift

Η πρακτική συνέπεια είναι ότι μια σουίτα XCUITest είναι ένας συνηθισμένος πηγαίος κώδικας έργου. Αναθεωρείται, τροποποιείται και εκτελείται όπως και η υπόλοιπη βάση κώδικα, που είναι ο κύριος λόγος για τον οποίο καταγράφεται-tracΤο μοντέλο e εξαφανίστηκε.

Πώς να γράψετε μια δοκιμή UI iOS με το XCUITest

Το σύγχρονο αντίστοιχο των οκτώ βημάτων των οργάνων είναι σύντομο. Η παρακάτω δομή αντικατοπτρίζει την ίδια ιδέα της ηχογράφησης και της επανάληψης, αλλά η έξοδος είναι ένα αρχείο πηγής και όχι ένα trace.

  1. Προσθέστε τον στόχο. In Xcode επιλέξτε Αρχείο > Νέο > Target και επιλέξτε το πρότυπο UI Testing Bundle ή επιλέξτε την επιλογή για να συμπεριλάβετε δοκιμές κατά τη δημιουργία ενός νέου έργου.
  2. Ανοίξτε την δημιουργημένη κλάση δοκιμής. Xcode δημιουργεί μια υποκλάση XCTestCase με κενές μεθόδους εγκατάστασης και δοκιμής.
  3. Εκκινήστε την εφαρμογή υπό δοκιμή. Δημιουργήστε μια παρουσία XCUIApplication και καλέστε την εκκίνηση σε αυτήν, η οποία ξεκινά την εφαρμογή σε ξεχωριστή διεργασία.
  4. Ερώτηση και δράση. Προσεγγίστε στοιχεία μέσω των ερωτημάτων στοιχείων — κουμπιά, πίνακες, στατικά κείμενα — και καλέστε tap, typeText ή swipe πάνω τους.
  5. Διεκδικώ. Χρησιμοποιήστε την XCTAssert για να επαληθεύσετε ότι το αναμενόμενο στοιχείο υπάρχει μετά την ενέργεια.
  6. Τρέξιμο. Εκτελέστε τη δοκιμή από το Xcode test navigator ή από τη γραμμή εντολών, ώστε η ίδια σουίτα να εκτελείται σε συνεχή ενσωμάτωση.

Μια ελάχιστη δοκιμή ακολουθεί αυτό το σχήμα:

import XCTest

final class AppUITests: XCTestCase {

    func testTappingFirstRowShowsDetail() {
        let app = XCUIApplication()
        app.launch()

        // act on the first row of the list
        app.tables.cells.element(boundBy: 0).tap()

        // verify that the next screen appeared
        XCTAssertTrue(app.staticTexts.firstMatch.waitForExistence(timeout: 5))
    }
}

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

Δείγμα αυτοματισμού UI Code

Αυτό το άρθρο περιλαμβάνει ορισμένα παραδείγματα πηγαίου κώδικα. Σας βοηθούν να κατανοήσετε το σεμινάριο πιο καθαρά και γρήγορα.

Δείγμα αυτοματισμού UI — δοκιμαστικό σενάριο για την επίδειξη αυτοματισμού περιβάλλοντος εργασίας χρήστη.

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

Όχι. Xcode και οι προσομοιωτές iOS εκτελούνται μόνο σε macOS, επομένως απαιτείται Mac είτε τοπικά είτε ως φιλοξενούμενο μηχάνημα δημιουργίας. Υπάρχουν Cloud device farms και φιλοξενούμενοι πάροχοι CI ακριβώς έτσι ώστε οι ομάδες χωρίς υλικό Mac να μπορούν να εκτελέσουν τη σουίτα.

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

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

Appium οδηγεί το iOS μέσω του προγράμματος οδήγησης XCUITest, το οποίο αντικατέστησε το παλαιότερο πρόγραμμα οδήγησης UIAutomation. Το πλεονέκτημα είναι μια γλώσσα δοκιμών πολλαπλών πλατφορμών για iOS και Android; η αντιστάθμιση είναι ένα επιπλέον επίπεδο μεταξύ της δοκιμής και του ίδιου του runner της Apple.

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

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

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

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

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