Cursos de diseño y programación de videojuegos

QuickCheck, una herramienta útil para evitar bugs

20 Feb 2017

Todos sabemos que resulta muy complicado escribir un código de forma que este libre de bugs y por desgracia a pesar de la efectividad del datamining y el marchine learning, aun nos encontramos con programadores que escriben una y otra vez el mismo código y terminan cometiendo los mismos errores. Pero contamos con una herramienta de gran utilidad, Quickcheck, la cual nos ayudará  a analizar nuestros algoritmos  la hora de encontrar los errores.

Analisis bugs, Quickcheck

 

Cómo encontrar los bugs

Todo seria más fácil si supiéramos que clases de parámetros producen el mismo resultado en nuestro test para cada algoritmo. ¿Y por qué? Y esto es por que de esta forma seria más fácil analizar los códigos ya que solo tendríamos que  revisar un representante de cada clase.

Veamos como se encuentran escondidos los bugs siempre de forma intuitiva. Estos suelen encontrarse en grupos según las clases de parámetros para las que nuestro código es excluyente o no, aunque hay que decir que estas clases no excluyentes.

Por ejemplo si nuestro código funcionara la cadena de números primos de aes y para que lo hiciese con la cadena de números primos de aes seria necesario que el algoritmo estuviera relacionado  con la primalidad como fuera.

Cómo usar Quickcheck

Quickcheck se encarga de realizar una búsqueda de todos los posibles valores de cada parámetro de forma que establece para cada test una evaluación transversal distinta, es decir, nosotros establecemos que el código sea invariante y Quickcheck lo analiza y detecta  los parámetros. Así finalmente se obtiene una función que funciona permanentemente.

suma x y = x + y

prop_suma_conmutativa :: Int ->Int -> Bool

prop_suma_conmutativa x y = suma x y == suma y x

Así es esta forma QuickCheck pasa la función pro_suma_conmutativa como parámetro, para verificarla en varios casos aleatorios y poder indicar si la función suma cumple o no la propiedad de los números enteros.

¿Por qué es tan importante la elección de los invariantes?

Como ya hemos visto QuickCheck produce tantos argumentos para nuestros test  como paramentos que nosotros establezcamos pero siguiendo una relación exponencial. Por ello los invariantes y su elección es un tema tan importante. De forma que tendremos que buscar invariantes que conecten relaciones que cubran el dominio que Quickcheck genera.

 

Finalmente hemos visto como esta herramienta es muy útil para poder generar millones de evaluaciones de forma que podamos encontrar los errores o bugs de los códigos, pero el problema radica en saber cual es el código  que queremos validar y establecer aquellos invariantes que afecten más a nuestro código. Desde Mola Games esperamos que te hayamos servido de ayuda, en nuestra web podrás encontrar muchos más posts.

Bug informatica

 

Share

Mola Games

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *