Δοκιμές στην ανάπτυξη κινητών: τι είναι, ποιοι τύποι και πώς να οργανωθεί

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-03-31 Χρόνος ανάγνωσης: 9 λεπ

Οι δοκιμές εφαρμογών κινητών είναι η διαδικασία επαλήθευσης ότι μια εφαρμογή λειτουργεί σωστά, δεν καταρρέει και πληροί τις απαιτήσεις. Σύμφωνα με το Software Testing Help (2025), οι αυτοματοποιημένες δοκιμές μειώνουν τον χρόνο των ελέγχων παλινδρόμησης κατά 70–80% σε σύγκριση με τις χειροκίνητες δοκιμές. Σε αυτό το άρθρο, θα εξετάσουμε τα επίπεδα δοκιμών, τα εργαλεία για iOS και Android, το TDD και το BDD, καθώς και το CI/CD για δοκιμές.

Βασικά σημεία

  • Οι δοκιμές μονάδας επαληθεύουν μεμονωμένες συναρτήσεις και κλάσεις· οι δοκιμές ολοκλήρωσης επαληθεύουν την αλληλεπίδραση μονάδων· οι E2E καλύπτουν το πλήρες σενάριο χρήστη.
  • iOS: XCTest για δοκιμές μονάδας, XCUITest για δοκιμές UI. Android: JUnit + Mockito + Espresso.
  • Διαπλατφορμικά πλαίσια: Detox (React Native), Appium (καθολικό), XCUITest (iOS).
  • TDD (Test-Driven Development) — πρώτα η δοκιμή, μετά ο κώδικας· BDD — σενάρια σε απλή γλώσσα.
  • CI/CD: οι δοκιμές εκτελούνται αυτόματα σε κάθε push — αυτό είναι υποχρεωτικό πρότυπο για εμπορική ανάπτυξη.

Επίπεδα δοκιμών: Unit, Integration, E2E

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

Οι δοκιμές μονάδας είναι το θεμέλιο των δοκιμών εφαρμογών κινητών. Επαληθεύουν τη μικρότερη μονάδα κώδικα — μία συνάρτηση, μέθοδο ή κλάση απομονωμένη από το υπόλοιπο σύστημα. Στην ανάπτυξη κινητών, οι δοκιμές μονάδας γράφονται σε JUnit (Android) και XCTest (iOS). Μια καλή δοκιμή μονάδας πρέπει να είναι γρήγορη, ανεξάρτητη και επαναλήψιμη — δεν πρέπει να εξαρτάται από το δίκτυο, τη βάση δεδομένων ή τα στοιχεία UI. Για απομόνωση χρησιμοποιούνται διπλότυπα δοκιμών: mock, stub και fake.

Mockito (Java/Kotlin) και MockK (Kotlin-first) είναι δημοφιλείς βιβλιοθήκες για δημιουργία αντικειμένων mock στο Android. Στο iOS χρησιμοποιούνται OCMock, Cuckoo ή χειροκίνητα πρωτόκολλα. Κανόνας: οι δοκιμές μονάδας πρέπει να καλύπτουν την επιχειρηματική λογική και τα μοντέλα δεδομένων. Οι δοκιμές UI δεν πρέπει να αντιγράφουν τις δοκιμές μονάδας — επαληθεύουν την αλληλεπίδραση του χρήστη με τη διεπαφή.

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

Οι δοκιμές ολοκλήρωσης επαληθεύουν την αλληλεπίδραση μεταξύ στοιχείων: αποθετήριο με βάση δεδομένων, ViewModel με υπηρεσία API, πλοήγηση μεταξύ οθονών. Σε αντίθεση με τις δοκιμές μονάδας, οι δοκιμές ολοκλήρωσης χρησιμοποιούν πραγματικές ή κοντινές στην πραγματικότητα εξαρτήσεις (π.χ. βάση δεδομένων στη μνήμη ή διακομιστή mock). Robolectric είναι ένα πλαίσιο για εκτέλεση δοκιμών Android σε JVM χωρίς εξομοιωτή, επιταχύνοντας τις δοκιμές ολοκλήρωσης 10 φορές.

Οι δοκιμές στιγμιότυπου (Golden Tests) είναι ένα ειδικό είδος δοκιμής ολοκλήρωσης που συγκρίνουν ένα στοιχείο UI που έχει αποδοθεί με μια εικόνα αναφοράς (στιγμιότυπο). Εάν η εμφάνιση αλλάξει, η δοκιμή αποτυγχάνει — ο προγραμματιστής βλέπει τι άλλαξε. Το Facebook SnapshotTestCase (iOS) και το Shot (Android) είναι δημοφιλή εργαλεία για δοκιμές στιγμιότυπου.

Δοκιμές E2E και UI

Οι δοκιμές E2E (από άκρο σε άκρο) επαληθεύουν το πλήρες σενάριο χρήστη από την αρχή έως το τέλος: εκκίνηση εφαρμογής, σύνδεση, εκτέλεση ενέργειας, έλεγχος αποτελέσματος. Οι δοκιμές UI είναι ένα υποσύνολο των E2E που εστιάζει στη διεπαφή. Εργαλεία: Espresso (Android), XCUITest (iOS), Detox (React Native). Οι δοκιμές E2E είναι οι πιο αργές, επομένως εκτελούνται ξεχωριστά στο CI — συνήθως σε νυχτερινές εκδόσεις.

Εργαλεία iOS: XCTest και XCUITest

XCTest

XCTest είναι το ενσωματωμένο πλαίσιο της Apple για δοκιμές μονάδας εφαρμογών κινητών. Το XCTestRunner εκτελεί δοκιμές στον προσομοιωτή ή σε μια πραγματική συσκευή. Οι δοκιμές κληρονομούν από το XCTestCase, περιέχουν setUp και tearDown για προετοιμασία και καθαρισμό. Το XCTest περιλαμβάνει XCTAssert για ισχυρισμούς (XCTAssertEqual, XCTAssertNil, XCTAssertTrue) και XCTWaiter για αναμονή ασύγχρονων λειτουργιών.

Παράδειγμα απλής δοκιμής XCTest: δημιουργία μοντέλου User, έλεγχος ορθότητας αρχικοποίησης, μορφοποίησης ονόματος και υπολογισμού ηλικίας. Code Coverage στο Xcode δείχνει ποιες γραμμές κώδικα καλύπτονται από δοκιμές — ο στόχος για εμπορικά έργα: τουλάχιστον 70–80% κάλυψη επιχειρηματικής λογικής. Το XCTest είναι ενσωματωμένο με τον Xcode Server και συστήματα CI μέσω xcodebuild test.

XCUITest

XCUITest είναι το πλαίσιο της Apple για δοκιμές UI. Λειτουργεί μέσω αναγνωριστικών προσβασιμότητας: το XCUIElementQuery βρίσκει κουμπιά, πεδία εισόδου, πίνακες ανά ετικέτα, αναγνωριστικό ή τύπο. Το XCUITest καταγράφει μια ακολουθία ενεργειών (εγγραφή/αναπαραγωγή) και παράγει κώδικα δοκιμής. Σημαντικό: όλα τα στοιχεία UI πρέπει να έχουν accessibilityIdentifier για σταθερή λειτουργία των δοκιμών.

Εργαλεία Android: JUnit, Espresso, Robolectric

JUnit και Mockito

JUnit είναι το βασικό πλαίσιο για δοκιμές μονάδας εφαρμογών κινητών σε Java/Kotlin. Στο Android χρησιμοποιούνται JUnit 4 (τελευταία σταθερή έκδοση 4.13.2) και JUnit 5 για νέα έργα. Mockito είναι μια βιβλιοθήκη για δημιουργία αντικειμένων mock: when(mock.method()).thenReturn(value) — ένα τυπικό μοτίβο για απομόνωση της ελεγχόμενης κλάσης από εξαρτήσεις.

Παράδειγμα δοκιμής JUnit για Android:

java
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

@RunWith(MockitoJUnitRunner.class)
public class LoginViewModelTest {

    @Mock
    AuthRepository authRepository;

    @Test
    public void login_emptyEmail_returnsError() {
        LoginViewModel vm = new LoginViewModel(authRepository);
        String result = vm.login("", "password123");
        assertEquals("Email cannot be empty", result);
        verify(authRepository, never()).authenticate(any());
    }
}

Espresso και UI Automator

Espresso είναι το πλαίσιο της Google για δοκιμές UI Android. Το Espresso συγχρονίζεται αυτόματα με το νήμα UI: onView(withId(R.id.button)).perform(click()).check(matches(isDisplayed())). Το Espresso είναι εύκολο στη σύνταξη και σταθερό χάρη στην ενσωματωμένη αναμονή κατάστασης αδράνειας. UI Automator είναι ένα πλαίσιο για δοκιμές μεταξύ εφαρμογών που μπορεί να αλληλεπιδράσει με στοιχεία συστήματος (παράθυρα διαλόγου αδειών, σκιά ειδοποιήσεων).

Διαπλατφορμικά εργαλεία: Detox, Appium

Detox για React Native

Detox είναι ένα πλαίσιο E2E γκρίζου κουτιού για δοκιμή εφαρμογών κινητών React Native από την Wix. Το Detox λειτουργεί και στις δύο πλατφόρμες από μία ενιαία βάση κώδικα δοκιμών, χρησιμοποιώντας Espresso (Android) και XCUITest (iOS) εσωτερικά. Το Detox περιμένει αυτόματα μέχρι η εφαρμογή να γίνει αδρανής (χωρίς κινούμενα σχέδια, αιτήματα δικτύου, χρονοδιακόπτες) και μόνο τότε εκτελεί την επόμενη ενέργεια.

Appium

Appium είναι ένα καθολικό διαπλατφορμικό πλαίσιο που υποστηρίζει Android, iOS, Web και υβριδικές εφαρμογές. Το Appium χρησιμοποιεί το πρωτόκολλο WebDriver και υποστηρίζει οποιαδήποτε γλώσσα προγραμματισμού (Java, Python, JS, Ruby). Ο διακομιστής Appium λειτουργεί ως διακομιστής HTTP που μεταφράζει εντολές σε εγγενείς εντολές UI Automator / XCUITest. Το κύριο μειονέκτημα του Appium είναι η ταχύτητα: οι δοκιμές εκτελούνται πιο αργά από τις εγγενείς Espresso ή XCUITest.

Σύγκριση εργαλείων δοκιμών iOS και Android
Κριτήριο iOS Android
Δοκιμές μονάδας XCTest JUnit 4/5 + Mockito
Δοκιμές UI XCUITest Espresso, UI Automator
Δοκιμές στιγμιότυπου FBSnapshotTestCase Shot, Roborazzi
Αυτοματοποίηση χειρονομιών XCUIGesture UiAutomator touch
Κάλυψη κώδικα Xcode Code Coverage Jacoco
Ενσωμάτωση CI xcodebuild test Gradle connectedCheck

TDD και BDD: μεθοδολογίες δοκιμών

TDD: Test-Driven Development

TDD είναι μια μεθοδολογία δοκιμών εφαρμογών κινητών όπου η δοκιμή γράφεται πριν από τον κώδικα υλοποίησης. Ο κύκλος Red-Green-Refactor: (1) γράψτε μια δοκιμή που αποτυγχάνει (Red), (2) γράψτε ελάχιστο κώδικα για να περάσει η δοκιμή (Green), (3) αναδιαμορφώστε τον κώδικα διατηρώντας την επιτυχία της δοκιμής. Το TDD παρέχει 100% κάλυψη δοκιμών για νέα λειτουργικότητα και καθαρή αρχιτεκτονική, καθώς η δοκιμή είναι η πρώτη προδιαγραφή της απαίτησης.

BDD: Behaviour-Driven Development

BDD είναι μια επέκταση του TDD όπου οι δοκιμές γράφονται σε φυσική γλώσσα σε μορφή Given-When-Then. Given (πλαίσιο) — When (ενέργεια) — Then (αναμενόμενο αποτέλεσμα). Οι δοκιμές BDD είναι κατανοητές από όλα τα μέλη της ομάδας: προγραμματιστές, ελεγκτές, αναλυτές και πελάτες. Mock έναντι Stub έναντι Fake: Το Mock επαληθεύει την αλληλεπίδραση (αν κλήθηκε η μέθοδος), το Stub επιστρέφει σταθερά δεδομένα, το Fake είναι μια απλοποιημένη λειτουργική υλοποίηση (π.χ., βάση δεδομένων στη μνήμη). Στην IT Sectr, χρησιμοποιούμε TDD για κρίσιμη επιχειρηματική λογική και BDD για σενάρια αποδοχής.

Διπλότυπα δοκιμών είναι η γενική ονομασία για αντικείμενα που αντικαθιστούν πραγματικές εξαρτήσεις σε δοκιμές. Υπάρχουν τέσσερις τύποι: Dummy (αντικείμενο για συμπλήρωση παραμέτρων, δεν χρησιμοποιείται), Stub (επιστρέφει δεδομένες τιμές), Spy (καταγράφει κλήσεις για επαλήθευση), Mock (προκαθορίζει αναμενόμενες κλήσεις). Η κατανόηση της διαφοράς είναι κρίσιμη για τον σωστό σχεδιασμό δοκιμών.

CI/CD και Device Farm

Αυτοματοποίηση δοκιμών σε CI/CD

CI/CD — Συνεχής Ενσωμάτωση και Συνεχής Παράδοση: η πρακτική της αυτόματης δημιουργίας και δοκιμής εφαρμογών κινητών σε κάθε αλλαγή κώδικα. Στην ανάπτυξη κινητών, η γραμμή CI/CD περιλαμβάνει: linting, δοκιμές μονάδας, δοκιμές ολοκλήρωσης, δημιουργία APK/IPA και δοκιμές UI. GitHub Actions και Bitrise είναι δημοφιλείς πλατφόρμες για κινητό CI/CD. Οι δοκιμές πρέπει να εκτελούνται γρήγορα: δοκιμές μονάδας σε 1–2 λεπτά, ολοκλήρωσης σε 5–10, UI σε 15–30 λεπτά.

Device Farm

Device Farm είναι μια φάρμα πραγματικών συσκευών για δοκιμές. Το Firebase Test Lab (Android) και το Xcode Cloud (iOS) παρέχουν πρόσβαση στο cloud σε εκατοντάδες μοντέλα συσκευών. Το Device Farm αποκαλύπτει προβλήματα που δεν είναι ορατά σε εξομοιωτές: διαφορετικά μεγέθη οθόνης, απόδοση σε παλαιότερες συσκευές, προβλήματα συμβατότητας. Στην IT Sectr, χρησιμοποιούμε τακτικά το Firebase Test Lab για Android και το Xcode Cloud για iOS.

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

Ποιο ποσοστό κάλυψης δοκιμών θεωρείται φυσιολογικό;

Για εμπορικά έργα, τουλάχιστον 70–80% κάλυψη επιχειρηματικής λογικής. Ο κώδικας UI είναι πιο δύσκολο να καλυφθεί — 50% είναι αρκετό. Το σημαντικό δεν είναι το ποσοστό αλλά η ποιότητα των δοκιμών: δοκιμάστε κρίσιμα σενάρια, ακραίες περιπτώσεις και διαχείριση σφαλμάτων.

Σε τι διαφέρει το Mock από το Stub;

Mock επαληθεύει την αλληλεπίδραση — αν κλήθηκε μια συγκεκριμένη μέθοδος με συγκεκριμένες παραμέτρους. Το Stub επιστρέφει προκαθορισμένα δεδομένα. Το Mock ελέγχει τη συμπεριφορά, το Stub ελέγχει την κατάσταση.

Πρέπει να γράφω δοκιμές για το UI;

Ναι, αλλά μόνο για κρίσιμα σενάρια: σύνδεση, εγγραφή, ολοκλήρωση παραγγελίας, πληρωμή. Οι δοκιμές UI είναι αργές και εύθραυστες — μην γράφετε δοκιμή για κάθε οθόνη. Επικεντρωθείτε στα σενάρια E2E του χρήστη.

Τι είναι το Snapshot Test;

Snapshot Test (Golden Test) συγκρίνει ένα στοιχείο UI που έχει αποδοθεί με μια εικόνα αναφοράς. Εάν η εμφάνιση αλλάξει (γραμματοσειρά, περιθώριο, χρώμα), η δοκιμή αποτυγχάνει — ο προγραμματιστής ελέγχει αν η αλλαγή είναι σκόπιμη. Ιδανικό για βιβλιοθήκες στοιχείων.

Πώς να επιταχύνω τις δοκιμές E2E;

Εκτελέστε τις δοκιμές E2E παράλληλα σε πολλές συσκευές, χρησιμοποιήστε το Cloud Device Farm και χωρίστε τις δοκιμές σε ανεξάρτητες ομάδες. Βελτιστοποιήστε τις δοκιμές: ελαχιστοποιήστε τις αναμονές, χρησιμοποιήστε mock για αιτήματα δικτύου.

Σύνοψη

  • Δοκιμές μονάδας — η βάση της πυραμίδας δοκιμών: γρήγορες, απομονωμένες, καλύπτουν επιχειρηματική λογική.
  • iOS: XCTest για μονάδα, XCUITest για UI. Android: JUnit + Mockito, Espresso για UI, Robolectric για γρήγορες δοκιμές ολοκλήρωσης.
  • Διαπλατφορμικά πλαίσια: Detox (React Native), Appium (καθολικό), XCUITest (iOS-εγγενές).
  • TDD — δοκιμή πριν από τον κώδικα, BDD — σενάρια σε επιχειρηματική γλώσσα (Given-When-Then).
  • CI/CD — αυτόματη εκτέλεση δοκιμών σε κάθε push είναι υποχρεωτική για σύγχρονη ανάπτυξη.
  • Device Farm — δοκιμές σε πραγματικές συσκευές στο cloud για εντοπισμό προβλημάτων υλικού.
  • Η πυραμίδα δοκιμών: πολλές μονάδας, λιγότερες ολοκλήρωσης, ακόμα λιγότερες E2E — η βέλτιστη ισορροπία ταχύτητας και κάλυψης.

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου