</> CodeBooks
    ← Volver a JavaScript (página 8)
    Portada de Testable JavaScript

    Testable JavaScript

    Mark Ethan Trostler

    Editorial
    O'Reilly
    Año
    2013
    Páginas
    ~274
    Nivel
    Intermedio

    De qué trata

    Libro de Mark Ethan Trostler, ingeniero de pruebas en Yahoo! Mail y después en Google, sobre cómo escribir y mantener JavaScript fácil de probar, tanto en el navegador como en Node.js y tanto en proyectos nuevos como al reescribir código heredado. Se publicó en 2013, en la era de ES5 y del ecosistema de pruebas de entonces (YUI Test, Jasmine, PhantomJS, Selenium). Está dirigido a desarrolladores JavaScript con experiencia que quieren mejorar la calidad y la mantenibilidad de su código.

    Empieza situando el libro frente al desarrollo ágil, TDD y BDD, y después ataca la complejidad. Explica cómo medirla (tamaño del código, complejidad ciclomática, fan-in y fan-out, tipos y métricas de acoplamiento, JSLint), cómo reducirla con inyección de dependencias y cómo documentar con YUIDoc, JSDoc o Docco. Luego propone las arquitecturas basadas en eventos, con un «event hub» y un «event switch», como vía para lograr módulos desacoplados y fáciles de probar. En la parte práctica cubre los tests unitarios: aislamiento, pruebas positivas y negativas, dobles, mocks, stubs y espías, pruebas asíncronas con YUI Test, ejecución en el navegador con PhantomJS y Selenium (incluido iOS y Android) y en el servidor con Jasmine. También trata la cobertura de código (instrumentación, persistencia, agregación y objetivos); las pruebas de integración con Selenium WebDriver y Grid y con CasperJS, las de rendimiento con archivos HAR y las de carga; la depuración en Firefox, Chrome, Safari, Internet Explorer, Node.js, de forma remota y en móviles (Android, iOS, Adobe Edge Inspect), además de la depuración en producción con source maps; y la automatización con integración continua en Jenkins, hooks de commit y análisis de complejidad y código duplicado.

    No se construye una aplicación: el libro avanza con ejemplos de código y montajes de herramientas, algo que algunos lectores describen como un catálogo de sistemas de pruebas. Su aporte más duradero son los capítulos conceptuales sobre complejidad, acoplamiento, inyección de dependencias y arquitecturas por eventos, que siguen siendo válidos. En cambio, las herramientas han envejecido mucho: YUI y PhantomJS se abandonaron y hoy se usan Jest, Vitest, Playwright, Istanbul/c8 o GitHub Actions. Los lectores señalan que el capítulo de cobertura cuesta seguirlo y que integración, rendimiento y carga están comprimidos en uno solo. Conviene leerlo por los principios y traducir mentalmente las herramientas a sus equivalentes actuales.

    • Código testeable
    • TDD y BDD
    • Complejidad ciclomática
    • Acoplamiento
    • Inyección de dependencias
    • Arquitectura basada en eventos
    • Tests unitarios
    • Mocks, stubs y espías
    • Cobertura de código
    • Selenium y CasperJS
    • Depuración
    • Integración continua con Jenkins

    ¿Cómo enseña?

    TeóricoPráctico

    Teoría + práctica

    • ✗ Sin ejercicios
    • ✗ Sin proyectos

    Más de JavaScript con nivel Intermedio