• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Estadística
      • Calculadora del Tamaño Muestral en Encuestas
      • Calculadora de estadísticos descriptivos
      • Test de normalidad
      • Calculadora de contrastes de hipotesis
      • Calculadora de tamano del efecto
      • Simulador de Regresión Lineal con Ruido
      • Visualizador de PCA
      • Visualizador de Series Temporales
      • Simulador de Regresión Logística
      • Simulador de K-Means
      • Simulador de DBSCAN
      • Detector de la Ley de Benford
    • Probabilidad
      • Calculadora de Probabilidad de Distribuciones
      • Calculadora de Probabilidades de Lotería
      • Simulador del Problema de Monty Hall
      • Simulador de la Estrategia Martingala
    • Finanzas
      • Calculadora de Préstamos e Hipotecas
      • Conversor TIN ↔ TAE
      • Calculadora DCA con ajuste por inflación
      • Calculadora XIRR con Flujos Irregulares
      • Simulador FIRE (Financial Independence, Retire Early)
    • Negocios
      • CLV
      • Scoring
    • Herramientas
      • Formateador / Minificador de JSON
      • Conversor CSV ↔ JSON
      • Comparador y Formateador de Texto y JSON
      • Formateador y Tester de Expresiones Regulares
      • Inspector de JWT
      • Generador y verificador de hashes
      • Codificador / Decodificador Base64 y URL
      • Conversor de bases numericas
      • Conversor de Timestamp Unix
      • Conversor de colores
      • Generador de UUIDs
    • Juegos
      • Tres en Raya
      • Nim con Q-Learning
    • Más
      • Método D’Hondt
      • Generador de Contraseñas Seguras
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • R
  • Excel

Cobertura de las pruebas unitarias en JavaScript (Creación de una librería JavaScript 5ª parte)

marzo 8, 2019 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 4 minutos

JavaScript

Medir la cobertura de las pruebas unitarias en JavaScript es clave para garantizar que se está probando todo el código. Esto es lo que se explicará en la quinta entrega de la serie en la que se enseña a crear una librería JavaScript.

Esta entrada pertenece a la serie “Creación de una librería JavaScript” cuyo código se puede encontrar en la cuenta de GitHub de Analytics Lane. Serie compuesta por las siguientes entradas:

  • Creación de una librería JavaScript
  • Estructurar las funciones JavaScript
  • Pruebas unitarias en JavaScript
  • Rango en pruebas unitarias en JavaScript
  • Cobertura de las pruebas unitarias en JavaScript
  • Medir la calidad del código JavaScript
  • Compresión del código JavaScript
  • Ejecutar múltiples scripts npm

Instalación de los módulos

Para medir y probar la cobertura de las pruebas unitarias una de las herramientas más poderosas es Istanbul. La forma más rápida de probar esto en node es importando el módulo ncy, que es la interfaz de línea de comandos de Istanbul. La instalación del módulo se realiza con npm como en el resto de los casos.

npm install nyc --save-dev

Una vez ejecutada esta línea se instalará el paquete y se agregará a la lista de dependencias.

Ejecutar las pruebas unitarias con Istanbul

En primer lugar, es necesario ejecutar las pruebas unitarias con Istanbul para poder obtener un informe de cobertura. La forma más fácil de hacer esto es con la siguiente línea de código.

Analytics Lane lanza su Conversor TIN ↔ TAE: la herramienta definitiva para entender el coste real de depósitos, préstamos e hipotecas
En Analytics Lane
Analytics Lane lanza su Conversor TIN ↔ TAE: la herramienta definitiva para entender el coste real de depósitos, préstamos e hipotecas

nyc npm test

Así se ejecutará el script con las pruebas unitarias obteniéndose el siguiente informe.

------------|----------|----------|----------|----------|-------------------|
File        |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
------------|----------|----------|----------|----------|-------------------|
All files   |    95.45 |       50 |      100 |    95.45 |                   |
 jslane     |      100 |      100 |      100 |      100 |                   |
  index.js  |      100 |      100 |      100 |      100 |                   |
 jslane/lib |    95.24 |       50 |      100 |    95.24 |                   |
  array.js  |    94.44 |       50 |      100 |    94.44 |                35 |
  jslane.js |      100 |      100 |      100 |      100 |                   |
------------|----------|----------|----------|----------|-------------------|

En este se puede ver que la línea 35 del archivo array.js no se ejecuta en las pruebas unitarias. Lo que significa el nivel de cobertura de todo el proyecto a nivel de líneas es del 95,45%, el 100% de las funciones y el 50% de las ramas.

Este informe no es fácil de interpretar cuando el proyecto crece. El número de líneas sin cobertura puede ser tal que únicamente se puedan mostrar una pocas. El informe se puede modificar con la opción --reporter, pudiendo exportar este en un archivo HTML con la opción lcov. Así el siguiente comando creará una carpeta lcov-report con el informe navegable.

nyc --reporter=lcov npm test

Al abrir el informe en el navegador se observa la siguiente

Informe de cobertura en formato HTML
Informe de cobertura en formato HTML

Pudiéndose comprobar las líneas que no se prueban en durante las pruebas unitarias.

Informe de la cobertura de las pruebas unitarias en cada línea del programa.
Informe de la cobertura de las pruebas unitarias en cada línea del programa.

Publicidad


Comprobando el grado de cobertura

ncy permite probar el grado de cobertura de las pruebas unitarias. En caso de que no se alcance un mínimo las prueba fallará. Para ello se puede ejecutar el siguiente comando después de haber lanzado las pruebas con Istanbul.

nyc check-coverage --lines 95 --functions 95 --branches 95

En este ejemplo se pide que el nivel de cobertura sea como mínimo del 95% a nivel de línea, funciones y ramas. Si una sola de las métricas en inferior se producirá un error. Revisando el informe anterior se puede ver que a nivel de rama no se llega al mínimo indicado.

Mejorado el grado de cobertura

Para superar el grado de cobertura simplemente es necesario escribir una prueba que evalúe la función multiply sin segundo parámetro. Lo que se puede conseguir con la siguiente aserción.

expect(jslane.array.multiply([1, 1, 1])).to.deep.equal([1, 1, 1]);

Si ahora se ejecuta el comando nyc npm test se puede observar que el nivel de cobertura es ahora del 100%. Por lo tanto, las pruebas de cobertura anteriores se superarán en este caso.

------------|----------|----------|----------|----------|-------------------|
File        |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
------------|----------|----------|----------|----------|-------------------|
All files   |      100 |      100 |      100 |      100 |                   |
 jslane     |      100 |      100 |      100 |      100 |                   |
  index.js  |      100 |      100 |      100 |      100 |                   |
 jslane/lib |      100 |      100 |      100 |      100 |                   |
  array.js  |      100 |      100 |      100 |      100 |                   |
  jslane.js |      100 |      100 |      100 |      100 |                   |
------------|----------|----------|----------|----------|-------------------|

Creación de nuevos scripts

Conocer el grado de cobertura de las pruebas es importante a la hora de medir la calidad del código. Por eso es aconsejable crear dos nuevos scripts en el archivo pasckage.json con los que se puede automatizar estas tareas. Uno de ellos puede ser coverage en el que ejecutan las pruebas unitarias con ncy, es decir, lanzar el comando nyc --reporter=lcov npm test. El segundo se puede denominar checkCoverage, en el que puede comprobar si se alcanza un mínimo de cobertura con el comando nyc check-coverage --lines 95 --functions 95 --branches 95

Publicidad


Conclusiones

En esta quinta entrega se ha visto cómo medir la cobertura de las pruebas unitarias en JavaScript. Otro punto importante a la hora de medir la calidad del código.

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 0 / 5. Votos emitidos: 0

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicaciones relacionadas

  • Subplots en Matplotlib: cómo organizar múltiples gráficos en una sola figura
  • Cómo comparar datos con barras en Matplotlib: agrupadas, apiladas y porcentuales
  • Ley de Benford: cómo detectar datos manipulados con ejemplos reales
  • Costes hundidos en ciencia de datos: cuándo mantener un modelo y cuándo migrar
  • Lanzamiento de la versión 1.0 del laboratorio de Analytics Lane con nuevas herramientas de scoring
  • Síndrome del objeto brillante en ciencia de datos: el error simétrico a los costes hundidos
  • WOE e IV: La Base Matemática del Credit Scoring
  • De la Regresión Logística al Scorecard: La Transformación Matemática
  • Interés compuesto: la fuerza que multiplica tu dinero (y los errores que la anulan)

Publicado en: JavaScript Etiquetado como: Node, Unit testing

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Ley de Benford: cómo detectar datos manipulados con ejemplos reales

mayo 28, 2026 Por Daniel Rodríguez

Subplots en Matplotlib: cómo organizar múltiples gráficos en una sola figura

mayo 26, 2026 Por Daniel Rodríguez

Síndrome del objeto brillante en ciencia de datos: el error simétrico a los costes hundidos

mayo 21, 2026 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Número óptimo de clústeres con Silhouette e implementación en Python publicado el junio 23, 2023 | en Ciencia de datos
  • Gráfico de densidad con relleno y escala de colores para el conjunto de 500 datos Gráficos de densidad: alternativa a los gráficos de dispersión en Python publicado el marzo 27, 2023 | en Python
  • Instalar Rocky Linux 9 en VirtualBox publicado el octubre 20, 2023 | en Herramientas
  • Cómo solucionar problemas de red en VirtualBox: Guía completa publicado el junio 11, 2025 | en Herramientas
  • Codificación JSON Archivos JSON con Python: lectura y escritura publicado el julio 16, 2018 | en Python

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.9 (11)

Pandas: Cambiar los tipos de datos en los DataFrames

Comentarios recientes

  • bif en JSON en bases de datos: cuándo es buena idea y cuándo no
  • bif en Cómo desinstalar Oracle Database 19c en Windows
  • M. Pilar en Cómo eliminar las noticias en Windows 11 y recuperar tu concentración
  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2026 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto