Smoke Test στην κινητή ανάπτυξη — τι είναι, εργασίες και πώς εφαρμόζεται

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

Smoke Test (δοκιμή καπνού) είναι ένα ελάχιστο σύνολο ελέγχων που εκτελείται μετά το build της κινητής εφαρμογής για να επιβεβαιωθεί ότι οι βασικές λειτουργίες λειτουργούν. Το Smoke Test επιτρέπει την γρήγορη απόρριψη ασταθών κατασκευών χωρίς τη διεξαγωγή πλήρους κύκλου ελέγχου παλινδρόμησης. Σύμφωνα με το Google Testing Blog (2024), το Smoke Test μειώνει τον χρόνο ανάδρασης για τον πραγματοποιητή από 2–3 ώρες σε 10–15 λεπτά. Smoke Test είναι το πρώτο φίλτρο ποιότητας στον αγωγό CI/CD που εμποδίζει την είσοδο χαλασμένων κατασκευών στο επόμενο στάδιο.

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

  • Smoke Test — γρήγορος έλεγχος των βασικών λειτουργιών της εφαρμογής για την απόρριψη ασταθών κατασκευών.
  • Εργασίες — επιβεβαίωση λειτουργίας της κριτικής διαδρομής χρήστη (σύνδεση, ροή, προφίλ).
  • Smoke Test εκτελείται πριν τον έλεγχο παλινδρόμησης και συνήθως διαρκεί 5–15 λεπτά.
  • Αυτοματοποίηση του Smoke Test στο CI/CD είναι υποχρεωτικό στοιχείο του σύγχρονου αγωγού κινητής ανάπτυξης.
  • Διαφορά από την παλινδρόμηση — το Smoke Test ελέγχει μόνο την κριτική διαδρομή, η παλινδρόμηση καλύπτει όλη τη λειτουργικότητα.

Τι είναι το Smoke Test?

Smoke Test (δοκιμή καπνού) είναι μια συλλογή γρήγορων δοκιμών που ελέγχουν τις βασικές λειτουργίες της εφαρμογής χωρίς επισταμένη ανάλυση. Ο όρος προέρχεται από την μηχανολογία υλικού: εάν μια συσκευή μετά τη συναρμολόγηση αρχίσει να καπνίζει, δεν στέλνεται για πλήρη δοκιμή. Στην κινητή ανάπτυξη, το Smoke Test εκτελεί την ίδια λειτουργία — αποκλείει εξ αρχής μη λειτουργικές κατασκευές. Σύμφωνα με το Microsoft DevOps (2024), η εφαρμογή του Smoke Test μειώνει τον αριθμό των ελαττωμάτων που φτάνουν στην ομάδα QA κατά 40%.

Το Smoke Test εκτελείται σε κάθε νέο build — τόσο σε Android όσο και σε iOS. Ιδανικά, το Smoke Test δεν πρέπει να διαρκεί πάνω από 15 λεπτά και να εκκινά αυτόματα μετά από επιτυχημένο build. Κριτήριο επιτυχίας — το 100% των δοκιμών από το σύνολο Smoke Test πρέπει να ολοκληρωθούν με επιτυχία. Εάν τουλάχιστον μία δοκιμή αποτυχεί, το build σημειώνεται ως ασταθές και δεν αποστέλλεται για περαιτέρω δοκιμή. Σύμφωνα με το Google Testing Blog (2024), αυτή η προσέγγιση μειώνει τον χρόνο παράδοσης λειτουργιών στους χρήστες κατά 25%.

Το Smoke Test μπορεί να είναι τόσο χειροκίνητο (λίστα ελέγχου 5–10 σημείων) όσο και αυτοματοποιημένο. Σε σύγχρονα κινητά έργα, προτιμάται το αυτοματοποιημένο Smoke Test που είναι ενσωματωμένο στο CI/CD. Χειροκίνητο Smoke Test δικαιολογείται μόνο στα πρώιμα στάδια του έργου, όταν η αυτοματοποίηση δεν είναι οικονομικά συμφέρουσα. Σύμφωνα με το Bitrise (2025), το 73% των ομάδων κινητής ανάπτυξης αυτοματοποιούν το Smoke Test.

Πώς διαφέρει το Smoke Test από τον έλεγχο παλινδρόμησης

Smoke Test και έλεγχος παλινδρόμησης συχνά συγχέονται, αλλά είναι διαφορετικές πρακτικές με διαφορετικούς σκοπούς. Ο έλεγχος παλινδρόμησης ελέγχει εάν οι αλλαγές στον κώδικα δεν χαλάσαν την υπάρχουσα λειτουργικότητα. Καλύπτει όλα τα αρθρώματα και τα σενάρια της εφαρμογής, συμπεριλαμβανομένων σπάνιων και οριακών περιπτώσεων. Το Smoke Test ελέγχει μόνο την κριτική διαδρομή — τα βασικά σενάρια χωρίς τα οποία η εφαρμογή είναι άχρηστη. Βάθος κάλυψης — η κύρια διαφορά: το Smoke Test καλύπτει το 5–10% της λειτουργικότητας, η παλινδρόμηση το 80–100%.

Η δεύτερη διαφορά — χρόνος εκτέλεσης. Το σύνολο παλινδρόμησης για μια κινητή εφαρμογή μπορεί να διαρκέσει από 2 έως 12 ώρες ανάλογα με το μέγεθος του έργου και τον αριθμό των πλατφορμών. Το Smoke Test διαρκεί 5–15 λεπτά. Σύμφωνα με τη Sauce Labs (2025), ο μέσος χρόνος εκτέλεσης του συνόλου παλινδρόμησης για εφαρμογή iOS είναι 4,5 ώρες, για Android — 3,2 ώρες. Το Smoke Test και σε δύο πλατφόρμες ολοκληρώνεται σε 10–15 λεπτά.

Η τρίτη διαφορά — θέση στον αγωγό. Το Smoke Test εκτελείται αμέσως μετά το build, πριν τον έλεγχο παλινδρόμησης. Εάν το Smoke Test αποτυχεί, η παλινδρόμηση δεν εκκινά — αυτό εξοικονομεί πόρους CI/CD. Pipeline efficiency — το Smoke Test αποκλείει έως και 30% των builds που δεν θα περνούσαν από την παλινδρόμηση, και οι εξοικονομημένοι πόροι είναι αρκετοί για παράλληλη εκτέλεση άλλων εργασιών.

ΠαράμετροςSmoke TestΈλεγχος παλινδρόμησης
ΣκοπόςΓρήγορος έλεγχος κριτικής διαδρομήςΈλεγχος όλης της λειτουργικότητας
Όγκος5–10% σεναρίων80–100% σεναρίων
Χρόνος5–15 λεπτά2–12 ώρες
ΣυχνότηταΣε κάθε buildΠριν την εκδοση ή καθημερινά
CI/CDΜετά το build, πριν την παλινδρόμησηΜετά το Smoke Test

Τι περιλαμβάνει το Smoke Test μιας κινητής εφαρμογής

Εκκίνηση εφαρμογής

Εκκίνηση εφαρμογής — το πρώτο και πιο σημαντικό τεστ. Η εφαρμογή πρέπει να εκκινά χωρίς σφάλμα σε όλες τις στοχευμένες συσκευές. Το Smoke Test ελέγχει την ψυχρή εκκίνηση: εγκατάσταση → άνοιγμα → εμφάνιση πρώτης οθόνης. Εάν η εφαρμογή συντρίβεται κατά την εκκίνηση, η περαιτέρω δοκιμή είναι άχρηστη. Τα XCUITest και Espresso επιτρέπουν την αυτοματοποίηση του ελέγχου εκκίνησης σε 2–3 γραμμές κώδικα. Launch argument `-AppleLanguages (el)` βοηθά στον έλεγχο της τοπικοποίησης κατά την εκκίνηση.

Εξουσιοδότηση

Εξουσιοδότηση — το δεύτερο κριτικό σενάριο. Το Smoke Test πρέπει να ελέγχει ότι η φόρμα σύνδεσης εμφανίζεται, τα πεδία εισαγωγής αντιδρούν στο άγγιγμα, το κουμπί σύνδεσης στέλνει το αίτημα και η εφαρμογή μεταβαίνει στην αρχική οθόνη μετά από επιτυχημένη εξουσιοδότηση. Το σφάλμα εξουσιοδότησης αποκλείει την πρόσβαση σε όλες τις άλλες λειτουργίες, επομένως ο έλεγχός της περιλαμβάνεται στο ελάχιστο σύνολο. Token refresh — επιπρόσθετος έλεγχος για εφαρμογές με OAuth 2.0.

Φόρτωση περιεχομένου και πλοήγηση

Φόρτωση κύριου περιεχομένου — το τρίτο τεστ Smoke Test. Η αρχική οθόνη ή ροή της εφαρμογής πρέπει να φορτώνει και να εμφανίζει δεδομένα. Εάν το API δεν απαντά ή η ανάλυση της απόκρισης είναι εσφαλμένη, ο χρήστης βλέπει μια κενή οθόνη. Ο έλεγχος δικτύου στο Smoke Test περιλαμβάνει ένα βασικό αίτημα GET προς το κύριο endpoint και έλεγχο ότι η απάντηση έχει την αναμενόμενη δομή. Πλοήγηση — το τέταρτο σενάριο. Το Smoke Test διασχίζει τις κύριες οθόνες της εφαρμογής: αρχική → αναζήτηση → προφίλ → ρυθμίσεις. Η γραμμή καρτελών και το πλευρικό μενού — τυπικές πηγές προβλημάτων στην πλοήγηση που το Smoke Test ανιχνεύει σε πρώιμο στάδιο.

Αυτοματοποίηση Smoke Test στο CI/CD

Fastlane — το πρότυπο εργαλείο για αυτοματοποίηση κινητού CI/CD. Το Smoke Test στο Fastlane εκκινά μέσω `scan` (για XCUITest) ή `gradle` (για Espresso). Το Fastlane επιτρέπει τη ρύθμιση εκκίνησης του Smoke Test σε πολλά χροικά παράλληλα, μειώνοντας έτσι τον συνολικό χρόνο. Ρύθμιση στο Fastfile περιλαμβάνει τον στόχο για το σύνολο Smoke Test και το κατώφλι επιτυχίας: 100% επιτυχημένες δοκιμές.

GitHub Actions (2024) δημοσίευσε ένα πρότυπο κινητού CI/CD με ενσωματωμένο Smoke Test. Το πρότυπο περιλαμβάνει τρία στάδια: build → Smoke Test → παλινδρόμηση. Εάν το Smoke Test αποτυχεί, το πρότυπο τερματίζει αυτόματα τον αγωγό και στέλνει ειδοποίηση στο Slack ή Telegram. Matrix strategy επιτρέπει την ταυτόχρονη εκκίνηση του Smoke Test σε τρεις εκδόσεις iOS και πέντε μοντέλα Android.

Διαιρεσμός ευθυνών στο CI/CD: το Smoke Test είναι υπεύθυνο για γρήγορη ανάδραση, η παλινδρόμηση για πλήρη κάλυψη. Το Smoke Test δεν πρέπει να αντιγράφει την παλινδρόμηση και αντιστρόφως. Βαθμίδα Smoke Test — ένας έλεγχος ανά κριτικό σενάριο. Εάν το Smoke Test διαρκεί περισσότερο από 15 λεπτά, πρέπει να βελτιστοποιηθεί: να αφαιρεθούν οι περιττοί έλεγχοι ή να παραλληλιστεί η εκτέλεση.

ruby
# Ρύθμιση Fastfile για Smoke Test
platform :ios do
    lane :smoke do
        scan(
            scheme: 'App',
            devices: ['iPhone 15', 'iPhone SE'],
            testplan: 'SmokeTest',
            output_directory: 'reports/smoke',
            fail_build: true
        )
    end

    lane :regression do
        scan(
            scheme: 'App',
            devices: ['iPhone 15', 'iPhone 14', 'iPhone SE'],
            testplan: 'FullRegression'
        )
    end
end

Εργαλεία για Smoke Test

XCUITest — το πλαίσιο της Apple για δοκιμή UI εφαρμογών iOS. Το XCUITest χρησιμοποιείται για αυτοματοποίηση του Smoke Test: εκκίνηση εφαρμογής, έλεγχος στοιχείων διεπαφής, προσομοίωση ενεργειών χρήστη. Σε συνδυασμό με Xcode Server ή GitHub Actions, το XCUITest εκτελείται σε κάθε commit. XCTest — το βασικό πλαίσιο για unit test που συμπληρώνει το XCUITest για έλεγχο λογικής.

Espresso — το πλαίσιο της Google για δοκιμή UI σε Android. Το Espresso συγχρονίζεται με το νήμα UI και εγγυάται ότι όλες οι κινήσεις έχουν ολοκληρωθεί πριν την έναρξη του ελέγχου. Το Espresso υποστηρίζει έλεγχο μέσω `onView(withId(...)).check(matches(...))`. Android Test Orchestrator εκτελεί κάθε Smoke Test σε ξεχωριστή διεργασία, αποτρέποντας την επηρεασμού προηγούμενων δοκιμών σε επόμενες.

Detox — πλαίσιο για React Native που υποστηρίζει Smoke Test και grey-box testing. Το Detox συγχρονίζεται με το React Native bridge και αυτόματα αναμένει την ολοκλήρωση ασύγχρονων λειτουργιών. Grey-box testing επιτρέπει στο Detox να ελέγχει την κατάσταση της εφαρμογής χωρίς άμεση πρόσβαση στον πηγαίο κώδικα.

Παράδειγμα Smoke Test σε Swift και Kotlin

XCUITest για iOS περιέχει δύο ελέγχους: εκκίνηση εφαρμογής και εμφάνιση αρχικής οθόνης. Το τεστ εκκινά την εφαρμογή μέσω `XCUIApplication().launch()` και ελέγχει αν υπάρχει το κλειδί στοιχείο (π.χ. `navigationBar`). Εάν η εφαρμογή συντρίβεται κατά την εκκίνηση, το πλαίσιο XCTest καταγράφει το σφάλμα και το τεστ τελειώνει με FAIL. Smoke Test δεν ελέγχει το περιεχόμενο — μόνο ότι η οθόνη άνοιξε.

Espresso για Android χρησιμοποιεί το `ActivityScenario` για την εκκίνηση Activity και το `onView` για τον έλεγχο στοιχείων. Η κρίσιμη διαφορά μεταξύ πλατφορμών: ο επιλογιστής iOS μπορεί να εμφανίσει διαφορετική συμπεριφορά από την πραγματική συσκευή, επομένως το Smoke Test σε Android συνιστάται να εκτελείται σε Firebase Test Lab ή εμυλευτή. Firebase Test Lab υποστηρίζει παράλληλη εκκίνηση Smoke Test σε 10 συσκευές.

swift
import XCTest

class LoginSmokeTest: XCTestCase {
    let app = XCUIApplication()

    override func setUp() {
        continueAfterFailure = false
        app.launch()
    }

    func testLoginButtonExists() {
        XCTAssertTrue(app.buttons["Σύνδεση"].exists)
    }

    func testLoginFlow() {
        app.textFields["email"].tap()
        app.textFields["email"].typeText("test@test.com")
        app.secureTextFields["password"].tap()
        app.secureTextFields["password"].typeText("password123")
        app.buttons["Log In"].tap()
        XCTAssertTrue(app.staticTexts["Welcome"].waitForExistence(timeout: 5))
    }
}

Το παραπάνω παράδειγμα δείχνει το Smoke Test για την οθόνη σύνδεσης σε iOS. Το πρώτο τεστ ελέγχει αν υπάρχει το κουμπί σύνδεσης στην οθόνη. Το δεύτερο τεστ διανύει ολόκληρο το μονοπάτι εξουσιοδότησης και ελέγχει αν μετά την επιτυχημένη σύνδεση εμφανίζεται ένα μήνυμα καλωσορίσματος. Timeout 5 δευτερόλεπτων για το waitForExistence — τυπική τιμή για το Smoke Test: εάν το στοιχείο UI δεν εμφανιστεί μέσα σε αυτό το χρονικό διάστημα, η εφαρμογή δεν λειτουργεί σωστά.

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

Πόσες δοκιμές πρέπει να υπάρχουν σε ένα Smoke Test;

Ο βελτιστος αριθμός είναι 5 έως 15 δοκιμές ανά άρθρωμα. Το Smoke Test πρέπει να καλύπτει την κριτική διαδρομή χρήστη, αλλά να μην προσπαθεί να καλύψει όλη τη λειτουργικότητα. Κριτήριο — εάν όλες οι δοκιμές Smoke Test περάσουν, η εφαρμογή μπορεί να ανοιχτεί στο περιβάλλον QA για περαιτέρω δοκιμή.

Πώς διαφέρει το Smoke Test από το sanity check;

Smoke Test ελέγχει την σταθερότητα του build και εκτελείται σε κάθε build. Το Sanity check είναι ένα πιο στενό σύνολο δοκιμών που εκτελείται μετά την εφαρμογή συγκεκριμένων αλλαγών. Το Sanity check απαντά στην ερώτηση ‘μήπως αυτή η αλλαγή χαλάσαε την λειτουργία X;’, ένω το Smoke Test απαντά στο ‘λειτουργεί το build καταρχήν;’.

Πρέπει να αυτοματοποιήσουμε το Smoke Test;

Ναι, η αυτοματοποίηση του Smoke Test είναι υποχρεωτική πρακτική για έργα με συχνές εκδόσεις. Αυτοματοποίηση εξασφαλίζει τη συνέπεια των ελέγχων και την ταχύτητα εκτέλεσης. Το χειροκίνητο Smoke Test δικαιολογείται μόνο στα πρώιμα στάδια του έργου, όταν ο αριθμός των builds δεν υπερβαίνει τις 2–3 ανά εβδομάδα.

Τι να κάνουμε εάν το Smoke Test αποτυχεί;

Το build σημειώνεται ως ασταθές και δεν αποστέλλεται για περαιτέρω δοκιμή. Ο πραγματοποιητής λαμβάνει ειδοποίηση με τα αρχεία καταγραφής της αποτυχίας του Smoke Test. Μετά την επισκευή του προβλήματος δημιουργείται ένα νέο build στο οποίο το Smoke Test εκτελείται ξανά. Το μπλοκίρισμα σφάλμα καταγράφεται στον ιχνηλατή.

Πόσο συχνά πρέπει να ενημερώνεται το Smoke Test;

Smoke Test ενημερώνεται με κάθε αλλαγή της κριτικής διαδρομής χρήστη. Εάν προστίθεται μια νέα υποχρεωτική οθόνη (π.χ. onboarding), πρέπει να συμπεριληφθεί στο Smoke Test. Συνιστάται η επιθεώρηση του συνόλου Smoke Test κάθε sprint για την επικαιρότητα των ελέγχων.

Σύνοψη

  • Smoke Test είναι ένα ελάχιστο σύνολο ελέγχων της κριτικής διαδρομής της εφαρμογής, που εκτελείται μετά κάθε build.
  • Βασικοί έλεγχοι — εκκίνηση εφαρμογής, εξουσιοδότηση, φόρτωση περιεχομένου και πλοήγηση σε κύριες οθόνες.
  • Διαφορά από την παλινδρόμηση — το Smoke Test καλύπτει 5–10% των σεναρίων και εκτελείται σε 5–15 λεπτά, όχι σε ώρες.
  • Εργαλεία — XCUITest για iOS, Espresso για Android, Detox για React Native.
  • Αυτοματοποίηση του Smoke Test ενσωματώνεται στο CI/CD μέσω Fastlane, GitHub Actions ή Bitrise.
  • Smoke Test εκτελείται πριν τον έλεγχο παλινδρόμησης και αποκλείει έως 30% των ασταθών builds.
  • Συνιστάται η επιθεώρηση της σύνθεσης του Smoke Test κάθε sprint για τη διατήρηση της επικαιρότητας.

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

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

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

Διαβάστε επίσης