qc

Screenshot Software:
qc
Detalii soft:
Versiune: 0.1
Incarca data: 14 Apr 15
Producător: Peter Scott
Licenţă: Gratuit
Popularitate: 23

Rating: 4.0/5 (Total Votes: 2)

QC este un instrument de testare care vă permite să scrie proprietăți care vă așteptați să dețină adevărat, și lăsați computerul genera cazuri de testare randomizate pentru a verifica dacă aceste proprietăți dețin efectiv. & Nbsp; De exemplu, dacă ați scris arhiva și dezarhiva funcții pentru unele programe de compresie a datelor, o proprietate evident test este că comprimarea și decomprimarea un șir dă înapoi șirul inițial. Iată cum poți exprima ca:
unittest import
qc import
TestCompression clasă (unittest.TestCase):
& Nbsp; @ qc.property
& Nbsp; def test_compress_decompress (auto):
& Nbsp; "" ". De testare care comprimarea și decomprimarea întoarce datele originale" ""
& Nbsp; date = qc.str () # Un șir arbitrar. Valorile sunt randomizate.
& Nbsp; self.assertEqual (date, decomprima (comprima (date)), repr (date))
Asta e un test obișnuit cu unittest cadru built-in Python (care este motivul pentru care există atât de mult boilerplate). Alternativ, ai putea face exact același lucru cu un cadru de testare diferite, cum ar fi minim detaliată nas, destul de plăcut. @ Qc.property decorator execută funcția decorat de mai multe ori, și de fiecare dată valorile returnate de funcții cum ar fi qc.string () sunt diferite. Cu alte cuvinte, QuickCheck este compatibil cu destul de mult la fiecare cadru de testare unitate acolo; nu este deosebit de solicitante.
Funcții precum qc.str (), qc.int (), și așa mai departe, de a genera valori arbitrare de un anumit tip. În exemplul de mai sus, suntem afirmând că proprietatea este valabil pentru toate siruri de caractere. Când executați teste, QuickCheck va genera siruri randomizate pentru testare.
Veți observa că i-am spus "randomizat", nu "la întâmplare". Acest lucru este intenționată. Distribuția valorilor este optimizat pentru a include valorile interesante, cum ar fi siruri de caractere goale, sau siruri de caractere cu NUL la mijloc, sau siruri de caractere care conțin text în limba engleză. În general, QuickCheck încearcă să dea un bun mix de valori dificile inteligente și dezordine. Aceasta este, în esență, ceea ce ar face, dacă ar trebui să scrie cazuri de testare într-adevăr aprofundate de mână, cu excepția faptului că nu trebuie să o fac. În practică, computerul are mai puține idei preconcepute despre ceea ce constituie date normali, asa ca va găsi de multe ori bug-uri care nu ar fi avut loc la tine pentru a scrie cazuri de testare pentru. Ea nu știe cum să evite subconstient bug-uri.
Nu sunteți limitat la funcțiile de valoare arbitrare built-in. Le puteti folosi ca blocuri pentru a genera propriul. De exemplu:
clasa Point (obiect):
& Nbsp; def automat metodei __init __ (self, x, y):
& Nbsp; self.x, self.y = float (x), float (y)
litera def ():
& Nbsp; "" "Get un punct arbitrar." ""
& Nbsp; x = qc.int (-20, 20)
& Nbsp; y = qc.int (-34, 50)
& Nbsp; a reveni la punctul (x, y)
Apoi puteți folosi acest pentru a genera valori punctuale arbitrare în proprietăți. Iată un test-stil nas:
@ Qc.property
def test_triangle_inequality ():
& Nbsp; pt = litera ()
& Nbsp; afirma abs (pt.x) + abs (pt.y)> = Math.sqrt (pt.x ** 2 + pt.y ** 2), (pt.x, pt.y)
Când executați acest, se întâmplă ceva magic: QuickCheck va încerca să genereze valori dificil atât pentru X și Y variabile în clasa Point, împreună, deci veți vedea punctele ca (0, 0), (1, 1), ( 0, 1), (385904, 0), precum și cele totul aleatoare precum (584, -35809648). Cu alte cuvinte, mai degrabă decât formularea doar x și y valori dintr-un flux de numere aleatoare cu unele valori complicat în ea, QuickCheck va încerca de fapt să genereze combinații dificile de coordonate x și y.
Funcții pentru obținerea de date arbitrare
- Int (scăzut, ridicat) dă int, între limitele optionale joase și înalte.
- Lung (scăzut, ridicat) dă lungi, între limitele optionale joase și înalte.
- Float (scăzut, ridicat) dă flotoare, între limitele optionale joase și înalte. Nu infinituri sau NaN valori.
& Nbsp; str (lungime = Nici una, maxlen = Fără specialitate) dă siruri de caractere, de tip str. Codarea este UTF-8. Daca se da lungime, corzile va fi exact atât de mult. În cazul în care maxlen este dat, lungimea șir de caractere vor fi cel mult maxlen.
- Unicode (lungime = Nici una, maxlen = Fără specialitate) dă siruri de caractere Unicode, de tip unicode. Daca se da lungime, corzile va fi exact atât de mult. În cazul în care maxlen este dat, lungimea șir de caractere vor fi cel mult maxlen.
- Numele () dă nume, în Unicode. Acestea variază de la prozaic, cum ar fi "John Smith", la exotice - numele care conțin spații non-rupere, sau adrese de e-mail, sau caractere Unicode din afara multilingv planul de bază. Acest lucru este, în cazul în care ceva, mai puțin perversă decât numele pe care le veți vedea într-un set suficient de mare de date pe Internet.
- NameUtf8 () este identic cu numele () codifica ("utf8 ')..
- FromList (articole) returnează obiecte aleatoare de la o listă. Acest lucru este mai ales util pentru crearea de propriile funcții generator de date arbitrare.
- Randstr (lungime = Nici una, maxlen = sys.maxint) oferă siruri de bytes aleatoare. Daca se da lungime, corzile va fi exact atât de mult. În cazul în care maxlen este dat, lungimea șir va fi la cel mai maxlen bytes.
Corzile produse de str și Unicode sunt randomizate, dar unele efort a fost pus în a le face suficient de pervers ca să descoperi bug-uri într-o mulțime de cod prelucrare șir. Lista nume se bazeaza vag pe amintiri oribile de a vedea cod prelucrare nume accident pe date reale, peste si peste si peste din nou, așa cum a devenit tot mai clar că lumea este nebun, iar noi suntem cu adevărat condamnați. (Acest sentiment trece odată ce te acoperire test suficient și în cele din urmă lucrurile se opresc crashing. Există speranță!)
Numele și exemplu șir Datele din qc.arbitrary poate fi interesant ca o sursă de mai multe date de caz încercare deteministic. Simțiți-vă liber pentru a împrumuta orice din ea. Agenții interni sunt magice, dar de componentele interne magice, cele mai interesante sunt în qc.arbitrary și QC

Cerințe :.

  • Python

Software similare

disable-docstring
disable-docstring

11 May 15

MPI-IO Test
MPI-IO Test

2 Jun 15

mongonose
mongonose

11 May 15

nosango
nosango

11 May 15

Comentarii la qc

Comentariile nu a fost găsit
Adauga comentarii
Porniţi pe imagini!