Una vez que se generó el código fuente, se debe probar el software para encontrar y corregir tantos errores como sea posible antes de que se envíe el producto final al cliente. El objetivo de la depuración y prueba en Java es diseñar una serie de casos de prueba que tengan una alta probabilidad de encontrar errores. Es aquí donde entran en juego las técnicas de prueba de software. Estas técnicas proporcionan pautas sistemáticas para la prueba que busca:
- Revisar la lógica interna e interfaces de todos los componentes de software.
- Revisar los dominios de entrada y salida del programa para obtener errores en la operación, el comportamiento y el rendimiento del programa.
¿Quién las realiza?
En las primeras etapas del proceso, un ingeniero de software ejecuta todas las pruebas. Sin embargo, a medida que avanza el proceso, es posible que participen especialistas en pruebas.
¿Por qué es importante?
Las revisiones y otras acciones de SQA (Aseguramiento de la Calidad del Software) pueden y deben descubrir errores, pero no son suficientes. Cada vez que se ejecuta el programa, el cliente lo verifica, por lo que debe ejecutarse antes de que llegue al cliente, con la intención específica de encontrar y eliminar todos los errores. Para encontrar tantos de estos como sea posible, las pruebas deben ejecutarse de forma sistemática y los casos de prueba deben diseñarse utilizando técnicas sistematizadas. Probar un módulo software (método, clase, paquete, etc.) consiste en lo siguiente:
- Ejecutar el módulo bajo diferentes situaciones.
- Para comprobar que presenta el comportamiento esperado.
Se comporta como dice su especificación. Fundamental disponer de un entorno automatizado de pruebas:
- Ejecución automática de los casos de prueba
- Generación de informes
Etapas
Las pruebas se realizan en cuatro etapas:
- Pruebas unitarias (prueba independiente de cada clase)
- Se prueban sus métodos para distintos casos de prueba.
- Se intenta cubrir todo el comportamiento de la clase.
- Prueba de integración o de subsistemas
- Se prueban agrupaciones de clases relacionadas.
- Prueba de sistema
- Se prueba el sistema como un todo.
- La prueba de validación
- Prueba del sistema en el entorno real de trabajo.
- Con intervención del usuario final.
Pruebas unitarias (de clases)
- Caso de prueba: ejecución de un método bajo unas condiciones particulares (valores de los parámetros + estado de la clase)
El resultado permite determinar si, para este caso particular, la clase se ha comportado acorde a su especificación. En general, el número de posibles casos de prueba es muy alto (muchas veces infinito).
Objetivo de la prueba de clases
- Encontrar el mayor número de defectos posible.
- Utilizar un número “pequeño” de casos de prueba.
Nunca olvidar que
Las pruebas permiten probar la existencia de defectos, no la ausencia de estos.
Estrategias para la elección de casos de prueba:
Pruebas funcionales o de “caja negra», los casos de prueba se basan en la especificación del módulo, no se requiere conocimiento de su estructura interna, no se requiere disponer del código fuente. Los requisitos de software se examinan usando técnicas de diseño de casos de prueba de «caja negra». Pruebas estructurales o de “caja blanca“, la lógica interna del programa se revisa usando técnicas de diseño de casos de prueba de “caja blanca”, los casos de prueba se seleccionan en función del conocimiento que se tiene de la estructura del método y es necesario disponer del código fuente para su realización.
Depuración en Eclipse
Hay muchos casos en los que es difícil comprender lo que sucede en un programa. La solución es depurar el código del programa. La máquina virtual Java tiene capacidades de depuración de código, incluso desde una máquina remota. Eclipse facilita la depuración. ¿Qué significa depuración? Depurar un programa es recorrerlo paso a paso, viendo el valor de las variables del programa. Esto permite ver exactamente qué sucede en el programa cuando funciona una línea específica de código. ¿Cómo depurar un código con Eclipse? Para depurar un programa Java en Eclipse, lo primero que se debe hacer es, en la línea de código que se desea revisar o supervisar, poner un punto de interrupción o “brakepoint”.
Lo siguiente es iniciar el programa con la opción debug. Este programa se ejecutará normalmente hasta que encuentre la línea donde se coloca el punto de interrupción. Eclipse detendrá la ejecución y pedirá permiso para cambiar la perspectiva de depuración. Hacer clic en «Recordar mi decisión» y «Sí». Luego, aparecerá la perspectiva de depuración con la línea resaltada, mostrando información sobre el estado de ejecución.
Perspectiva de depuración en Eclipse
Eclipse ofrece varias opciones para mostrar los proyectos. Estas formas se llaman perspectivas. Cuando se pasa a la perspectiva de depuración, la primera impresión es confusa, ya que aparecen nuevas vistas (ventanas) y cambian su posición en relación con la perspectiva de Java. Como se usará mucho la perspectiva de depuración, es recomendable reorganizar las pestañas. Al arrastrar y soltar las guías, se pueden cambiar sus posiciones.
En la esquina superior derecha, se puede ver la barra de perspectiva con la perspectiva de depuración seleccionada. Si se quiere volver a la perspectiva de Java, simplemente, hacer clic en Java. Las nuevas vistas desde la perspectiva de debug son la depuración, las variables y el punto de interrupción. Además, la visualización del código muestra, verificada en verde, la línea donde se interrumpió la ejecución.
- Vista variable. En esta vista se observa una línea para cada variable, campo o parámetro. Cuando se hace clic en cada uno se ve su contenido.
- Vista breakpoints. Aquí se puede ver la lista de todos los puntos de interrupción que se tienen. Se puede habilitar o deshabilitar un breakpoint con el check a la izquierda de cada breakpoint.
- Vista debug. La vista de depuración muestra la lista de aplicaciones que se están ejecutando y algunas que han finalizado su ejecución.
Botones para controlar la depuración
En la barra de botones principal, al lado de imprimir, se ven los botones para manipular la ejecución de la depuración de código. Las funciones de estos botones, por orden, son:
- Resume (F8); continúa con la ejecución (hasta el próximo breakpoint).
- Suspend; se puede detener la ejecución, aunque no se alcance un breakpoint (muy útil cuando se entra en un ciclo infinito).
- Stop; detiene la depuración.
- Step Into (F5); se detiene en la primera línea del código del método que se está ejecutando. Si no hay método, se hace lo mismo que Step Over.
- Step Over (F6); pasa a la siguiente línea que se observa en la vista de código.
- Step Return (F7); vuelve a la línea siguiente del método que llamó al método que se está depurando actualmente. O lo que es lo mismo, sube un nivel en la pila de ejecución, que se ve en la vista debug.
Programación y nuevas tecnologías
Dentro del campo del desarrollo tecnológico, existen diferentes ámbitos que se encargan de generar productos y servicios que el ser humano puede utilizar y disfrutar. Bien, se podría afirmar que uno de los objetivos principales de la tecnología es hacer la vida humana más sencilla, y por ello se debe contar con ciertos parámetros importantes en la aplicación de la misma. Por esta razón, se hace necesario que existan figuras profesionales encargadas de este proceso de manera adecuada.
TECH Universidad Tecnológica prepara al profesional moderno en el campo de su elección brindándole herramientas al mismo para su desempeño adecuado. Caso ejemplo de ello sucede en su Facultad de Informática, donde se encuentran posgrados tales como el Máster en Tecnología Específica de Telecomunicación y el Máster en Industria 4.0 y Transformación Digital. Por otra parte, para aquellos interesados en el dominio del campo del desarrollo de software, no cabe duda que su mejor elección será tomar el Máster en Ingeniería de Software y Sistemas de Información.