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. ;-) )
_______________________________________________
Python mailing list
[email protected]
http://lists.python.it/mailman/listinfo/python