Universidad Nacional de San Juan
 Facultad de Ciencias Exactas, Físicas y Naturales
                          23 de Noviembre de 2010




           José Luis Rodríguez Roldan
                     joseluis.rodriguezroldan@gmail.com
Pruebas o Testing (Tipos)
Pruebas unitarias *
Pruebas funcionales : Es un proceso para procurar encontrar discrepancias
entre las funcionalidades del programa y la especificación funcional.
Pruebas de Integración : Es cuando se han aprobado las pruebas unitarias, se
prueban todos los elementos que componen un proceso.
Pruebas de validación : Es el proceso de comprobación que lo que se a
desarrollado es lo que el usuario quería , es como se debe de comportar el
programa desde el punto de vista del usuario.
Pruebas de sistema : Es la comprobación que se le realiza al producto en
forma completa.
Pruebas de aceptación : Es la comprobación que realiza un grupo de
usuarios o clientes , para asegurarse que el sistema desarrollado cumple sus
requisitos.
Pruebas de regresión: Es la comprobación que intenta descubrir las causas
de errores, falta de funcionalidades o cualquier comportamiento no esperado
después de realizado un cambio y que anteriormente no se producía.
Pruebas de carga: Es para observar el comportamiento de una aplicación bajo
una cantidad de peticiones esperadas. Tienen el propósito de encontrar cuellos
de botellas en la aplicación
Pruebas de prestaciones: Es simular la normal utilización del sistema para
identificar problemas de rendimiento y desgracian de recursos para facilitar su
corrección.
Pruebas o Testing (Tipos)
Introducción a TCA
              Que es TCA (Test After Coding)
Son los test que se realizan, después que el código ya esta
escrito .
Los casos de prueba se suelen escribir después de
implementar el modulo cuyo funcionamiento se
pretende verificar.
A veces se preparan en paralelo si el programador y la
persona que realizan las pruebas (tester) no son la
misma persona.
Introducción a TDD
                Que es TDD (Test Driven Development)
Es una metodología de programación que involucra 2 prácticas:
Escribir primero las pruebas unitarias, o sea, escribir el test antes de
escribir el programa y refactoring.
                             Ciclo del TDD:
1. Escribir un test e intentar compilar, aunque aun no sea posible
    porque no se desarrollo la funcionalidad correspondiente.
2. Escribir la mínima cantidad de código posible para que la
    prueba unitaria compile y ejecutarla. Deberá fallar, ya que no
    tiene la funcionalidad requerida.
3. Escribir el test de tal manera, que al ser ejecutado, este no falle.
    La idea es que la función escrita no sea lo más elegante y
    optimo posible, sino que simplemente, permita pasar el test
    unitario exitosamente.
4. Refactorizar el código de la función, para que sea lo más
    optimo posible. Es muy posible que existan varias instancias de
    refactorización del código de la función en distintas etapas del
    proyecto.
5. Escribir un nuevo test unitario para otra funcionalidad.
Ciclo del TDD
Test Unitario (Unit Test)
Un test unitario (Unit Test) es un trozo de
código desarrollado con el único objetivo de
verificar que una rutina o función de nuestro
código está funcionando según esperamos.
Test simples que cubren las instancias de
clases en diferentes escenarios.
Condiciones de pruebas diseñadas.
Resultados verificados.
Test Unitario (Unit Test)
     ¿Por qué usar Test Unitario (Unit Test) ?
1.   Facilita los cambios en la aplicación ya que las pruebas nos
     asegurarán que los nuevos cambios no han introducido errores.
2.   Simplifica la integración gracias a que permiten llegar a la fase de
     integración con un grado alto de seguridad de que el código está
     funcionando correctamente. De esta manera se facilitan las pruebas
     de integración.
3.   Documenta el código. Las propias pruebas son un libro abierto
     sobre el funcionamiento de la función y los resultados esperados.
4.   Separación de la interfaz y la implementación. Dado que la única
     interacción entre los casos de prueba y las unidades bajo prueba son
     las interfaces de estas últimas, se puede cambiar cualquiera de los
     dos sin afectar al otro.
5.   Los errores están más acotados y son más fáciles de localizar:
     dado que tenemos preparado un test para cada función que puede
     desenmascararlo.
6.   Aunque pueda parecer mentira, los test unitarios aceleran el
     desarrollo de nuestro software.
7.   Ayuda a tener un código desacoplado gracias a que cada una de
     nuestras funciones está pensada para devolver un resultado que
     podrá ser testeado.
Test Unitario (Unit Test)
                                   Herramientas
Debido al gran éxito que esta metodología está teniendo en el mundo de la ingeniería
del software, son muchas y variadas las herramientas que se han ido desarrollando
hasta día de hoy. Algunas han surgido en forma de frameworks, otras en formato plug-
in bajo el control de algún browser o incluso como librerías para su uso en plataformas
de programación.
Entre los que podemos citar a:
 JUnit: Entorno de pruebas para Java creado por Erich Gamma y Kent Beck.
 HttpUnit: viene a ser un cliente web programable. Se puede usar de forma aislada o
como complemento del framework Junit.
 DBUnit: en realidad es una extensión de JUnit que tiene como ventaja el poder tener
en cuenta la existencia de una base de datos a la hora de realizar las pruebas de los test
 SimpleTest: Entorno de pruebas para aplicaciones realizadas en PHP.
 PHPUnit: framework para realizar pruebas unitarias en PHP.
 CPPUnit: Versión del framework para lenguajes C/C++.
 NUnit: Versión del framework para la plataforma.NET.
 FoxUnit: framework OpenSource de pruebas unitarias para Microsoft Visual FoxPro.
 TestNG: Creado para suplir algunas deficiencias en JUnit.
 JTiger: Basado en anotaciones, como TestNG.
 Selenium: es toda una herramienta dedicada al Test-driven Development, tiene
distintos formatos en los que puede ser utilizados y aporta una importante cantidad de
funcionalidades nuevas para la creación de los test.
Test Unitario (Unit Test)
                                      Assert
La mayoria de las herramientas tienen assert, que son afirmaciones que son usada para
comprobar suposiciones en el programa, colocada donde el desarrollador considera
que su ennunciado es siempre verdadero.
Esto da lugar a que existan afirmaciones y por lo tanto condiciones antes
(precondiciones) y despues (postcondiciones) de la ejecución de determinadas lineas
de código, lo que da lugar a las pruebas unitarias.

Ejemplo
int b= 3;
b= b+8;
System.out.println(“b tiene valor: “, b);
(b==11) //assert
b= b*2;
Test Unitario (Unit Test)
       Assert Junit (java)
Demo

Pruebas unitarias

  • 1.
    Universidad Nacional deSan Juan Facultad de Ciencias Exactas, Físicas y Naturales 23 de Noviembre de 2010 José Luis Rodríguez Roldan joseluis.rodriguezroldan@gmail.com
  • 2.
    Pruebas o Testing(Tipos) Pruebas unitarias * Pruebas funcionales : Es un proceso para procurar encontrar discrepancias entre las funcionalidades del programa y la especificación funcional. Pruebas de Integración : Es cuando se han aprobado las pruebas unitarias, se prueban todos los elementos que componen un proceso. Pruebas de validación : Es el proceso de comprobación que lo que se a desarrollado es lo que el usuario quería , es como se debe de comportar el programa desde el punto de vista del usuario. Pruebas de sistema : Es la comprobación que se le realiza al producto en forma completa. Pruebas de aceptación : Es la comprobación que realiza un grupo de usuarios o clientes , para asegurarse que el sistema desarrollado cumple sus requisitos. Pruebas de regresión: Es la comprobación que intenta descubrir las causas de errores, falta de funcionalidades o cualquier comportamiento no esperado después de realizado un cambio y que anteriormente no se producía. Pruebas de carga: Es para observar el comportamiento de una aplicación bajo una cantidad de peticiones esperadas. Tienen el propósito de encontrar cuellos de botellas en la aplicación Pruebas de prestaciones: Es simular la normal utilización del sistema para identificar problemas de rendimiento y desgracian de recursos para facilitar su corrección.
  • 3.
  • 4.
    Introducción a TCA Que es TCA (Test After Coding) Son los test que se realizan, después que el código ya esta escrito . Los casos de prueba se suelen escribir después de implementar el modulo cuyo funcionamiento se pretende verificar. A veces se preparan en paralelo si el programador y la persona que realizan las pruebas (tester) no son la misma persona.
  • 5.
    Introducción a TDD Que es TDD (Test Driven Development) Es una metodología de programación que involucra 2 prácticas: Escribir primero las pruebas unitarias, o sea, escribir el test antes de escribir el programa y refactoring. Ciclo del TDD: 1. Escribir un test e intentar compilar, aunque aun no sea posible porque no se desarrollo la funcionalidad correspondiente. 2. Escribir la mínima cantidad de código posible para que la prueba unitaria compile y ejecutarla. Deberá fallar, ya que no tiene la funcionalidad requerida. 3. Escribir el test de tal manera, que al ser ejecutado, este no falle. La idea es que la función escrita no sea lo más elegante y optimo posible, sino que simplemente, permita pasar el test unitario exitosamente. 4. Refactorizar el código de la función, para que sea lo más optimo posible. Es muy posible que existan varias instancias de refactorización del código de la función en distintas etapas del proyecto. 5. Escribir un nuevo test unitario para otra funcionalidad.
  • 6.
  • 7.
    Test Unitario (UnitTest) Un test unitario (Unit Test) es un trozo de código desarrollado con el único objetivo de verificar que una rutina o función de nuestro código está funcionando según esperamos. Test simples que cubren las instancias de clases en diferentes escenarios. Condiciones de pruebas diseñadas. Resultados verificados.
  • 8.
    Test Unitario (UnitTest) ¿Por qué usar Test Unitario (Unit Test) ? 1. Facilita los cambios en la aplicación ya que las pruebas nos asegurarán que los nuevos cambios no han introducido errores. 2. Simplifica la integración gracias a que permiten llegar a la fase de integración con un grado alto de seguridad de que el código está funcionando correctamente. De esta manera se facilitan las pruebas de integración. 3. Documenta el código. Las propias pruebas son un libro abierto sobre el funcionamiento de la función y los resultados esperados. 4. Separación de la interfaz y la implementación. Dado que la única interacción entre los casos de prueba y las unidades bajo prueba son las interfaces de estas últimas, se puede cambiar cualquiera de los dos sin afectar al otro. 5. Los errores están más acotados y son más fáciles de localizar: dado que tenemos preparado un test para cada función que puede desenmascararlo. 6. Aunque pueda parecer mentira, los test unitarios aceleran el desarrollo de nuestro software. 7. Ayuda a tener un código desacoplado gracias a que cada una de nuestras funciones está pensada para devolver un resultado que podrá ser testeado.
  • 9.
    Test Unitario (UnitTest) Herramientas Debido al gran éxito que esta metodología está teniendo en el mundo de la ingeniería del software, son muchas y variadas las herramientas que se han ido desarrollando hasta día de hoy. Algunas han surgido en forma de frameworks, otras en formato plug- in bajo el control de algún browser o incluso como librerías para su uso en plataformas de programación. Entre los que podemos citar a: JUnit: Entorno de pruebas para Java creado por Erich Gamma y Kent Beck. HttpUnit: viene a ser un cliente web programable. Se puede usar de forma aislada o como complemento del framework Junit. DBUnit: en realidad es una extensión de JUnit que tiene como ventaja el poder tener en cuenta la existencia de una base de datos a la hora de realizar las pruebas de los test SimpleTest: Entorno de pruebas para aplicaciones realizadas en PHP. PHPUnit: framework para realizar pruebas unitarias en PHP. CPPUnit: Versión del framework para lenguajes C/C++. NUnit: Versión del framework para la plataforma.NET. FoxUnit: framework OpenSource de pruebas unitarias para Microsoft Visual FoxPro. TestNG: Creado para suplir algunas deficiencias en JUnit. JTiger: Basado en anotaciones, como TestNG. Selenium: es toda una herramienta dedicada al Test-driven Development, tiene distintos formatos en los que puede ser utilizados y aporta una importante cantidad de funcionalidades nuevas para la creación de los test.
  • 10.
    Test Unitario (UnitTest) Assert La mayoria de las herramientas tienen assert, que son afirmaciones que son usada para comprobar suposiciones en el programa, colocada donde el desarrollador considera que su ennunciado es siempre verdadero. Esto da lugar a que existan afirmaciones y por lo tanto condiciones antes (precondiciones) y despues (postcondiciones) de la ejecución de determinadas lineas de código, lo que da lugar a las pruebas unitarias. Ejemplo int b= 3; b= b+8; System.out.println(“b tiene valor: “, b); (b==11) //assert b= b*2;
  • 11.
    Test Unitario (UnitTest) Assert Junit (java)
  • 12.