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 Python@lists.python.it http://lists.python.it/mailman/listinfo/python