IIC2233 / Syllabus-2023-2

69 stars 13 forks source link

Si te sacaste un 6.2 en la entrega intermedia de la T2 en vez de un 7, esto podría ser porque, uno de los test privados mide un caso que no aparece en los publicos. #443

Open VAMarques opened 11 months ago

VAMarques commented 11 months ago

Prerrequisitos

(Marcar colocando una X entre los corchetes los ítems que ya hiciste, así: "[X]")

Contenido

Problema

Dos personas revisamos la puntuación en nuestra entrega intermedia, y en vez de tener el 7 como esperábamos al tener todos los test públicos buenos, tuvimos un 6.2, y 0 puntaje en codificar_mensaje, yo por mi parte tenia un presentimiento del problema que podia haber, y como fueron publicados los test privados, los revise, y encontré exactamente el problema que yo asumí que existía.

Este es el test_09_codificar_mensaje.py privado, especificamente el test_6

    def test_6(self):
        mensaje = bytearray(
            b"\xce\x93\xce\xb5\xce\xb9\xce\xac \xcf\x83\xce\xb1\xcf\x82! \xce\x9a\xce"
            b"\xb1\xce\xbb\xce\xb7\xce\xbc\xce\xad\xcf\x81\xce\xb1 \xce\xb1\xcf\x80"
            b"\xcf\x8c \xcf\x84\xce\xb7\xce\xbd \xcf\x8c\xce\xbc\xce\xbf\xcf\x81\xcf"
            b"\x86\xce\xb7 \xce\x91\xce\xb8\xce\xae\xce\xbd\xce\xb1.")
        respuesta = codificar_mensaje(mensaje)
        self.assertIsInstance(respuesta, list)
        for i in respuesta:
            self.assertIsInstance(i, bytearray)
        self.assertEqual(respuesta, [
            bytearray(b'\x00\x00\x00H'),
            bytearray(b'\x00\x00\x00\x01'),
            bytearray(b'\xce\x93\xce\xb5\xce\xb9\xce\xac \xcf\x83\xce\xb1\xcf\x82! \xce\x9a\xce'
                      b'\xb1\xce\xbb\xce\xb7\xce\xbc\xce\xad\xcf\x81\xce\xb1 \xce\xb1'),
            bytearray(b'\x00\x00\x00\x02'),
            bytearray(b'\xcf\x80\xcf\x8c \xcf\x84\xce\xb7\xce\xbd \xcf\x8c\xce\xbc\xce\xbf\xcf'
                      b'\x81\xcf\x86\xce\xb7 \xce\x91\xce\xb8\xce\xae\xce\xbd\xce\xb1.')])

Lo que tiene de inusual este test case, es que usa todos los bytes del mensaje, dejando ningun \x00 de mas.

Y lo malo de eso es que ningun test publico detectaba eso, haciendo dificil, o casi imposible darte cuenta de eso cuando estabas creando la funcion, por tanto, si la implementabas de cierta manera, tu resultado podia terminar siendo:

[bytearray(b'\x00\x00\x00H'),
 bytearray(b'\x00\x00\x00\x01'),
 bytearray(b'\xce\x93\xce\xb5\xce\xb9\xce\xac \xcf\x83\xce\xb1\xcf\x82! \xce\x9a\xce\xb1\xce\xbb\xce\xb7\xce\xbc\xce\xad\xcf\x81\xce\xb1 \xce\xb1'),
 bytearray(b'\x00\x00\x00\x02'),
 bytearray(b'\xcf\x80\xcf\x8c \xcf\x84\xce\xb7\xce\xbd \xcf\x8c\xce\xbc\xce\xbf\xcf\x81\xcf\x86\xce\xb7 \xce\x91\xce\xb8\xce\xae\xce\xbd\xce\xb1.'),
 bytearray(b'\x00\x00\x00\x03'),
 bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')]

Mirese el bloque bytearray(b'\x00\x00\x00\x03'), luego el siguiente bloque, notese que son todos 0, yo y mi compañero hemos concluido que este es el unico test case malo que tuvimos.

COMO REPLICAR

  1. Correr el test publico test_09_codificar_mensaje.py, verificar que todos los test salgan correctos.
  2. Añadir los test privados del syllabus a tu tarea 2 entrega intermedia,
  3. Correr el test privado test_09_codificar_mensaje.py, verificar que el unico test case malo sea test_6
  4. Deja tu comentario aca mencionando que tuviste el mismo problema.

Verificacion propia.

image image
SSParzival commented 11 months ago

Concuerdo y verifico esto. Considero perjudicial la evaluación de un tipo de caso presente en los tests privados mas no en los públicos.

JavierMoralesD commented 11 months ago

Yo tambien tuve el mismo problema

NicoPuc commented 11 months ago

Tuve el mismo problema

gecoli commented 11 months ago

Muy buenas tardes a todos,

Para este tipo de inquietudes existe el formulario de recorrección, por lo que les solicito rellenar el formulario cuando esté disponible, describiendo su problema y entonces podremos responderles.

Aprovecho de recordar que las issues son un espacio para dudas.

Gracias!