DedSec Project

Δοκιμές με ιδιότητες — DedSec Project

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

Έλεγχοι ιδιοτήτων — αναπαραγώγιμα δείγματα και αμετάβλητοι κανόνες

Τι ελέγχουμε

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

Εκτελέσιμο πρόγραμμα Python 3

Αποθήκευσε ως property_lab.py και εκτέλεσε python3 property_lab.py. Δημιουργούνται 100 λίστες έως 39 ακεραίων από 0 έως 9. Δεν υπάρχει πραγματικό δίκτυο ή ατέρμονη τυχαία διαδικασία.

import random

def unique(items):
    seen, result = set(), []
    for item in items:
        if item not in seen:
            seen.add(item)
            result.append(item)
    return result

rng = random.Random(17)
for _ in range(100):
    xs = [rng.randrange(10) for _ in range(rng.randrange(40))]
    result = unique(xs)
    assert result == list(dict.fromkeys(xs))
    assert unique(result) == result
    assert set(result) == set(xs)
    positions = [xs.index(value) for value in result]
    assert positions == sorted(positions)
assert unique([]) == []
print("PASS: seeded properties and order preservation")

Ποιες ιδιότητες έχουν αξία

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

Ελεγχόμενες ασκήσεις

  1. Αντέστρεψε σκόπιμα το αποτέλεσμα και δες ποιος κανόνας εντοπίζει το σφάλμα. Ο έλεγχος μόνο των μελών δεν αρκεί.
  2. Έλεγξε κενή λίστα, όλα ίδια στοιχεία και όλα διαφορετικά. Ξεχώρισε καθορισμένες από ψευδοτυχαίες δοκιμές.
  3. Δώσε λίστες ως στοιχεία εισόδου. Όρισε αν η συνάρτηση πρέπει να απορρίπτει μη κατακερματίσιμες τιμές.
  4. Πρόσθεσε περισσότερους σπόρους και κατέγραψε τον πρώτο που αποκαλύπτει μεταλλαγμένη υλοποίηση. Εξήγησε τη χρησιμότητα της σμίκρυνσης αντιπαραδείγματος.

Παραδοτέα: PASS, τέσσερις ιδιότητες, σταθερός σπόρος και τουλάχιστον μία σκόπιμη αστοχία που εντοπίστηκε.