domingo, 9 de diciembre de 2012

Cómo no hacer un sistema de exámenes...


El otro día me tocó hacer un curso de esos online, para tener un títulillo sobre Prevención de Riesgos Laborales.
Por mucho que la RRHH te diga que no te llevará más de 15 minutos... al principio del curso ya ves que es una repetición de los mismos conceptos que has escuchado una y otra vez, y de la lógica.. y bueno, un mensajito indica que dura 160 slides, y que serán aproximadamente unos 240 minutos.
Así que 160 slides después, lo último que tienes ganas es que te hagan un examen de la teoría que has tenido que leer, repitiendo lo mismo una y otra vez... Por lo que cuando he acabado el examen correctamente... me ha dado por "mirar" la aplicación.

Que nos podemos encontrar en este punto? pues muchas opciones, pero la que me he encontrado.. ha sido una que no me la esperaba... por lo mal hecha que estaba. 


Al acceder al examen, era tipo test, con tres posibles respuestas de A, B, o C, con lo que sí acertabas salía un "CORRECTO" y si fallabas un "ERROR". 

Tal y como se comportaba la aplicación, que no parecía haber ningún tipo de refresco, de peticiones hacia el servidor ni nada, me puse a observar el código fuente, esperando que no fuesen verdad mis sospechas. Efectivamente, lo eran. Las comprobaciones las hacía directamente con un javascript en la parte del usuario. FAIL.

Como se puede observar, al elegir una opción, se realiza una petición a una función javascript contenida en la misma página. Y en función de que opción se elija se envían unos parámetros u otros.


Al buscar la función, nos encontramos que en tratando los parámetros recibidos, se indica si la respuesta que has seleccionado es la correcta o no (si el primer parámetro es un 1, es la correcta), además, al hacer el envío, tenemos el valor de "value" que nos indica cómo se tiene que respuesta se deberá pintar de verde, por lo que es otra forma de saber la respuesta correcta. En resumen, que en la misma petición, ya se está enviando la solución! la función de validación, solo sirve para pintar los colores y el mensajito de CORRECTO y sumar puntos! (se puede observar al final de la siguiente captura)


Además, no solo contentos con esto.. han hecho que todas las preguntas estén en el mismo Html, y que por lo tanto, se puede visualizar todas las respuestas de golpe, buscando los "validarRespuesta(1,XXX" 
podríamos obtener todas las respuestas posibles. 

Cómo sería muy cansado y laborioso estar revisando todo el código de la página para ir acertando cada una de las preguntas que se hacen... es más fácil si sabes como se hace la petición para registrar tu resultado... y cómo no, también está en el código fuente:


Pero recordad, haciendo esto, no se aprende! que si os apuntan a un curso, es para sacar provecho, y que luego os envíen un título como el siguiente.