Return to Video

5.8 - 5.11 - Coverage, Unit vs. Integration Tests, Other Testing Concepts, and Perspectives (19:26)

  • 0:00 - 0:01
    Έτσι, δαπανήσαμε ένα σύνολο μικρών στρογγυλών του χρόνου
  • 0:01 - 0:03
    κατά τα τελευταία δύο διαλέξεις
  • 0:03 - 0:05
    μιλάμε για διαφορετικά είδη των δοκιμών
  • 0:05 - 0:08
    σχετικά με την μονάδα δοκιμές έναντι της δοκιμής ολοκλήρωσης
  • 0:08 - 0:10
    Μας μίλησε σχετικά με τον τρόπο χρήσης RSpec
  • 0:10 - 0:12
    για να απομονώσετε πραγματικά τα τμήματα του κώδικα που θέλετε να ελέγξετε
  • 0:12 - 0:14
    έχετε επίσης, το γνωρίζετε, λόγω σπίτι 3,
  • 0:14 - 0:18
    και άλλα πράγματα, όπως το κάνουμε BDD,
  • 0:18 - 0:20
    όταν μας έχετε χρησιμοποιούν Αγγούρι για να ενεργοποιήσετε τις ιστορίες του χρήστη
  • 0:20 - 0:22
    σε, ουσιαστικά, οι δοκιμές ολοκλήρωσης και αποδοχή
  • 0:22 - 0:25
    Έτσι που έχετε δει δοκιμές σε δυο διαφορετικά επίπεδα
  • 0:25 - 0:27
    και ο στόχος εδώ είναι είδος για να κάνουμε μερικές παρατηρήσεις
  • 0:27 - 0:29
    να, γνωρίζετε, ας αντιγράφων ασφαλείας λίγο bit
  • 0:29 - 0:33
    Δείτε τη συνολική εικόνα και μπορείτε να συνενώσετε αυτά τα πράγματα
  • 0:33 - 0:34
    Έτσι αυτό είδος εκτείνεται σε υλικό
  • 0:34 - 0:37
    που καλύπτει τρεις ή τέσσερις ενότητες στο βιβλίο
  • 0:37 - 0:39
    και θέλω να χτυπήσει μόνο τα υψηλά σημεία σε διάλεξη
  • 0:39 - 0:41
    Έτσι μια ερώτηση που προέρχεται
  • 0:41 - 0:43
    Είμαι βέβαιος ότι κατέληξε για εσάς
  • 0:43 - 0:44
    όπως σας κάνουν σπίτι
  • 0:44 - 0:45
    είναι: "πόσο δοκιμές είναι αρκετά;"
  • 0:45 - 0:48
    Και, δυστυχώς, για πολύ καιρό
  • 0:48 - 0:51
    είδος του αν το ερώτημα στη βιομηχανία
  • 0:51 - 0:52
    η απάντηση ήταν βασικά
  • 0:52 - 0:53
    «Καλά, έχουμε μια προθεσμία αποστολής,
  • 0:53 - 0:54
    Έτσι όμως η δοκιμή πολύ μπορούμε να κάνουμε
  • 0:54 - 0:56
    πριν από την προθεσμία αυτή, αυτό είναι πόσο."
  • 0:56 - 0:58
    Αυτό είναι τι έχετε χρόνο για.
  • 0:58 - 1:00
    Έτσι, ξέρετε, ότι μια μικρή αναστροφή
  • 1:00 - 1:01
    προφανώς δεν είναι πολύ καλή
  • 1:01 - 1:02
    Έτσι, μπορείτε να κάνετε λίγο καλύτερα, δικαίωμα;
  • 1:02 - 1:03
    Είστε εκεί κάποια στατική μέτρα
  • 1:03 - 1:06
    όπως πόσες γραμμές κώδικα σας app διαθέτει
  • 1:06 - 1:08
    και πόσες γραμμές των δοκιμών που έχετε;
  • 1:08 - 1:10
    Και δεν είναι ασυνήθιστο στη βιομηχανία
  • 1:10 - 1:12
    σε ένα καλά κομμάτι λογισμικού
  • 1:12 - 1:14
    για τον αριθμό των γραμμών των δοκιμών
  • 1:14 - 1:17
    να υπερβαίνουν κατά πολύ τον αριθμό των γραμμών του κώδικα
  • 1:17 - 1:19
    Έτσι, ακέραιο πολλαπλάσιο δεν είναι ασυνήθιστο
  • 1:19 - 1:21
    Και θεωρώ ακόμη και για είδος της, γνωρίζετε,
  • 1:21 - 1:23
    έρευνα κώδικα ή παλι
  • 1:23 - 1:26
    ποσοστό, γνωρίζετε, ίσως 1.5 δεν είναι παράλογο
  • 1:26 - 1:30
    έτσι μία δυόμισι φορές το ποσό των Κώδικας δοκιμής
  • 1:30 - 1:32
    όπως έχετε κωδικό εφαρμογής
  • 1:32 - 1:34
    Και σε πολλά συστήματα παραγωγής
  • 1:34 - 1:35
    όπου είναι πολύ συμπαθητικοί πληροφορίες για τη δοκιμή
  • 1:35 - 1:36
    είναι πολύ υψηλότερα από αυτό
  • 1:36 - 1:38
    Έτσι ίσως καλύτερα να θέσω μια ερώτηση:
  • 1:38 - 1:39
    Αντί να λέει "πόσο δοκιμές είναι αρκετά;"
  • 1:39 - 1:42
    είναι να ζητήσουμε από το "πόσο καλές είναι οι δοκιμές που κάνω τώρα;
  • 1:42 - 1:44
    Πώς διεξοδική είναι;"
  • 1:44 - 1:45
    Αργότερα σε αυτό το εξάμηνο
  • 1:45 - 1:46
    Καθηγητής Sen θα μιλήσουμε για
  • 1:46 - 1:48
    λίγο σχετικά με τυπικές μεθόδους
  • 1:48 - 1:50
    και ταξινόμηση του τι είναι στα σύνορα της δοκιμές και τον εντοπισμό σφαλμάτων
  • 1:50 - 1:52
    Αλλά δύο πράγματα που μπορούμε να μιλήσουμε για
  • 1:52 - 1:54
    με βάση αυτό που ήδη γνωρίζετε
  • 1:54 - 1:57
    είναι ορισμένες βασικές έννοιες σχετικά με τη δοκιμή κάλυψης
  • 1:57 - 1:59
    Και αν και θα ήθελα να πω
  • 1:59 - 2:01
    γνωρίζετε, έχετε λέμε όλα μαζί
  • 2:01 - 2:03
    Τυπικές μέθοδοι, πραγματικά δεν λειτουργούν σε μεγάλα συστήματα
  • 2:03 - 2:05
    Πιστεύω ότι η δήλωση αυτή, κατά τη γνώμη μου προσωπική
  • 2:05 - 2:07
    αληθεύει όντως πολύ λιγότερο από ό, τι ήταν
  • 2:07 - 2:09
    Πιστεύω ότι υπάρχουν ορισμένες συγκεκριμένες θέσεις
  • 2:09 - 2:10
    ιδιαίτερα σε δοκιμές και τον εντοπισμό σφαλμάτων
  • 2:10 - 2:12
    όπου τυπικές μέθοδοι να προχωρήσει γρήγορα
  • 2:12 - 2:15
    και Koushik Sen, είναι ένας από τους ηγέτες που
  • 2:15 - 2:17
    Έτσι θα έχετε την ευκαιρία να ακούσουμε περισσότερα σχετικά με αυτό αργότερα
  • 2:17 - 2:21
    αλλά προς το παρόν νομίζω, είδους ψωμί και βουτύρου
  • 2:21 - 2:22
    Ας είναι λόγος για κάλυψη μέτρησης
  • 2:22 - 2:24
    επειδή αυτό είναι όπου το καουτσούκ πληροί της οδού
  • 2:24 - 2:26
    όσον αφορά τον τρόπο σας θα αξιολογηθούν
  • 2:26 - 2:28
    Εάν το κάνετε αυτό για πραγματικά χρήματα
  • 2:28 - 2:29
    Τι είναι λοιπόν κάποια βασικά στοιχεία;
  • 2:29 - 2:30
    Εδώ είναι μια πραγματικά απλή κλάση που μπορείτε να χρησιμοποιήσετε
  • 2:30 - 2:32
    να μιλάμε για διαφορετικούς τρόπους για τη μέτρηση
  • 2:32 - 2:34
    Πώς μας δοκιμής καλύπτει αυτόν τον κωδικό
  • 2:34 - 2:36
    Και υπάρχουν μερικά διαφορετικά επίπεδα
  • 2:36 - 2:37
    με διαφορετικές ορολογίες
  • 2:37 - 2:40
    Δεν είναι πραγματικά καθολική σε όλα τα σπίτια του λογισμικού
  • 2:40 - 2:42
    Αλλά ένα κοινό σύνολο ορολογία
  • 2:42 - 2:43
    ότι εκθέτει το βιβλίο
  • 2:43 - 2:44
    είναι θα μπορούσε να μιλάμε για S0
  • 2:44 - 2:47
    όπου μόλις θα σημαίνουν σας έχετε ονομάζεται μία φορά κάθε μέθοδος
  • 2:47 - 2:50
    Έτσι ώστε να γνωρίζετε, εάν καλέσετε foo και κλήση ράβδου, είστε έτοιμοι
  • 2:50 - 2:52
    Αυτό είναι κάλυψη S0: δεν τρομερά εις βάθος
  • 2:52 - 2:54
    Είναι λίγο πιο αυστηρά, S1,
  • 2:54 - 2:56
    μπορούμε να πούμε, μας κλήση της κάθε μεθόδου
  • 2:56 - 2:57
    από κάθε τόπο που θα μπορούσε να ονομαστεί
  • 2:57 - 2:58
    Συνεπώς τι σημαίνει αυτό;
  • 2:58 - 3:00
    Αυτό σημαίνει, για παράδειγμα
  • 3:00 - 3:01
    δεν είναι αρκετό για την κλήση ράβδου
  • 3:01 - 3:02
    Έχετε για να βεβαιωθείτε ότι έχετε να το ονομάσουμε
  • 3:02 - 3:05
    τουλάχιστον μία φορά από εδώ
  • 3:05 - 3:07
    και αυτό απαιτεί μία φορά
  • 3:07 - 3:10
    από οποιαδήποτε εξωτερικά καθήκοντα που μπορεί να θέσει το
  • 3:10 - 3:12
    C0, που είναι ό, τι τα μέτρα που SimpleCov
  • 3:12 - 3:15
    (όσοι από εσάς έχετε πάρει SimpleCov και εκτέλεση)
  • 3:15 - 3:18
    ουσιαστικά, λέει που έχετε εκτελείται κάθε δήλωση
  • 3:18 - 3:20
    έχετε θίξατε κάθε δήλωση στον κώδικά σας μία φορά
  • 3:20 - 3:22
    Αλλά την επιφύλαξη εκεί είναι ότι
  • 3:22 - 3:25
    conditionals μετράνε πραγματικά μόνο από μία πρόταση
  • 3:25 - 3:28
    Οπότε, αν εσείς, ανεξάρτητα από το ποια υποκατάστημα αυτό "Εάν" που τραβήξατε
  • 3:28 - 3:31
    όσο διάστημα θίξατε ένα από το άλλο σκέλος
  • 3:31 - 3:33
    που έχετε εκτελείται η "Εάν «δήλωση
  • 3:33 - 3:35
    Συνεπώς, ακόμη και C0 είναι ακόμη, γνωρίζετε, είδος επιφανειακή κάλυψης
  • 3:35 - 3:37
    Αλλά, όπως θα δούμε
  • 3:37 - 3:39
    ο τρόπος που θα θέλετε να διαβάσετε πληροφορίες είναι:
  • 3:39 - 3:41
    Εάν λαμβάνετε * κακό * κάλυψη σε επίπεδο C0
  • 3:41 - 3:44
    στη συνέχεια έχετε πραγματικά πολύ άσχημα κάλυψης
  • 3:44 - 3:46
    Επομένως, εάν δεν είστε είδος των αποφάσεων
  • 3:46 - 3:47
    Αυτό το απλό επίπεδο επιφανειακή κάλυψης
  • 3:47 - 3:50
    στη συνέχεια δοκιμής σας είναι πιθανώς ελλειπείς
  • 3:50 - 3:51
    C1 είναι το επόμενο βήμα επάνω από αυτό
  • 3:51 - 3:53
    Θα μπορούσαμε να πούμε:
  • 3:53 - 3:55
    Λοιπόν, πρέπει να λάβουμε κάθε υποκατάστημα προς τις δύο κατευθύνσεις
  • 3:55 - 3:56
    Έτσι, όταν κάνουμε αυτή τη δήλωση "if"
  • 3:56 - 3:58
    θα πρέπει να βεβαιωθείτε ότι
  • 3:58 - 3:59
    θα κάνουμε το "Εάν x" μέρος μία φορά
  • 3:59 - 4:05
    και το "αν δεν x" τμήμα τουλάχιστον μία φορά σε πληρούν C1
  • 4:05 - 4:08
    Μπορείτε να προσθέσετε που με απόφαση κάλυψη
  • 4:08 - 4:09
    λέει: λοιπόν, αν τώρα να...
  • 4:09 - 4:12
    Εάν έχουμε δηλώσεων "if" όπου η Συνθήκη
  • 4:12 - 4:13
    αποτελείται από πολλούς όρους
  • 4:13 - 4:15
    θα πρέπει να βεβαιωθείτε ότι κάθε δευτερεύουσα έκφραση
  • 4:15 - 4:17
    έχει αξιολογηθεί τις δύο κατευθύνσεις
  • 4:17 - 4:19
    Με άλλα λόγια, αυτό σημαίνει ότι
  • 4:19 - 4:22
    Αν τώρα την αποτυχία αυτή δήλωση "if"
  • 4:22 - 4:24
    θα πρέπει να βεβαιωθείτε ότι αυτό αποτύχει, τουλάχιστον μία φορά
  • 4:24 - 4:26
    επειδή y ήταν false σε τουλάχιστον μια φορά επειδή z ήταν ψευδείς
  • 4:26 - 4:28
    Με άλλα λόγια, κάθε δευτερεύουσα έκφραση που θα μπορούσε να
  • 4:28 - 4:31
    ανεξάρτητα, αλλάζουν το αποτέλεσμα της κατάστασης
  • 4:31 - 4:34
    πρέπει να ασκείται κατά τις δύο κατευθύνσεις
  • 4:34 - 4:36
    Και, στη συνέχεια,
  • 4:36 - 4:38
    είδος, το ένα, γνωρίζετε, πολλοί άνθρωποι προσβλέπουν σε
  • 4:38 - 4:41
    αλλά υπάρχει διαφωνία σχετικά με τον τρόπο πολύ πιο αξιόλογες είναι
  • 4:41 - 4:42
    είναι μπορείτε να κάθε διαδρομή μέσω του κώδικα
  • 4:42 - 4:45
    Προφανώς, αυτό είναι είδος δύσκολο επειδή
  • 4:45 - 4:48
    τείνει να είναι εκθετική του αριθμού των συνθηκών
  • 4:48 - 4:53
    Και γενικά είναι δύσκολο
  • 4:53 - 4:55
    να αξιολογήσει εάν έχετε λάβει κάθε διαδρομή μέσω του κώδικα
  • 4:55 - 4:57
    Υπάρχουν τυπικές τεχνικές που μπορείτε να χρησιμοποιήσετε
  • 4:57 - 4:58
    να σας πω όπου βρίσκονται οι οπές
  • 4:58 - 5:01
    όμως είναι ότι, η γραμμή κάτω
  • 5:01 - 5:03
    σε πιο εμπορικού λογισμικού σπίτια
  • 5:03 - 5:04
    θα έλεγα, δεν υπάρχει πλήρης συναίνεση
  • 5:04 - 5:06
    σχετικά με τον τρόπο πολύ πιο πολύτιμο C2 είναι
  • 5:06 - 5:08
    σε σύγκριση με C0 ή C1
  • 5:08 - 5:10
    Έτσι, πιστεύω ότι, για την τάξη μας
  • 5:10 - 5:11
    σας να εκτεθεί στην ιδέα
  • 5:11 - 5:13
    για το πώς μπορείτε να χρησιμοποιήσετε πληροφορίες κάλυψης
  • 5:13 - 5:16
    SimpleCov εκμεταλλεύεται ορισμένες ενσωματωμένες δυνατότητες Ruby
  • 5:16 - 5:18
    για να σας δώσω C0 κάλυψης
  • 5:18 - 5:19
    [] Δεν πολύ ωραία εκθέσεις
  • 5:19 - 5:21
    Μπορούμε να το δούμε αυτό είδος
  • 5:21 - 5:22
    στο επίπεδο των μεμονωμένων γραμμών στο αρχείο σας
  • 5:22 - 5:24
    Μπορείτε να δείτε τι είναι σας κάλυψης
  • 5:24 - 5:27
    και πιστεύω ότι αυτό είναι είδος, γνωρίζετε
  • 5:27 - 5:31
    μια καλή αρχή για πού είμαστε
  • 5:31 - 5:33
    Έτσι, έχοντας δείτε ένα είδος διαφορετικές γεύσεις των δοκιμών
  • 5:33 - 5:37
    Ενίσχυση των πίσω και Κοιτώντας πίσω από την μεγάλη εικόνα
  • 5:37 - 5:38
    Τι είναι το διαφορετικό είδος των δοκιμών
  • 5:38 - 5:40
    που έχουμε δει συγκεκριμένα;
  • 5:40 - 5:42
    και τι είναι μειονεκτημάτων
  • 5:42 - 5:43
    μεταξύ χρησιμοποιώντας αυτά τα διαφορετικά είδη δοκιμές;
  • 5:43 - 5:47
    Έτσι έχουμε δει στο επίπεδο των επιμέρους κλάδους ή μεθόδους
  • 5:47 - 5:50
    χρησιμοποιούμε RSpec, με την εκτεταμένη χρήση χλευάζει και stubbing
  • 5:50 - 5:53
    Έτσι, για παράδειγμα, όταν κάνουμε μέθοδοι δοκιμών του μοντέλου
  • 5:53 - 5:55
    Αυτό θα είναι ένα παράδειγμα της μονάδας δοκιμές
  • 5:55 - 5:59
    Κάναμε επίσης κάτι που είναι αρκετά παρόμοια με
  • 5:59 - 6:00
    λειτουργική ή λειτουργική μονάδα δοκιμής
  • 6:00 - 6:02
    Όταν υπάρχουν περισσότερες από μία λειτουργική μονάδα συμμετέχουν
  • 6:02 - 6:04
    Έτσι, για παράδειγμα, όταν κάναμε προδιαγραφές του ελεγκτή
  • 6:04 - 6:07
    το είδαμε — μας προσομοιώσετε μια ενέργεια POST
  • 6:07 - 6:09
    αλλά να θυμάστε ότι η ενέργεια POST
  • 6:09 - 6:10
    πρέπει να περάσει το υποσύστημα δρομολόγησης
  • 6:10 - 6:12
    πριν από αυτό παίρνει στον ελεγκτή
  • 6:12 - 6:14
    Μόλις γίνει ο ελεγκτής θα προσπαθήσει για την απόδοση μιας προβολής
  • 6:14 - 6:16
    Έτσι στην πραγματικότητα υπάρχει άλλα τεμάχια
  • 6:16 - 6:17
    που συνεργάζονται με τον ελεγκτή
  • 6:17 - 6:19
    ότι πρέπει να εργάζονται για προδιαγραφές του ελεγκτή να περάσει
  • 6:19 - 6:21
    Έτσι, που είναι κάπου inbetween:
  • 6:21 - 6:23
    Όταν κάνουμε περισσότερο από μία μόνο μέθοδος
  • 6:23 - 6:25
    αγγίζει περισσότερο από μία και μοναδική κλάση
  • 6:25 - 6:27
    αλλά εμείς, ακόμη, συγκέντρωση προσοχή [μας]
  • 6:27 - 6:28
    σε ένα σχετικά στενό slice του συστήματος σε μια εποχή
  • 6:28 - 6:31
    και εξακολουθεί να χρησιμοποιούμε την χλευάζει και stubbing εκτεταμένα
  • 6:31 - 6:35
    για να απομονώσετε είδους η συμπεριφορά που θέλουμε για τη δοκιμή
  • 6:35 - 6:36
    Και στη συνέχεια στο επίπεδο της σενάρια Αγγούρι
  • 6:36 - 6:38
    αυτά είναι περισσότερο σαν ολοκλήρωσης ή των δοκιμών του συστήματος
  • 6:38 - 6:41
    Αυτά ασκούν πλήρεις διαδρομές σε όλη την εφαρμογή
  • 6:41 - 6:43
    Αγγίζουν πιθανότατα πολύ διαφορετικές ενότητες
  • 6:43 - 6:46
    Τους κάνετε ελάχιστη χρήση των mocks και των στελεχών
  • 6:46 - 6:48
    Επειδή μέρος του στόχου της μια ολοκλήρωση δοκιμής
  • 6:48 - 6:50
    είναι ακριβώς για να ελέγξετε την αλληλεπίδραση μεταξύ τεμαχίων
  • 6:50 - 6:53
    Έτσι, δεν θέλετε να το απόκομμα ή να ελέγξετε αυτές τις αλληλεπιδράσεις
  • 6:53 - 6:54
    Θέλετε να αφήσετε το σύστημα να κάνει πραγματικά
  • 6:54 - 6:56
    Τι θα κάνει πραγματικά
  • 6:56 - 6:58
    Εάν αυτό ήταν ένα σενάριο που συμβαίνουν στην παραγωγή
  • 6:58 - 7:00
    Πώς θα συγκρίνουμε αυτά τα διαφορετικά είδη δοκιμές;
  • 7:00 - 7:02
    Υπάρχει λίγα διαφορετικούς άξονες που μπορούμε να εξετάσουμε
  • 7:02 - 7:05
    Ένας από αυτούς είναι χρόνο και αν χρειαστεί να εκτελέσετε
  • 7:05 - 7:06
    Τώρα, τόσο το RSpec όσο και το Αγγούρι
  • 7:06 - 7:09
    έχουν, είδος, χρόνους υψηλό εκκίνησης και πράγματα όπως αυτή
  • 7:09 - 7:10
    Αλλά, όπως θα δείτε
  • 7:10 - 7:11
    καθώς αρχίζετε προσθήκη όλο και περισσότερες δοκιμές RSpec
  • 7:11 - 7:14
    και τη χρήση autotest ώστε να εκτελούνται στο παρασκήνιο
  • 7:14 - 7:17
    σε μεγάλο βαθμό, μια φορά RSpec είδος ξεκινήσει το εφαλτήριο
  • 7:17 - 7:19
    εκτελείται πολύ γρήγορα προδιαγραφές
  • 7:19 - 7:21
    ότι η εκτέλεση Αγγούρι δυνατότητες μόλις καθυστερεί πολύ
  • 7:21 - 7:24
    όπως ουσιαστικά πυρκαγιές σας ολόκληρο εφαρμογής
  • 7:24 - 7:26
    Και αργότερα σε αυτό το εξάμηνο
  • 7:26 - 7:28
    θα δούμε ένας τρόπος για να Αγγούρι ακόμα χαμηλότερες —
  • 7:28 - 7:30
    που είναι να πετύχει την πυρκαϊά μέχρι ένα ολόκληρο πρόγραμμα περιήγησης
  • 7:30 - 7:33
    βασικά ενεργεί σαν μια μαριονέτα, απομακρυσμένο έλεγχο Firefox
  • 7:33 - 7:35
    Έτσι μπορείτε να ελέγξετε κώδικα Javascript
  • 7:35 - 7:37
    Θα κάνουμε το ότι όταν εμείς πραγματικά —
  • 7:37 - 7:40
    Πιστεύω ότι θα είμαστε σε θέση να εργαστείτε με τους φίλους μας σε SourceLabs
  • 7:40 - 7:42
    Έτσι μπορείτε να το κάνετε στο σύννεφο — που θα είναι συναρπαστικές
  • 7:42 - 7:45
    Έτσι, "εκτέλεση fast" έναντι "αργή εκτέλεση"
  • 7:45 - 7:46
    Ανάλυση:
  • 7:46 - 7:48
    Εάν το σφάλμα συμβαίνει σε σας μονάδα δοκιμές
  • 7:48 - 7:49
    συνήθως είναι πολύ εύκολη
  • 7:49 - 7:52
    για να υπολογίσει και να παρακολουθήσετε αυτό το αρχείο προέλευσης αυτού του σφάλματος είναι
  • 7:52 - 7:53
    επειδή οι δοκιμές είναι τόσο απομονωμένος
  • 7:53 - 7:56
    Σας έχετε stubbed που ό, τι δεν έχει σημασία
  • 7:56 - 7:58
    και σας εστιάζοντας μόνο τη συμπεριφορά του ενδιαφέροντος
  • 7:58 - 7:59
    Έτσι, εάν έχετε κάνει καλή δουλειά που κάνουν
  • 7:59 - 8:01
    όταν κάτι πάει λάθος σε μία από τις δοκιμές
  • 8:01 - 8:03
    δεν υπάρχει σε πολλά μέρη
  • 8:03 - 8:04
    κάτι που μπορούσε να πάει στραβά
  • 8:04 - 8:07
    Αντίθετα, εάν εκτελείτε ένα σενάριο Αγγούρι
  • 8:07 - 8:08
    Ιδού, γνωρίζετε, 10 βήματα
  • 8:08 - 8:10
    και αγγίζει κάθε βήμα
  • 8:10 - 8:11
    ένα σωρό τεμάχια το app
  • 8:11 - 8:12
    Αυτό θα μπορούσε να πάρει πολύ καιρό
  • 8:12 - 8:14
    για να λάβετε πραγματικά στο κάτω μέρος ενός σφάλματος
  • 8:14 - 8:16
    Επομένως, είναι είδος του ανταλλαγή
  • 8:16 - 8:17
    μεταξύ πόσο καλά μπορεί να σας localize σφάλματα
  • 8:17 - 8:20
    Κάλυψη:
  • 8:20 - 8:23
    Είναι δυνατόν αν γράψετε μια καλή σουίτα
  • 8:23 - 8:24
    μονάδα και λειτουργικές δοκιμές
  • 8:24 - 8:26
    Μπορείτε να λάβετε πραγματικά υψηλή κάλυψη
  • 8:26 - 8:27
    Μπορείτε να εκτελέσετε την έκθεσή σας SimpleCov
  • 8:27 - 8:30
    και πράγματι, μπορείτε να αναγνωρίσετε συγκεκριμένες γραμμές στα αρχεία σας
  • 8:30 - 8:32
    που δεν έχουν γίνει ασκείται από οποιαδήποτε δοκιμή
  • 8:32 - 8:34
    και στη συνέχεια μπορείτε να πάτε δικαίωμα σε δοκιμές που καλύπτουν τους
  • 8:34 - 8:36
    Έτσι, έχει καθορίσει Τρόπος βελτίωσης σας κάλυψης
  • 8:36 - 8:37
    για παράδειγμα, σε επίπεδο C0
  • 8:37 - 8:40
    είναι κάτι πολύ πιο εύκολα να γίνει με μονάδα δοκιμές
  • 8:40 - 8:42
    ότι, με μια δοκιμή Αγγούρι —
  • 8:42 - 8:43
    ένα σενάριο Αγγούρι —
  • 8:43 - 8:45
    σας * είναι * συγκινητικό πολλά τμήματα του κώδικα
  • 8:45 - 8:47
    αλλά σας κάνουν πολύ αραιοκατοικημένες
  • 8:47 - 8:49
    Έτσι, εάν ο στόχος σας είναι να σηκωθείτε σας κάλυψης
  • 8:49 - 8:51
    Χρησιμοποιήστε τα εργαλεία στο βρίσκονται στα επίπεδα μονάδα
  • 8:51 - 8:53
    έτσι ώστε να μπορείτε να εστιάζοντας στην κατανόηση
  • 8:53 - 8:54
    ποια τμήματα ή κωδικός είναι undertested
  • 8:54 - 8:56
    και στη συνέχεια μπορείτε να γράψετε πολύ στοχοθετημένες δοκιμές
  • 8:56 - 8:58
    απλώς να εστιασθεί τους
  • 8:58 - 9:01
    Και, να ταξινομήσετε, γνωρίζετε, προκειμένου να ενοποιήσουμε αυτά τα κομμάτια
  • 9:01 - 9:03
    οι δοκιμές μονάδα
  • 9:03 - 9:05
    απομόνωσή τους και τους εξαίρετου ψηφίσματος
  • 9:05 - 9:07
    τείνουν να χρησιμοποιήσετε πολλά mocks
  • 9:07 - 9:09
    για να απομονώσετε το συμπεριφορές που σας δεν νοιάζονται για
  • 9:09 - 9:11
    Αλλά αυτό σημαίνει ότι, εξ ορισμού
  • 9:11 - 9:12
    που δεν ελέγχετε τις διασυνδέσεις
  • 9:12 - 9:14
    και είναι είδος ένα "παραλήφθηκαν Σοφία" στο λογισμικό
  • 9:14 - 9:16
    ότι πολλές από τις ενδιαφέρουσες σφάλματα
  • 9:16 - 9:18
    παρατηρούνται κατά τις διασυνδέσεις μεταξύ τεμάχια
  • 9:18 - 9:20
    και δεν ταξινομηθούν του μέσα σε μια κλάση ή μέσα σε μια μέθοδο —
  • 9:20 - 9:22
    αυτές είναι είδος την εύκολη bugs για να παρακολουθήσετε το
  • 9:22 - 9:24
    Και στο άλλο άκρο
  • 9:24 - 9:26
    όσο περισσότερο έχετε έναντι της δοκιμής ολοκλήρωσης ακραίες
  • 9:26 - 9:29
    που έπρεπε να εξαρτώνται όλο και λιγότερο mocks
  • 9:29 - 9:30
    για αυτόν ακριβώς τον λόγο
  • 9:30 - 9:32
    Σήμερα είδαμε, εάν που δοκιμάζετε κάτι σαν
  • 9:32 - 9:34
    να πω, σε ένα service-oriented αρχιτεκτονική
  • 9:34 - 9:35
    Όταν πρέπει να αλληλεπιδράσει με την απομακρυσμένη τοποθεσία
  • 9:35 - 9:37
    στο τέλος θα έχετε
  • 9:37 - 9:38
    έχοντας να κάνουμε μια δίκαιη ποσό χλευάζει και stubbing
  • 9:38 - 9:40
    έτσι ώστε να μην βασίζεστε στο Internet
  • 9:40 - 9:41
    για να σας δοκιμές να περάσει
  • 9:41 - 9:43
    αλλά, μιλώντας γενικά
  • 9:43 - 9:47
    προσπαθείτε να καταργήσετε καθώς πολλά από τα mocks που μπορείτε
  • 9:47 - 9:48
    και αφήστε το σύστημα να εκτελέσει τον τρόπο θα εκτελεστεί στην πραγματική ζωή
  • 9:48 - 9:52
    Έτσι, τα καλά νέα είναι σας * είναι * δοκιμές τις διασυνδέσεις
  • 9:52 - 9:54
    * αλλά * όταν κάτι πάει στραβά σε μία από τις διασυνδέσεις
  • 9:54 - 9:57
    επειδή το ψήφισμά σας δεν είναι τόσο καλό
  • 9:57 - 10:00
    θα χρειαστεί περισσότερος χρόνος για να καταλάβετε τι είναι
  • 10:00 - 10:05
    Έτσι, τι είδους το bit υψηλής σειράς από αυτή την ανταλλαγή
  • 10:05 - 10:07
    είναι δεν θέλετε πραγματικά να βασιζόμαστε
  • 10:07 - 10:08
    σε πολύ μεγάλο βαθμό κάθε ένα είδος της δοκιμής
  • 10:08 - 10:10
    Εξυπηρετούν διάφορους σκοπούς και, ανάλογα με την
  • 10:10 - 10:13
    προσπαθείτε να ασκήσουν σας περισσότερες διασυνδέσεις
  • 10:13 - 10:15
    ή προσπαθείτε να βελτιωθεί σας κάλυψη πρόστιμο κόκκους
  • 10:15 - 10:18
    Αυτό επηρεάζει τον τρόπο μπορείτε να αναπτύξετε σας δοκιμαστική σουίτα
  • 10:18 - 10:20
    και σας θα εξελιχθεί αυτό μαζί με το λογισμικό σας
  • 10:20 - 10:24
    Έτσι, μας έχετε χρησιμοποιήσει ένα συγκεκριμένο σύνολο ορολογία δοκιμές
  • 10:24 - 10:26
    Είναι η ορολογία που, από και μεγάλο
  • 10:26 - 10:29
    χρησιμοποιείται ευρέως στην Κοινότητα του Rails
  • 10:29 - 10:30
    αλλά υπάρχει κάποια παραλλαγή
  • 10:30 - 10:33
    [και] ορισμένοι όροι που θα ακούγεται
  • 10:33 - 10:35
    Αν πάτε να βρείτε δουλειά κάπου
  • 10:35 - 10:36
    και σας ακούμε για δοκιμή μετάλλαξης
  • 10:36 - 10:38
    που εμείς δεν το έχετε κάνει
  • 10:38 - 10:40
    Αυτή είναι μια ενδιαφέρουσα ιδέα που ήταν, νομίζω, επινοήθηκε από
  • 10:40 - 10:43
    Ammann και Offutt, οι οποίοι έχουν, ταξινόμηση των
  • 10:43 - 10:44
    το οριστικό βιβλίο για δοκιμή λογισμικού
  • 10:44 - 10:46
    Η ιδέα είναι:
  • 10:46 - 10:48
    Ας υποθέσουμε ότι θα παρουσιάζει ένα σφάλμα που σκόπιμη μου κώδικα
  • 10:48 - 10:49
    αναγκαστική ότι κάποια δοκιμή να αποτύχει;
  • 10:49 - 10:53
    Επειδή, εάν άλλαξε, γνωρίζετε, "Εάν x" να "αν όχι x"
  • 10:53 - 10:56
    και δεν έλεγχοι αποτύχουν, τότε είτε εγώ λείπουν κάποια κάλυψη
  • 10:56 - 10:59
    ή μου app είναι πολύ περίεργη και κατά κάποιον τρόπο μη προσδιοριστικών
  • 10:59 - 11:03
    Fuzz δοκιμών, που Koushik Sen μπορεί να μιλήσει περισσότερο για
  • 11:03 - 11:07
    βασικά, αυτό είναι το "10.000 πιθήκους σε γραφομηχανές
  • 11:07 - 11:09
    ρίχνουν τυχαίας εισόδου σε σας κώδικα"
  • 11:09 - 11:10
    Τι είναι το ενδιαφέρον σχετικά με αυτό είναι ότι
  • 11:10 - 11:11
    οι δοκιμές που έχετε κάνουμε
  • 11:11 - 11:13
    ουσιαστικά, είναι κατασκευασμένο για να δοκιμάσετε το app
  • 11:13 - 11:15
    ο τρόπος που σχεδιάστηκε
  • 11:15 - 11:16
    και αυτά, γνωρίζετε, fuzz δοκιμές
  • 11:16 - 11:19
    είναι πληροφορίες για τη δοκιμή της app με τρόπους αυτό * δεν * σημαίνει να χρησιμοποιηθεί
  • 11:19 - 11:22
    Έτσι, τι συμβαίνει σε περίπτωση που το πετάμε υποβολές τεράστια φόρμας
  • 11:22 - 11:25
    Τι θα συμβεί αν τοποθετήσετε χαρακτήρες ελέγχου φορμών σας;
  • 11:25 - 11:27
    Τι θα συμβεί εάν υποβάλετε ξανά και ξανά το ίδιο πράγμα;
  • 11:27 - 11:29
    Και, Koushik έχει μια στατιστική που
  • 11:29 - 11:32
    Microsoft βρίσκει έως το 20% της τους σφάλματα
  • 11:32 - 11:34
    χρησιμοποιούν κάποια παραλλαγή των δοκιμών fuzz
  • 11:34 - 11:36
    και ότι περίπου 25 %
  • 11:36 - 11:39
    τα κοινά προγράμματα της γραμμής εντολών Unix
  • 11:39 - 11:40
    μπορεί να γίνει για να διακοπεί η λειτουργία του
  • 11:40 - 11:44
    [όταν] τίθενται μέσω επιθετική fuzz δοκιμών
  • 11:44 - 11:46
    Καθορισμός χρήσης κάλυψης είναι κάτι που εμείς δεν το έχετε κάνει
  • 11:46 - 11:48
    αλλά είναι μια άλλη ενδιαφέρουσα ιδέα
  • 11:48 - 11:50
    Η ιδέα είναι ότι σε κάθε σημείο του προγράμματος μου
  • 11:50 - 11:52
    υπάρχει θέση όπου ορίζω —
  • 11:52 - 11:54
    ή αναθέσω μια τιμή σε ορισμένες μεταβλητή —
  • 11:54 - 11:56
    και στη συνέχεια, υπάρχει μια θέση κατάντη
  • 11:56 - 11:57
    όπου προφανώς πρόκειται να καταναλώνουν την τιμή —
  • 11:57 - 11:59
    κάποιος θα χρησιμοποιήσει την τιμή
  • 11:59 - 12:01
    Μου έχουν καλυφθεί κάθε ζεύγος;
  • 12:01 - 12:02
    Με άλλα λόγια, δεv έχω δοκιμές όπου κάθε ζεύγος
  • 12:02 - 12:04
    τον ορισμό μιας μεταβλητής και χρήση τους κάπου
  • 12:04 - 12:07
    εκτελείται σε κάποιο μέρος της μου σουίτες δοκιμής
  • 12:07 - 12:10
    Μερικές φορές ονομάζεται DU-κάλυψης
  • 12:10 - 12:14
    Και άλλοι όροι που θεωρώ ότι δεν ευρύτερα χρησιμοποιούνται πλέον
  • 12:14 - 12:17
    blackbox έναντι των whitebox ή blackbox, έναντι glassbox
  • 12:17 - 12:20
    Χονδρικά, μια δοκιμή blackbox είναι ένα που είναι γραμμένο από
  • 12:20 - 12:22
    την άποψη των εξωτερικών προδιαγραφών του το πράγμα
  • 12:22 - 12:24
    [Για παράδειγμα:] "Αυτό είναι ένα πίνακα hash
  • 12:24 - 12:26
    Όταν σε ένα κλειδί θα πρέπει να πίσω μια τιμή
  • 12:26 - 12:28
    Εάν η διαγραφή του κλειδιού που η τιμή δεν πρέπει να υπάρχουν"
  • 12:28 - 12:29
    Αυτό είναι μια δοκιμή blackbox, γιατί δεν λέει
  • 12:29 - 12:32
    τίποτα σχετικά με το πώς υλοποιείται πίνακα hash
  • 12:32 - 12:34
    και αυτό δεν προσπαθούν να τονίσω την εφαρμογή
  • 12:34 - 12:36
    Μπορεί να είναι μια αντίστοιχη δοκιμή whitebox:
  • 12:36 - 12:38
    «Γνωρίζω κάτι σχετικά με τη συνάρτηση κατακερματισμού
  • 12:38 - 12:39
    και πρόκειται να δημιουργήσει επίτηδες
  • 12:39 - 12:41
    τα κλειδιά κατακερματισμού σε περιπτώσεις μου δοκιμής
  • 12:41 - 12:43
    που προκαλούν πολλές συγκρούσεις κατακερματισμού
  • 12:43 - 12:45
    για να βεβαιωθείτε ότι εγώ δοκιμές τμήμα της λειτουργικότητας"
  • 12:45 - 12:49
    Τώρα, ένα C0 δοκιμή κάλυψη εργαλείο, όπως SimpleCov
  • 12:49 - 12:52
    θα αποκαλύψει ότι, εάν όλα τα είχατε είναι blackbox δοκιμές
  • 12:52 - 12:53
    Ίσως διαπιστώσετε ότι
  • 12:53 - 12:55
    κάλυψη κώδικα σύγκρουσης δεν ήταν πλήττεται και πολύ συχνά
  • 12:55 - 12:56
    Και που θα μπορούσε να συμβουλή σας και να πω:
  • 12:56 - 12:58
    "Ok, αν θέλω πραγματικά να την ενισχύσει —
  • 12:58 - 13:00
    για μία, αν θέλω να ενισχύσει την κάλυψη για τις δοκιμές αυτές
  • 13:00 - 13:02
    τώρα πρέπει να γράψετε μια whitebox ή glassbox δοκιμή
  • 13:02 - 13:04
    Πρέπει να εξετάσετε το εσωτερικό, δείτε τι σημαίνει την εφαρμογή
  • 13:04 - 13:05
    συγκεκριμένες λύσεις
  • 13:05 - 13:10
    να προσπαθήσει να σπάσει την εφαρμογή με κακό τρόπους"
  • 13:10 - 13:13
    Έτσι, νομίζω, δοκιμές είναι ένα είδος τρόπο ζωής, σωστά;
  • 13:13 - 13:16
    Έχουμε πάρει από τη φάση της
  • 13:16 - 13:18
    "Θα οικοδομούμε το όλο θέμα και στη συνέχεια εμείς θα τη δοκιμάσετε"
  • 13:18 - 13:19
    και έχουμε πάρει στην φάση της
  • 13:19 - 13:20
    "Μας δοκιμάζετε δρόμος"
  • 13:20 - 13:22
    Δοκιμή είναι πραγματικά περισσότερο σαν εργαλείο ανάπτυξης
  • 13:22 - 13:24
    και όπως τόσα πολλά εργαλεία ανάπτυξης
  • 13:24 - 13:25
    εξαρτάται από την αποτελεσματικότητα της
  • 13:25 - 13:27
    σχετικά με το αν χρησιμοποιείτε μια καλαίσθητη τρόπο
  • 13:27 - 13:31
    Έτσι, μπορούμε να πούμε: "καλά, ας δούμε — μου κλώτσησε λάστιχα
  • 13:31 - 13:33
    Γνωρίζετε, εγώ που τροφοδοτούνται από το πρόγραμμα περιήγησης, προσπάθησα δύο πράγματα
  • 13:33 - 13:35
    (ζητωκραυγές χέρι) Μοιάζει λειτουργεί! Αναπτύξετε!"
  • 13:35 - 13:38
    Αυτό είναι, προφανώς, μια περιφρόνηση κάτι περισσότερο από ό, τι θα θέλετε να
  • 13:38 - 13:41
    Και, από τον τρόπο, ένα από τα πράγματα που ανακαλύψαμε
  • 13:41 - 13:43
    με αυτό online μαθήματος που μόλις εκκίνηση
  • 13:43 - 13:45
    Όταν 60.000 άτομα είναι εγγεγραμμένοι κατά τη διάρκεια
  • 13:45 - 13:48
    και 0,1% από αυτά τα άτομα έχουν πρόβλημα
  • 13:48 - 13:50
    θα λάβετε 60 μηνύματα ηλεκτρονικού ταχυδρομείου
  • 13:50 - 13:53
    Το πόρισμα είναι: όταν η τοποθεσία σας χρησιμοποιείται από πολλά άτομα
  • 13:53 - 13:55
    ορισμένες ηλίθια σφάλμα που δεν μπορέσατε να βρείτε
  • 13:55 - 13:57
    αλλά ότι θα μπορούσαν να έχουν βρεθεί με δοκιμή
  • 13:57 - 13:59
    πολύ γρήγορα θα μπορούσε να δημιουργήσει * μια παρτίδα * του πόνου
  • 13:59 - 14:02
    Από την άλλη πλευρά, δεν θέλετε να είναι δογματική και να πω
  • 14:02 - 14:04
    "ΕΕΕ, μέχρις ότου έχουμε κάλυψης 100% και κάθε δοκιμής είναι πράσινο
  • 14:04 - 14:06
    Εμείς οπωσδήποτε δεν θα περιλαμβάνεται"
  • 14:06 - 14:07
    Δεν είναι υγιές είτε
  • 14:07 - 14:08
    Και η ποιότητα δοκιμής
  • 14:08 - 14:10
    δεν είναι απαραίτητα ο συσχετισμός με τη δήλωση
  • 14:10 - 14:11
    εκτός εάν έχετε να πείτε κάτι
  • 14:11 - 14:12
    σχετικά με την ποιότητα των σας δοκιμών
  • 14:12 - 14:14
    μόνο και μόνο επειδή που έχετε εκτελείται κάθε γραμμή
  • 14:14 - 14:17
    δεν σημαίνει ότι έχετε ελέγξει τις ενδιαφέρουσες υποθέσεις
  • 14:17 - 14:18
    Έτσι, κάπου εν τω μεταξύ, θα μου πείτε
  • 14:18 - 14:20
    "Καλά, θα χρησιμοποιήσουμε κάλυψη εργαλεία για τον εντοπισμό
  • 14:20 - 14:23
    undertested ή κακώς έχουν δοκιμαστεί σε τμήματα του κώδικα
  • 14:23 - 14:24
    και θα τους χρησιμοποιήσουμε ως κατευθυντήρια γραμμή
  • 14:24 - 14:27
    για την ταξινόμηση της βοήθειας να βελτιωθεί μας επίπεδο συνολικής εμπιστοσύνης"
  • 14:27 - 14:29
    Να θυμάστε, όμως Αζίλ είναι σχετικά με την αποδοχή των αλλαγών
  • 14:29 - 14:30
    και διαχείρισή τους
  • 14:30 - 14:32
    Μέρος της αλλαγής είναι τα πράγματα θα αλλάξει αυτό θα προκαλέσει
  • 14:32 - 14:33
    σφάλματα που δεν μπορείτε να προβλέψετε
  • 14:33 - 14:34
    και η σωστή αντίδραση είναι:
  • 14:34 - 14:36
    Είναι αρκετά άνετο για τα εργαλεία δοκιμών
  • 14:36 - 14:37
    [αυτό] ότι μπορείτε να βρείτε γρήγορα τα λάθη αυτά
  • 14:37 - 14:39
    Γράψτε μια δοκιμή που αναπαράγει το σφάλμα
  • 14:39 - 14:40
    Και στη συνέχεια, να τη δοκιμή πράσινο
  • 14:40 - 14:41
    Μπορείτε στη συνέχεια θα το διορθώσετε πραγματικά
  • 14:41 - 14:43
    Αυτό σημαίνει ότι, ο τρόπος που πραγματικά μπορείτε να διορθώσετε ένα σφάλμα είναι
  • 14:43 - 14:45
    Εάν δημιουργήσατε μια δοκιμή που σωστά απέτυχε
  • 14:45 - 14:46
    για να αναπαραγάγετε το σφάλμα
  • 14:46 - 14:48
    και στη συνέχεια επανήλθε και καθορισθεί κώδικα
  • 14:48 - 14:49
    για να κάνετε τις δοκιμές αυτές περνούν
  • 14:49 - 14:51
    Ομοίως, δεν θέλετε να πω
  • 14:51 - 14:53
    "Καλά, μονάδα δοκιμές σας δώσει καλύτερη κάλυψη
  • 14:53 - 14:54
    Τους κάνετε πιο εμπεριστατωμένη και λεπτομερή
  • 14:54 - 14:56
    Ας εστιασθεί όλων μας ενέργειας που"
  • 14:56 - 14:57
    σε αντίθεση με
  • 14:57 - 14:58
    "Ω, εστιασθεί δοκιμές ολοκλήρωσης
  • 14:58 - 15:00
    επειδή είναι πιο ρεαλιστική, σωστά;
  • 15:00 - 15:01
    Αντικατοπτρίζουν αυτό τον πελάτη που είπε θέλουν
  • 15:01 - 15:03
    Έτσι, εάν οι δοκιμές ολοκλήρωσης
  • 15:03 - 15:05
    εξ ορισμού μας σύσκεψη ανάγκη πελάτη".
  • 15:05 - 15:07
    Και πάλι, δύο άκρα είναι είδος ανθυγιεινά
  • 15:07 - 15:09
    επειδή κάθε μία από αυτές μπορεί να εντοπίσετε προβλήματα
  • 15:09 - 15:11
    που θα η απόκλιση από την άλλη
  • 15:11 - 15:12
    Έτσι, έχοντας έναν καλό συνδυασμό αυτών
  • 15:12 - 15:15
    είναι το είδος του σύνολο είναι όλα σχετικά με
  • 15:15 - 15:18
    Είναι το τελευταίο πράγμα που θέλω να αφήσω με, νομίζω ότι
  • 15:18 - 15:20
    όσον αφορά τις δοκιμές, είναι "TDD έναντι
  • 15:20 - 15:22
    Αυτό που αποκαλώ συμβατικών εντοπισμού σφαλμάτων —
  • 15:22 - 15:24
    δηλαδή, ο τρόπος που το ότι όλοι μας είδος κάνουμε
  • 15:24 - 15:25
    ακόμη και αν λέμε ότι δεν το κάνουμε"
  • 15:25 - 15:26
    και όλοι προσπαθούμε να πάρετε καλύτερα, δικαίωμα;
  • 15:26 - 15:27
    Είμαστε όλοι είδος στο περιθώριο βιβλιοδεσίας
  • 15:27 - 15:29
    Ορισμένοι από εμάς εξετάζουν τα αστέρια
  • 15:29 - 15:31
    προσπαθεί να βελτιώσει τις πρακτικές
  • 15:31 - 15:33
    Αλλά, έχοντας τώρα έζησε με αυτό για 3 ή 4 ετών ο ίδιος
  • 15:33 - 15:35
    και — θα είναι έντιμη — πριν από 3 χρόνια δεν κάνω TDD
  • 15:35 - 15:37
    Θα το κάνουμε τώρα, επειδή θεωρώ ότι είναι καλύτερο
  • 15:37 - 15:40
    και εδώ είναι μου απόσταξη, γιατί νομίζω ότι δουλεύει για μένα
  • 15:40 - 15:43
    Συγγνώμη, τα χρώματα είναι λίγο περίεργο
  • 15:43 - 15:45
    αλλά στην αριστερή στήλη του πίνακα
  • 15:45 - 15:46
    [] λέει "Συμβατικό εντοπισμού σφαλμάτων"
  • 15:46 - 15:47
    και η δεξιά πλευρά λέει "TDD"
  • 15:47 - 15:49
    Τι είναι λοιπόν ο τρόπος που χρησιμοποίησα για να γράψετε κώδικα;
  • 15:49 - 15:51
    Ίσως ορισμένοι από εσάς εξακολουθεί να κάνετε αυτό
  • 15:51 - 15:53
    Γράφω ένα σωρό γραμμές
  • 15:53 - 15:54
    ίσως μερικές δεκάδες γραμμές κώδικα
  • 15:54 - 15:55
    Είμαι * βεβαιωθείτε ότι * είναι σωστή —
  • 15:55 - 15:56
    Εννοώ, μου * am * ένα καλό προγραμματιστή, σωστά;
  • 15:56 - 15:57
    Αυτό δεν είναι που σκληρά
  • 15:57 - 15:59
    Μπορώ να τον εκτελέσω – δεν λειτουργεί
  • 15:59 - 16:01
    OK, φωτιά μέχρι το πρόγραμμα εντοπισμού σφαλμάτων – αρχίζουν να βάζουν στο του printf
  • 16:01 - 16:04
    Εάν σας χρησιμοποιεί TDD τι θα κάνω αντίθετα;
  • 16:04 - 16:08
    Καλά θα γράφω ένα * μερικές * γραμμές κώδικα, έχοντας γράψει πρώτα μια δοκιμή
  • 16:08 - 16:10
    Τόσο ως σύντομα, όπως η δοκιμή πηγαίνει από κόκκινο σε πράσινο
  • 16:10 - 16:12
    Γνωρίζω ότι απέστειλα ο κωδικός που εργάζεται —
  • 16:12 - 16:15
    ή τουλάχιστον τα μέρη της συμπεριφοράς που θα είχα κατά νουν
  • 16:15 - 16:16
    Τα τμήματα της συμπεριφοράς έργο, διότι είχα μια δοκιμή
  • 16:16 - 16:19
    OK, πίσω στο συμβατικό εντοπισμού σφαλμάτων:
  • 16:19 - 16:21
    Εκτελώ προγράμματος μου, που προσπαθεί να βρει τα σφάλματα
  • 16:21 - 16:23
    Ξεκινώ την τοποθέτηση στο printf του παντού
  • 16:23 - 16:24
    για να εκτυπώσετε τις τιμές των πραγμάτων
  • 16:24 - 16:25
    που είναι πολύ διασκεδαστικό
  • 16:25 - 16:26
    Όταν προσπαθείτε να διαβάσετε τους
  • 16:26 - 16:28
    εκτός από τις 500 γραμμές της εξόδου του αρχείου καταγραφής
  • 16:28 - 16:29
    ότι θα λάβετε σε ένα Σιδηροτροχιές app
  • 16:29 - 16:30
    προσπαθούμε να βρούμε * σας * του printf
  • 16:30 - 16:32
    γνωρίζετε, "γνωρίζω τι θα κάνω —
  • 16:32 - 16:34
    Θα σε βάλω σε 75 αστερίσκους πριν και μετά
  • 16:34 - 16:36
    Αυτό θα καταστήσει αναγνώσιμο"(γέλια)
  • 16:36 - 16:38
    Ποιος δεν — Ok, να αυξήσει τα χέρια σας, εάν δεν το κάνετε!
  • 16:38 - 16:40
    Ευχαριστώ πολύ για σας εντιμότητα. (γέλια) Ok.
  • 16:40 - 16:43
    Ή — Ή θα μπορούσε να κάνει κάτι άλλο που πρέπει, θα μπορούσα να πω:
  • 16:43 - 16:45
    Αντί να εκτυπώσετε την τιμή μιας μεταβλητής
  • 16:45 - 16:47
    γιατί δεν γράφω μια δοκιμή που επιθεωρεί το
  • 16:47 - 16:48
    στο η προσδοκία που πρέπει να
  • 16:48 - 16:50
    και θα γνωρίζω αμέσως στο φωτεινό κόκκινο γράμματα
  • 16:50 - 16:53
    Εάν δεν πληρούται αυτή την προσμονή
  • 16:53 - 16:56
    Εντάξει, εγώ πίσω για το συμβατικό debugging πλευρά:
  • 16:56 - 16:58
    Εγώ ξεσπάσει το big guns: μου απομακρύνετε το Ruby πρόγραμμα εντοπισμού σφαλμάτων
  • 16:58 - 17:02
    Ορίζω ένα σημείο διακοπής εντοπισμού σφαλμάτων, και να ξεκινήσω τώρα * tweaking * και να πω
  • 17:02 - 17:04
    "Ω, ας δούμε, θα πρέπει να ξεπεράσουμε αυτή τη δήλωση «αν»
  • 17:04 - 17:06
    Συνεπώς, πρέπει να οριστεί ότι πράγμα
  • 17:06 - 17:07
    Ω, πρέπει να καλέσετε τη μέθοδο αυτή και επομένως θα πρέπει να..."
  • 17:07 - 17:08
    Όχι!
  • 17:08 - 17:10
    Εγώ * θα μπορούσε να * αντίθετα — αν πρόκειται να το κάνουμε αυτό έτσι κι αλλιώς —
  • 17:10 - 17:13
    Ας κάνουμε αυτό απλώς, σε ένα αρχείο, η οποία έχει συσταθεί ορισμένες mocks και τα αποκόμματα
  • 17:13 - 17:16
    για να ελέγξετε τη διαδρομή κώδικα, να ακολουθήσουν τον δρόμο που θέλω
  • 17:16 - 17:19
    Και τώρα, "Ok, σίγουρα θα έχετε καθοριστεί!
  • 17:19 - 17:22
    Θα πάρω από το πρόγραμμα εντοπισμού σφαλμάτων, το εκτελέσετε ξανά όλα! "
  • 17:22 - 17:24
    Και, φυσικά, 9 φορές από 10, δεν διορθώσετε αυτό
  • 17:24 - 17:26
    ή σας είδος εν μέρει έχει καθορισθεί αλλά εντελώς δεν μπορείτε να διορθώσετε το
  • 17:26 - 17:30
    και τώρα πρέπει να κάνετε μη αυτόματη όλα αυτά όλα άνω ξανά
  • 17:30 - 17:32
    ή το * έχω ήδη μια δέσμη των δοκιμών
  • 17:32 - 17:34
    και σας μπορούν απλώς επανεκτέλεση τους αυτόματα
  • 17:34 - 17:35
    και θα μπορούσα, εάν ορισμένα από αυτά δεν
  • 17:35 - 17:36
    "Ω, σας διόρθωσε το όλο θέμα
  • 17:36 - 17:38
    Κανένα πρόβλημα, θα μόλις μετάβαση πίσω!"
  • 17:38 - 17:39
    Έτσι, το συμπέρασμα είναι ότι
  • 17:39 - 17:41
    γνωρίζετε, σας * θα μπορούσε να * το κάνουμε στην αριστερή πλευρά
  • 17:41 - 17:45
    αλλά χρησιμοποιείτε τις ίδιες τεχνικές και στις δύο περιπτώσεις
  • 17:45 - 17:48
    Η μόνη διαφορά είναι, σε μία περίπτωση το κάνετε με μη αυτόματο τρόπο
  • 17:48 - 17:50
    που είναι βαρετό και επιρρεπής
  • 17:50 - 17:51
    Στην άλλη περίπτωση που κάνετε λίγο περισσότερη εργασία
  • 17:51 - 17:53
    αλλά μπορείτε να το κάνετε αυτόματη και επαναλαμβανόμενης
  • 17:53 - 17:55
    και έχουν, ξέρετε, ορισμένες υψηλή εμπιστοσύνη
  • 17:55 - 17:57
    ότι, καθώς αλλάζετε τα πράγματα στον κώδικά σας
  • 17:57 - 17:58
    δεν γίνεται ανασυσκευασία πράγματα που χρησιμοποιούνται για την επεξεργασία
  • 17:58 - 18:00
    και ουσιαστικά είναι πιο παραγωγικοί
  • 18:00 - 18:02
    Έτσι κάνετε όλα τα ίδια πράγματα
  • 18:02 - 18:04
    αλλά με, ένα είδος, το «δέλτα"επιπλέον εργασία
  • 18:04 - 18:07
    χρησιμοποιείτε σας προσπάθεια σε πολύ υψηλότερο μόχλευση
  • 18:07 - 18:10
    Γι είδος άποψή μου είναι καλό να TDD
  • 18:10 - 18:11
    Είναι πραγματικά, να μην απαιτεί νέες δεξιότητες
  • 18:11 - 18:15
    Αυτό ακριβώς απαιτεί [] να refactor τις υπάρχουσες δεξιότητές σας
  • 18:15 - 18:18
    Επίσης, προσπάθησε όταν σας — ξανά, ειλικρινείς Εξομολογήσεις, δεξιά; —
  • 18:18 - 18:19
    όταν άρχισα να κάνει αυτό ήταν σαν
  • 18:19 - 18:21
    "Ok, εγώ πρόκειται να διδάσκει μια σειρά μαθημάτων επί σιδηροτροχιών
  • 18:21 - 18:22
    Εγώ πραγματικά θα πρέπει να επικεντρωθεί στις δοκιμές
  • 18:22 - 18:24
    Έτσι πήγα πίσω με κάποιον κώδικα που έστειλα επιστολή
  • 18:24 - 18:26
    Αυτό ήταν * εργασίας * — γνωρίζετε, που ήταν αξιοπρεπή κώδικα —
  • 18:26 - 18:29
    και άρχισα προσπαθώντας να γράψει δοκιμές για
  • 18:29 - 18:31
    και ήταν * τόσο επίπονη *
  • 18:31 - 18:33
    επειδή ο κώδικας δεν ήταν γραμμένο με τρόπο που ήταν αναπτύξετε
  • 18:33 - 18:34
    Υπήρχαν κάθε είδους αλληλεπιδράσεων
  • 18:34 - 18:36
    Υπήρχαν, όπως, ένθετα conditionals
  • 18:36 - 18:38
    Και αν θέλετε να απομονώσετε μια ιδιαίτερη δήλωση
  • 18:38 - 18:41
    και να το δοκιμάσετε — δοκιμή έναυσμα — μόνο η δήλωση
  • 18:41 - 18:44
    το ποσό της πράγματα που θα πρέπει να οριστεί στον σας δοκιμής
  • 18:44 - 18:45
    να συμβεί —
  • 18:45 - 18:46
    να θυμάστε όταν μίλησε για ναυάγια διακωμωδώ αμαξοστοιχίας —
  • 18:46 - 18:48
    πρέπει να ορίσετε όλες τις εν λόγω υποδομή
  • 18:48 - 18:49
    απλώς, για να αποκτήσετε το * μία * γραμμή κώδικα
  • 18:49 - 18:51
    και να που κάνετε και να πας
  • 18:51 - 18:52
    "Gawd, δοκιμές πραγματικά δεν είναι αξίζει!
  • 18:52 - 18:54
    Έγραψα 20 γραμμές του προγράμματος εγκατάστασης
  • 18:54 - 18:56
    έτσι ώστε θα μπορούσαν να δοκιμάζω δύο γραμμές στη μου συνάρτηση!"
  • 18:56 - 18:58
    Αυτό που πραγματικά λέγοντάς σας — όπως αντιλαμβάνομαι τώρα —
  • 18:58 - 19:00
    είναι η συνάρτηση σας είναι * κακό *
  • 19:00 - 19:01
    Είναι μια κακή γραπτή συνάρτηση
  • 19:01 - 19:02
    Δεν πρόκειται για μια συνάρτηση αναπτύξετε
  • 19:02 - 19:03
    Ότι το πήρε πάρα πολλά κινητά στοιχεία
  • 19:03 - 19:06
    των οποίων εξαρτήσεις * μπορεί να * έχει διακοπεί
  • 19:06 - 19:07
    Δεν υπάρχει καμία ραφές μου συνάρτησης
  • 19:07 - 19:11
    αυτό επιτρέψτε μου να μεμονωμένα, να ελέγξετε τις διαφορετικές συμπεριφορές
  • 19:11 - 19:12
    Και μόλις ξεκινήσετε να κάνει την πρώτη ανάπτυξη δοκιμής
  • 19:12 - 19:15
    γιατί πρέπει να γράψετε σας δοκιμές σε μικρά κομμάτια
  • 19:15 - 19:17
    είδος του θέτει το ζήτημα αυτό να εξαφανιστούν
  • 19:17 -
    Έτσι ώστε να έχει μου Θεοφάνια
Title:
5.8 - 5.11 - Coverage, Unit vs. Integration Tests, Other Testing Concepts, and Perspectives (19:26)
Video Language:
English
minas added a translation

Greek subtitles

Revisions