qc

Sponzorované odkazy:
Software screenshot:
qc
Podrobnosti Software:
Verze: 0.1
Datum uploadu: 14 Apr 15
Vývojka: Peter Scott
Licence: Volný
Popularita: 11

Rating: 4.0/5 (Total Votes: 1)

Sponzorované odkazy:

QC je testovací nástroj, který vám umožní psát vlastnosti, které očekáváte držet pravdivý, a nechat vygenerovat randomizované testovací případy zkontrolovat, zda tyto vlastnosti skutečně držet. & Nbsp; Například, pokud jste napsali kompresi a dekompresi funkce pro někteří komprese dat program, jasné vlastnost testu je, že kompresi a dekompresi řetězec vrací původní řetězec. Zde je návod, jak byste mohli vyjádřit, že:
import unittest
import QC
třída TestCompression (unittest.TestCase):
& Nbsp; @ qc.property
& Nbsp; def test_compress_decompress (self):
& Nbsp; "" ". Test, který kompresi a dekompresi vrátí původní data" ""
& Nbsp; data = qc.str () # libovolný řetězec. Hodnoty jsou náhodně.
& Nbsp; self.assertEqual (údaje, dekompresi (komprimovat (data)), repr (data))
To je obyčejný test s vestavěným-in unittest rámci Python (což je důvod, proč je tu tolik často používaný). Případně můžete udělat přesně to samé s jiným testování rámec, stejně jako minimálně podrobného, ​​docela příjemné nosu. @ Qc.property malíř pracuje zdobené provozní pohotovost několikrát, a pokaždé, když hodnoty vrácené funkcí, jako qc.string (), jsou různé. Jinými slovy, je v souladu s QuickCheck skoro každý rámec testování venku jednotky; to nijak zvlášť náročné.
Funkce jako qc.str (), qc.int (), a tak dále, vytvářet libovolné hodnoty určitého typu. Ve výše uvedeném příkladu, budeme tvrdit, že vlastnost platí pro všechny řetězce. Při spuštění testů, bude QuickCheck generovat randomizované řetězce pro účely testování.
Všimněte si, že jsem řekl: "randomizované", ne "náhodná". To je úmyslné. Rozložení hodnot je upravený, aby zahrnoval zajímavé hodnoty, jako prázdné řetězce, nebo řetězce s nul znaky ve středu, nebo řetězce, které obsahují anglický text. Obecně platí, že QuickCheck snaží dát dobrý mix chytrých choulostivé hodnot a nahodilosti. To je v podstatě to, co by dělal, kdyby jste měli psát opravdu důkladnou testovací případy po ruce, kromě toho, že nemáte na to. V praxi, počítač má méně předsudky o tom, co tvoří rozumných data, takže to bude často najít chyby, které by nikdy nenapadlo, abyste mohli napsat testovací případy pro. To neví, jak se podvědomě vyhnout chyby.
Ty nejsou omezeny na vestavěných funkcí libovolných hodnot. Můžete je použít jako stavební kameny pro vytvoření své vlastní. Například:
třída Point (objekt):
& Nbsp; def __init __ (self, x, y):
& Nbsp; self.x, self.y = float (x), float (y)
def bod ():
& Nbsp; "" "Get libovolný bod." ""
& Nbsp; x = qc.int (-20, 20)
& Nbsp; y = qc.int (-34, 50)
& Nbsp; vratného bodu (x, y)
Potom můžete použít ke generování hodnoty libovolném místě ve vlastnostech. Tady je test nos stylu:
@ Qc.property
def test_triangle_inequality ():
& Nbsp; pt = bod ()
& Nbsp; tvrdí, ABS (pt.x) + abs (pt.y)> = math.sqrt (pt.x ** 2 + pt.y ** 2), (pt.x, pt.y)
Při spuštění to, něco magického děje: QuickCheck se bude snažit vytvářet složité hodnoty pro obě strany x a y proměnných třídy Point, dohromady, takže uvidíte body, jako je (0, 0), (1, 1), ( 0, 1), (385904, 0), stejně jako zcela náhodné, jako ty (584, -35.809.648). Jinými slovy, spíše než jen kreslení hodnoty X a Y z proudu náhodných čísel s některými hodnotami záludné v tom, QuickCheck skutečně snažit vytvářet složité kombinace souřadnice X a Y.
Funkce pro získávání libovolných dat
- Int (nízká, vysoká) dává celých čísel, mezi volitelnými mezích nízké a vysoké.
- Dlouhé (nízká, vysoká) dává touží, mezi volitelnými mezích nízké a vysoké.
- Float (nízká, vysoká) dává plováky, mezi volitelnými mezích nízké a vysoké. Žádné nekonečna nebo NaN hodnoty.
& Nbsp; str (délka = None, MAXLEN = None) dává řetězce, typu str. Kódování je UTF-8. Je-li dána délka, budou řetězce přesně tak dlouho. Pokud MAXLEN je dána, bude délka řetězce být maximálně MAXLEN znaky.
- Unicode (délka = None, MAXLEN = None) dává unicode řetězce, typu unicode. Je-li dána délka, budou řetězce přesně tak dlouho. Pokud MAXLEN je dána, bude délka řetězce být maximálně MAXLEN znaky.
- Název () dává jména, Unicode. Ty se pohybují od prozaické, jako "John Smith", do exotických - názvy obsahující nedělitelné mezery, nebo e-mailové adresy, nebo znaky Unicode mimo základní Multilingual Plane. To znamená, že pokud něco méně perverzní než jména uvidíte v dostatečně velkém souboru internetových dat.
- NameUtf8 () je stejný jako dříve () kódování ("utf8 ')..
- FromList (položky) vrací náhodné položky ze seznamu. To se hodí pro vytváření vlastních libovolných dat generátor funkcí.
- Randstr (délka = None, MAXLEN = sys.maxint) dává řetězce náhodných bajtů. Je-li dána délka, budou řetězce přesně tak dlouho. Pokud MAXLEN je dána, bude délka řetězce být maximálně MAXLEN bajtů.
Řetězce produkované str a unicode náhodně, ale některé úsilí bylo do což je dostatečně perverzní, jak odhalit chyby v spoustu zpracovatelského řetězce kódu. Seznam názvů je volně založený na hrůzných vzpomínek vidění zpracování jméno kódu pád na reálných dat, znovu a znovu a znovu, jak to stalo se stále více jasné, že svět je šílený, a my jsme skutečně ztraceni. (Tento pocit projde, jakmile se dostanete dost testu pokrytí a věci se konečně přestat shazovat. Tam je naděje!)
Údaje o jméno a příklady řetězec v qc.arbitrary může být zajímavé jako zdroj více deteministic zkušební případ dat. Neváhejte a půjčit si nic z toho. Internals jsou magie, ale z magických vnitřních částí, nejzajímavější z nich jsou v qc.arbitrary a QC

Požadavky na :.

  • Python

Podobný software

Komentáře k qc

Komentáře nebyl nalezen
Přidat komentář
Zapnout obrázky!