Miranda Test Generator README 🧪
Extensión para Visual Studio Code que analiza archivos Miranda (.mira) y genera automáticamente casos de prueba a partir de las firmas de funciones.
Instalación desde el Marketplace
Buscá "Miranda Test Generator" en el Marketplace de VS Code o instalá directamente desde:
🔗 Miranda Test Generator — Visual Studio Marketplace
¿Qué problema resuelve?
En el desarrollo de software, el testing es una práctica fundamental para garantizar la calidad del código. Sin embargo, escribir casos de prueba manualmente es tedioso y propenso a olvidar casos borde importantes.
Miranda Test Generator automatiza este proceso: lee las firmas de tipo de las funciones Miranda e infiere automáticamente qué valores son relevantes para testear, separando los casos típicos de los casos borde.
Aspectos de Ingeniería de Software
El plugin aborda los siguientes conceptos:
- Testing automatizado: generación de casos de prueba sin intervención manual
- TDD (Test-Driven Development): facilita escribir tests desde el inicio del desarrollo
- Análisis estático: el plugin parsea el código fuente sin ejecutarlo
- Calidad de software: promueve buenas prácticas de verificación desde el editor
Funcionalidades
1. Análisis de firmas
El plugin lee la firma de tipo de cada función en el archivo Miranda:
factorial :: num -> num
E infiere el tipo de cada parámetro para generar inputs relevantes.
2. Generación de casos de prueba por tipo
| Tipo Miranda |
Casos generados |
num |
0, 1, -1, 5, 100, -100 |
bool |
True, False |
char |
'a', 'z', ' ', '0' |
string / [char] |
"hello", "", "a", "test string" |
[num] (listas) |
[], [1], [1,2,3], [1..5] |
float |
0.0, 1.5, -1.5, 3.14 |
Para funciones con múltiples parámetros, genera el producto cartesiano de todas las combinaciones.
3. Separación de casos típicos y borde
Los casos se clasifican automáticamente:
- Casos típicos: valores normales de uso (
1, 5, "hello", [1,2,3])
- Casos borde: valores límite o problemáticos (
0, -1, "", [], -100)
4. Archivo de tests generado
Los tests se escriben en un archivo nombre_tests.mira en la misma carpeta que el archivo original, con comentarios explicativos.
5. Integración con VS Code
- Comando
Miranda: Generate Tests disponible en el Command Palette (⌘+Shift+P)
- Opción "Miranda: Generate Tests" en el menú contextual al hacer clic derecho sobre un archivo
.mira
- Notificación con opción de abrir el archivo generado directamente
Instalación y uso en desarrollo
Requisitos previos
- Visual Studio Code v1.100.0 o superior
- Node.js v18 o superior
- npm
Pasos
1. Clonar el repositorio
git clone https://github.com/IngSoft-IOS-2026-1/miranda-test-generator
cd miranda-test-generator
2. Instalar dependencias
npm install
3. Compilar
npm run compile
4. Ejecutar en modo desarrollo
Abrí la carpeta del proyecto en VS Code y ejecutá:
code --extensionDevelopmentPath=$(pwd)
O desde VS Code: Run → Start Debugging (F5)
Cómo usar
Opción A — Command Palette
- Abrí un archivo
.mira en VS Code
- Presioná
⌘+Shift+P
- Escribí
Miranda: Generate Tests
- Presioná Enter
Opción B — Menú contextual
- En el explorador de archivos, hacé clic derecho sobre un archivo
.mira
- Seleccioná "Miranda: Generate Tests"
En ambos casos, el plugin genera un archivo nombre_tests.mira en la misma carpeta y te ofrece abrirlo directamente.
Ejemplo de uso
Archivo de entrada: funciones.mira
factorial :: num -> num
factorial 0 = 1
factorial n = n * factorial (n-1)
esPar :: num -> bool
esPar n = n mod 2 = 0
concatenar :: [char] -> [char] -> [char]
concatenar xs ys = xs ++ ys
Archivo generado: funciones_tests.mira
|| ============================================
|| Tests generados para: funciones.mira
|| Generado por Miranda Test Generator
|| ============================================
|| --- factorial :: num -> num ---
|| Casos típicos
|| Test: factorial 1
factorial 1
|| Test: factorial 5
factorial 5
|| Test: factorial 100
factorial 100
|| Casos borde
|| Test: factorial 0
factorial 0
|| Test: factorial -1
factorial -1
|| Test: factorial -100
factorial -100
|| --- esPar :: num -> bool ---
|| Casos típicos
|| Test: esPar 1
esPar 1
|| Test: esPar 5
esPar 5
|| Casos borde
|| Test: esPar 0
esPar 0
|| Test: esPar -1
esPar -1
|| --- concatenar :: [char] -> [char] -> [char] ---
|| Casos típicos
|| Test: concatenar "hello" "hello"
concatenar "hello" "hello"
|| Test: concatenar "hello" "a"
concatenar "hello" "a"
|| Casos borde
|| Test: concatenar "" ""
concatenar "" ""
|| Test: concatenar "hello" ""
concatenar "hello" ""
Estructura del proyecto
miranda-test-generator/
├── src/
│ ├── extension.ts # Punto de entrada, registro de comandos
│ ├── parser.ts # Parsea firmas de funciones Miranda
│ ├── generator.ts # Genera casos de prueba por tipo
│ └── fileWriter.ts # Escribe el archivo .mira de tests
├── .vscode/
│ ├── launch.json # Configuración de debugging
│ └── tasks.json # Tareas de compilación
├── package.json # Manifiesto de la extensión
└── tsconfig.json # Configuración TypeScript
Tecnologías utilizadas
- TypeScript — lenguaje principal de la extensión
- VS Code Extension API — integración con el editor
- esbuild — bundler para compilación
- Node.js — entorno de ejecución
Violeta Clerc - 233379
Desarrollado como trabajo práctico para la materia Ingeniería de Software Colaborativa en Proyectos de Código Abierto — ORT Uruguay.