Translate

lunes, 19 de octubre de 2020

QuickCheck: prueba automática programas Haskell


QuickCheck es una biblioteca para pruebas aleatorias de propiedades de programas. 

El programador proporciona una especificación del programa, en forma de propiedades que las funciones deben satisfacer, y QuickCheck luego prueba que las propiedades se cumplen en una gran cantidad de casos generados aleatoriamente. 

Las especificaciones se expresan en Haskell, utilizando combinadores proporcionados por QuickCheck. 

QuickCheck proporciona combinadores para definir propiedades, observar la distribución de los datos de prueba y definir generadores de datos de prueba.

veamos un ejemplo, primero definamos una propiedad : 


prop_RevRev xs = reverse (reverse xs) == xs 

where types = xs::[Int]


y luego a probar la propiedad 


Main> quickCheck prop_RevRev

OK, passed 100 tests.


Y si fallará nos mostraría todas las veces que fallo : 


Main> quickCheck prop_RevId

Falsifiable, after 1 tests:

[-3,15]


Y listo, tenemos una comprobación rapida y fácil para nuestros programas. 

Dejo link: http://www.cse.chalmers.se/~rjmh/QuickCheck/