Repaso: Pruebas en el Análisis Léxico

  1. ¿Cuál es la diferencia entre los operadores == y eq?
  2. ¿Cuáles son los parámetros de la función ok?
  3. ¿Cuáles son los parámetros de la función is?
  4. ¿Porqué es conveniente nombrar las pruebas con un nombre que empiece por un número?
  5. ¿Como puedo ejecutar los tests en modo verbose?
  6. ¿Como puedo probar un código que produce la detención del programa?
  7. ¿Que contiene la variable $@?
  8. ¿Que hace la función like?
  9. ¿Que contiene la variable $#-? ¿Y $+? (Consulte 1.1.4)
  10. ¿Porqué la función use_ok es llamada dentro de un BEGIN?
  11. ¿Que es una prueba SKIP?
  12. ¿Que es una prueba TODO?
  13. ¿Que hace la función pod_file_ok? ¿A que módulo pertenece?
  14. ¿Que hace el operador tr?
  15. ¿Qué devuelve el operador tr?
  16. ¿Que hace la opción d de tr? (consulte 1.6)
  17. Explique la conducta de la siguiente sesión con el depurador:
      DB<1> $a = '"Focho \"mucha\" chufa"'
      DB<2> print $a
    "Focho \"mucha\" chufa"
      DB<3> print $& if $a =~ m{^"([^"]|\\")*"}
    "Focho \"
      DB<4> print $& if $a =~ m{^"(\\"||[^"])*"}
    "Focho \"mucha\" chufa"
    
  18. Supuesto que tuvieramos el operador menos en nuestro lenguaje y dada la entrada a = 2-3, ¿Que devolverá su analizador léxico? ¿Devuelve ID PUN NUM NUM o bien ID PUN NUM PUN NUM? (hemos simplificado el flujo eliminando los atributos).
  19. ¿Que hace la llamada use Test::More qw(no_plan);?
  20. ¿Que hace la función can_ok? ¿Qué argumentos tiene?
  21. Explique las causas de la siguiente conducta del depurador:
      DB<1> $a='4+5'
      DB<2> print "($&) " while ($a =~ m/(\G\d+)/gc) or ($a =~ m/(\G\+)/gc);
    (4) (+) (5)
      DB<3> $a='4+5' # inicializamos la posición de búsqueda
      DB<4> print "($&) " while ($a =~ m/(\G\d+)/g) or ($a =~ m/(\G\+)/g);
    (4)
      DB<5> $a='4+5'
      DB<6> print "($&) " while ($a =~ m/\G\d+|\G\+/g)
    (4) (+) (5)
    
  22. ¿Que diferencia hay entre is_deeply e is?

  23. ¿Que argumentos recibe la función throws_ok? ¿En que módulo se encuentra?

  24. ¿Que hace el comando HARNESS_PERL_SWITCHES=-MDevel::Cover make test?

  25. ¿Cómo se interpreta el cubrimiento de las sentencias? ¿y de las subrutinas? ¿y de las ramas? ¿y las condiciones lógicas? ¿En cual de estos factores es realista y deseable lograr un cubrimiento del %100 con nuestras pruebas?

  26. ¿Que pasa si después de haber desarrollado un número de pruebas cambio la interfaz de mi API?

  27. ¿Que hace el comando perl -d:DProf programa? ¿Para que sirve?

Casiano Rodríguez León
2009-12-09