¿Qué? Se decodifican enteros, no caracteres.
Es que si pongo
cifrador.descodifica('x')
las pruebas ejecutan.
Sí; pero realmente no sabes qué estás probando
pues java pasa el carácter 'x' a su código UNICODE y sigue.
¿Sabes el código UNICODE?
Como sospecho que no, pues concluyo que no sabes qué pruebas. Mal.
¿Te importaría poner números, sólo números y nada más que números? Gracias.
miércoles, 28 de febrero de 2007
¿Cómo puedo hacer pruebas de caja blanca?
En e1: no puedes porque no conoces el código fuente de CifradorReferencia.java.
Para ser precisos, las pruebas son pruebas,
ni de caja blanca ni de caja negra.
De las pruebas que hagas,
puedes calcular la cobertura como caja negra;
pero no puedes calcular la cobertura como caja blanca.
En el ejercicio e2, cuando programes tu versión de MiCifrador.java,
podrás clacular la cobertura como caja blanca que has conseguido en el ejercicio e1.
Para ser precisos, las pruebas son pruebas,
ni de caja blanca ni de caja negra.
De las pruebas que hagas,
puedes calcular la cobertura como caja negra;
pero no puedes calcular la cobertura como caja blanca.
En el ejercicio e2, cuando programes tu versión de MiCifrador.java,
podrás clacular la cobertura como caja blanca que has conseguido en el ejercicio e1.
Al DrJava no le gustan mis pruebas ...
Si estás usando la versión estable de
http://www.lab.dit.upm.es/~lprg/entorno/mipc/drjava/index.html
debés usar la versión JDK 6 de
http://www.lab.dit.upm.es/~lprg/entorno/mipc/jdk/index.html
por aquello de la compatibilidad.
http://www.lab.dit.upm.es/~lprg/entorno/mipc/drjava/index.html
debés usar la versión JDK 6 de
http://www.lab.dit.upm.es/~lprg/entorno/mipc/jdk/index.html
por aquello de la compatibilidad.
¿Hay realmente un fallo en CifradorReferencia que tenemos que encontrar?
No voy a decirte ni que sí, ni que no.
Puede que sí, puede que no.
Para tu tranquilidad, la nota no depende de que lo encuentres o no.
La nota depende de la cobertura de caja negra que logres
y de la documentación de las pruebas.
Puede que sí, puede que no.
Para tu tranquilidad, la nota no depende de que lo encuentres o no.
La nota depende de la cobertura de caja negra que logres
y de la documentación de las pruebas.
¿Hay que probar con cadenas raras?
¿Te refieres a usar claves y mensajes estrambóticos como ...?
"ñ; É"
Supongo que es una cadena tan válida como cualquier otra;
pero realmente consigues lo mismo con una cadena normal
"Con diez cañones por banda, viento en popa a toda vela, ..."
Por favor, cuida tus ojos, y los nuestros :-]
"ñ; É"
Supongo que es una cadena tan válida como cualquier otra;
pero realmente consigues lo mismo con una cadena normal
"Con diez cañones por banda, viento en popa a toda vela, ..."
Por favor, cuida tus ojos, y los nuestros :-]
¿Vale probar descifra(cifra(x)) == x?
La verdad es que parece más gracioso que razonable.
Hay que probar los métodos por separado.
Nadie ha pedido probar combinaciones de métodos.
Un programa podría cifrar y descifrar de cualquier forma
(perfectamente incorrecta)
y sin embargo pasar esa prueba porque es incorrecto pero coherente consigo mismo.
Hay que probar los métodos por separado.
Nadie ha pedido probar combinaciones de métodos.
Un programa podría cifrar y descifrar de cualquier forma
(perfectamente incorrecta)
y sin embargo pasar esa prueba porque es incorrecto pero coherente consigo mismo.
¿Vale hacer un bucle para probar todos los caracteres?
Parece un error de concepto.
En una prueba debes saber TU (no el programa) qué código debe salir.
Por tanto, debes poner el resultado esperado a mano.
Además, para tener una cobertura del 100% de caja negra del método codificar basta hacer
- el primer carácter
- el último carácter
- algún carácter de enmedio
- un carácter fuera del alfabeto
Si en vez de 4 pruebas (ponle 5 o 6 cosas originales que se te ocurran) haces 95
creo que no sabes muy bien por donde está el norte.
No quiero ni pensar qué pasará si eso del bucle para probarlo todo se lo pretendes aplicar algún día a un programa de verdad: ¿varios meses ejecutando pruebas?
En una prueba debes saber TU (no el programa) qué código debe salir.
Por tanto, debes poner el resultado esperado a mano.
Además, para tener una cobertura del 100% de caja negra del método codificar basta hacer
- el primer carácter
- el último carácter
- algún carácter de enmedio
- un carácter fuera del alfabeto
Si en vez de 4 pruebas (ponle 5 o 6 cosas originales que se te ocurran) haces 95
creo que no sabes muy bien por donde está el norte.
No quiero ni pensar qué pasará si eso del bucle para probarlo todo se lo pretendes aplicar algún día a un programa de verdad: ¿varios meses ejecutando pruebas?
¿Cómo preparo un texto cifrado para programar una prueba?
Siempre puedes hacerlo a mano siguiendo las indicaciones de la www
http://www.lab.dit.upm.es/~lprg/curso/e123/vigenere.htm
aunque hay un truco:
usa el applet que hay en esa página al final.
http://www.lab.dit.upm.es/~lprg/curso/e123/vigenere.htm
aunque hay un truco:
usa el applet que hay en esa página al final.
¿Qué clave le meto al CifradorReferencia?
Depende.
Para pruebas de codificar y descodificar, cualquier clave vale
por ejemplo, "AEIOU"
Para pruebas del constructor, debes probar con una clave normal
y con las claves que dar errores.
Mira la www
http://www.lab.dit.upm.es/~lprg/curso/e1/faq.htm
Para pruebas de cifrar y descifrar,
coge una clave válida cualquiera
por ejemplo, "AEIOU"
y prepara mensajes más cortos / más largos que la clave elegida.
Para pruebas de codificar y descodificar, cualquier clave vale
por ejemplo, "AEIOU"
Para pruebas del constructor, debes probar con una clave normal
y con las claves que dar errores.
Mira la www
http://www.lab.dit.upm.es/~lprg/curso/e1/faq.htm
Para pruebas de cifrar y descifrar,
coge una clave válida cualquiera
por ejemplo, "AEIOU"
y prepara mensajes más cortos / más largos que la clave elegida.
Mi programa ¿tiene que estar bonito?
Sí, por favor.
es más fácil de corregir para nosotros
(y tu verás antes los errores)
Si llevas tiendo tocando aquí y allá y está todo descolocado,
1. sal del ide (bluej, drjava o lo que uses)
2. pásalo por jalopy
http://www.lab.dit.upm.es/~lprg/tools/jalopy.htm
gracias
es más fácil de corregir para nosotros
(y tu verás antes los errores)
Si llevas tiendo tocando aquí y allá y está todo descolocado,
1. sal del ide (bluej, drjava o lo que uses)
2. pásalo por jalopy
http://www.lab.dit.upm.es/~lprg/tools/jalopy.htm
gracias
¿Vale usar caracteres raros para probar el codificador?
Define "caracteres raros".
Yo utilizaría sólo caracteres normales de un teclado en español.
Si vas a empezar con cosas raras como '€', ruso, árabe, chino, japonés, ...
te vas a encontrar con problemas para poder meter dichos caracteres
y el resultado va a ser arbitario.
¿Quieres un consejo?
El carácter '$' no está en el alfabeto, ¿correcto?
pues ya te llega.
Yo utilizaría sólo caracteres normales de un teclado en español.
Si vas a empezar con cosas raras como '€', ruso, árabe, chino, japonés, ...
te vas a encontrar con problemas para poder meter dichos caracteres
y el resultado va a ser arbitario.
¿Quieres un consejo?
El carácter '$' no está en el alfabeto, ¿correcto?
pues ya te llega.
¿Puedo cambiar la contraseña de mi cuenta del laboratorio?
Sí.
Ves a la página del laboratorio
http://www.lab.dit.upm.es/
concretamente a
https://maestro.lab.dit.upm.es/cgi-bin/passwd.html
Ves a la página del laboratorio
http://www.lab.dit.upm.es/
concretamente a
https://maestro.lab.dit.upm.es/cgi-bin/passwd.html
¿Necesito una cuenta para LPRG?
Sí.
es la única forma de entregar las prácticas.
Tienes que ir al laboratorio y pedir que te abrán una cuenta.
Si ya tienes una de otra asignatura,
tienes que ir para que quede registrado que la vas a usar en LPRG.
es la única forma de entregar las prácticas.
Tienes que ir al laboratorio y pedir que te abrán una cuenta.
Si ya tienes una de otra asignatura,
tienes que ir para que quede registrado que la vas a usar en LPRG.
¿he hecho bastantes pruebas ya?
Eso lo deberías saber tu mismo:
¿qué cobertura de caja negra crees que has alcanzado con tus pruebas?
Debes probar todo lo que se dice en el enunciado y en el javadoc de Vigenere.java y CifradorReferencia.java.
Y cada una de esas cosas debes probarla con
- 1 dato "normal"
- datos extermos (caracteres primero y último del alfabeto, códigos antes, dentro y después del rango [0..94])
- algún otro caso que te parezca sospechoso
¿qué cobertura de caja negra crees que has alcanzado con tus pruebas?
Debes probar todo lo que se dice en el enunciado y en el javadoc de Vigenere.java y CifradorReferencia.java.
Y cada una de esas cosas debes probarla con
- 1 dato "normal"
- datos extermos (caracteres primero y último del alfabeto, códigos antes, dentro y después del rango [0..94])
- algún otro caso que te parezca sospechoso
No encuentro CifradorReferencia
¿Seguro que has puesto los ficheros donde hemos indicado?
en algún sitio del PC crea un directorio
... / e1
en ese directorio, crea un subdirectorio
... / e1 / cifrador
pon ahí los ficheros de la web
... / e1 / cifrador / Vigenere.java
... / e1 / cifrador / CifradorReferencia.class
si usas BlueJ,
dile que abra un fichero en ese sitio
http://www.lab.dit.upm.es/~lprg/curso/e1/e1_open.png
cuando crees tu batería de pruebas
... / e1 / cifrador / CifradorTest.java
el BlueJ debe tener esta pinta
http://www.lab.dit.upm.es/~lprg/curso/e1/e1_cifrador.png
Si usas DrJava, el asunto es aún más fácil:
ves directamente al directorio
... / e1 / cifrador
y abre el fichero; el solito se aclara con los paquetes.
en algún sitio del PC crea un directorio
... / e1
en ese directorio, crea un subdirectorio
... / e1 / cifrador
pon ahí los ficheros de la web
... / e1 / cifrador / Vigenere.java
... / e1 / cifrador / CifradorReferencia.class
si usas BlueJ,
dile que abra un fichero en ese sitio
http://www.lab.dit.upm.es/~lprg/curso/e1/e1_open.png
cuando crees tu batería de pruebas
... / e1 / cifrador / CifradorTest.java
el BlueJ debe tener esta pinta
http://www.lab.dit.upm.es/~lprg/curso/e1/e1_cifrador.png
Si usas DrJava, el asunto es aún más fácil:
ves directamente al directorio
... / e1 / cifrador
y abre el fichero; el solito se aclara con los paquetes.
Suscribirse a:
Entradas (Atom)