En esta sección, aprenderás cómo probar y depurar tus scripts en Lua. La capacidad de identificar y corregir errores es crucial para cualquier programador. Este módulo te proporcionará las herramientas y técnicas necesarias para asegurar que tu código funcione correctamente y sea eficiente.
- Introducción a las Pruebas
1.1 ¿Qué son las Pruebas?
Las pruebas son un conjunto de actividades que se realizan para verificar que el software cumple con los requisitos especificados y funciona como se espera. Existen varios tipos de pruebas, pero en este módulo nos centraremos en las pruebas unitarias.
1.2 Pruebas Unitarias
Las pruebas unitarias son pruebas que se realizan a nivel de función o método. Su objetivo es verificar que cada unidad de código funcione correctamente de manera aislada.
Ejemplo de Prueba Unitaria
-- Definición de una función simple function add(a, b) return a + b end -- Prueba unitaria para la función add function test_add() assert(add(2, 3) == 5) assert(add(-1, 1) == 0) assert(add(0, 0) == 0) print("Todas las pruebas pasaron") end -- Ejecutar la prueba test_add()
En este ejemplo, la función add
se prueba con diferentes entradas para asegurarse de que produce los resultados esperados. La función assert
se utiliza para verificar que las condiciones sean verdaderas. Si alguna condición falla, Lua lanzará un error.
- Herramientas de Pruebas en Lua
2.1 Busted
Busted es un marco de pruebas unitarias para Lua que facilita la escritura y ejecución de pruebas.
Instalación de Busted
Para instalar Busted, puedes usar LuaRocks, el gestor de paquetes para Lua:
Ejemplo de Prueba con Busted
-- Guardar este archivo como test_add.lua describe("add function", function() it("should return the sum of two numbers", function() assert.are.equal(5, add(2, 3)) assert.are.equal(0, add(-1, 1)) assert.are.equal(0, add(0, 0)) end) end)
Para ejecutar la prueba, usa el siguiente comando:
- Técnicas de Depuración
3.1 Uso de print
La forma más básica de depuración es usar la función print
para mostrar valores de variables y mensajes en la consola.
Ejemplo de Depuración con print
function add(a, b) print("a:", a, "b:", b) -- Imprimir los valores de a y b return a + b end print(add(2, 3))
3.2 Uso de assert
La función assert
se puede utilizar para verificar condiciones y lanzar errores si la condición es falsa.
Ejemplo de Depuración con assert
function divide(a, b) assert(b ~= 0, "El divisor no puede ser cero") return a / b end print(divide(4, 2)) print(divide(4, 0)) -- Esto lanzará un error
3.3 Uso del Depurador de Lua
Lua proporciona un depurador integrado que permite establecer puntos de interrupción, inspeccionar variables y ejecutar código paso a paso.
Ejemplo de Uso del Depurador
-- Guardar este archivo como debug_example.lua function factorial(n) if n == 0 then return 1 else return n * factorial(n - 1) end end print(factorial(5))
Para depurar este script, puedes usar el siguiente comando:
Esto iniciará el depurador y te permitirá ejecutar comandos de depuración.
- Ejercicios Prácticos
Ejercicio 1: Prueba Unitaria
Escribe una función multiply
que multiplique dos números y crea una prueba unitaria para verificar su funcionamiento.
Solución
function multiply(a, b) return a * b end function test_multiply() assert(multiply(2, 3) == 6) assert(multiply(-1, 1) == -1) assert(multiply(0, 5) == 0) print("Todas las pruebas pasaron") end test_multiply()
Ejercicio 2: Depuración
Escribe una función subtract
que reste dos números. Introduce un error intencional y usa print
y assert
para depurar el problema.
Solución
function subtract(a, b) return a - b -- Introduce un error intencional aquí, por ejemplo, a + b end function test_subtract() assert(subtract(5, 3) == 2) assert(subtract(0, 0) == 0) assert(subtract(-1, -1) == 0) print("Todas las pruebas pasaron") end test_subtract()
- Conclusión
En esta sección, has aprendido sobre la importancia de las pruebas y la depuración en la programación. Has visto cómo escribir pruebas unitarias y usar herramientas como Busted para facilitar el proceso de pruebas. También has aprendido técnicas básicas de depuración utilizando print
, assert
y el depurador de Lua. Estas habilidades son esenciales para asegurar que tu código sea robusto y libre de errores.
En el siguiente tema, aplicarás estos conocimientos en la implementación de tu proyecto final, asegurándote de que cada componente funcione correctamente y de manera eficiente.
Curso de Programación en Lua
Módulo 1: Introducción a Lua
Módulo 2: Conceptos Básicos
Módulo 3: Conceptos Intermedios
Módulo 4: Conceptos Avanzados
- Corutinas
- Programación Orientada a Objetos en Lua
- Técnicas de Depuración
- Optimización del Rendimiento
- Uso de la API C de Lua
Módulo 5: Aplicaciones Prácticas
- Construcción de un Juego Simple
- Scripting en Motores de Juegos
- Automatización de Tareas con Lua
- Integración de Lua con Otros Lenguajes