[Python] Test: uovodicolombosilverbulletdeusexmachinaratatouillecaramba!
Federico Fissore
federico a fsfe.org
Mer 9 Mar 2016 17:31:08 CET
Potresti dare un'occhiata al mutation testing.
In breve: il codice sotto test viene modificato in N modi, es
if a == b
diventa
if a != b
Se il tuo test si spacca, hai una buona coverage, se il "mutante
sopravvive", il codice è mal testato
Però non ho esperienza con python, non saprei dirti se c'è una lib e
qual è la migliore
ciao
fede
Nicola Larosa ha scritto il 09/03/2016 alle 17:19:
> Do I have your multilingual attention now? Good. ;-)
>
> Sappiamo tutti che, se da un lato il codice *testato* non garantisce il
> corretto funzionamento, dall'altro il codice *non testato* garantisce il
> malfunzionamento al 99.99%.
>
> Purtroppo scrivere unit test con un coverage decente è costoso (con
> "decente" > 95%): bisogna scrivere molti test, e vanno tenuti
> aggiornati mentre il codice evolve.
>
> Ma dato che i test automatizzano l'esecuzione del codice, non sarebbe
> bello automatizzare anche la generazione dei test?
>
> È quello che fanno gli strumenti di fuzzy testing: voi scrivete un test
> che invoca un pezzo di codice, e loro lo invocano a ripetizione
> esplorando casualmente lo spazio dei dati in ingresso.
>
> Sono strumenti efficaci nel trovare bug inaspettati, ed hanno un costo
> di utilizzo basso; hanno però il difetto di "sparare nel mucchio",
> rischiando di spendere molto tempo su dati poco rilevanti, e al
> contempo mancare valori critici.
>
> Non sarebbe bello poterli indirizzare sulle porzioni più interessanti
> dello spazio dei dati, e intanto assicurarsi di esplorare certi valori
> dimostratisi critici? È quello che fa il property-based testing, tra i
> cui esponenti ci sono QuickCheck (Haskell) del 1999 e ScalaCheck del
> 2007.
>
> C'è un gran bello strumento anche per Python: Hypothesis. Il suo
> funzionamento è schematizzato in questa slide:
>
> <https://speakerdeck.com/michelslm/property-based-testing-in-python-with-hypothesis?slide=11>
>
> e l'ottima documentazione contiene un bel pezzo di advocacy:
>
> <http://hypothesis.readthedocs.org/en/latest/manifesto.html>
>
> Adesso non avete più scuse: andate e testate!
>
>
> (I'm looking at you, Genropy. ;-) )
>
Maggiori informazioni sulla lista
Python