En aquesta secció, aprendrem com assegurar-nos que el nostre projecte final funcioni correctament mitjançant proves i depuració. Aquest procés és crucial per garantir que el nostre codi sigui robust, fiable i lliure d'errors.
Objectius d'Aprenentatge
- Comprendre la importància de les proves i la depuració.
- Aprendre a escriure proves unitàries i d'integració.
- Utilitzar eines de depuració per identificar i corregir errors.
- Implementar proves de cap a cap per assegurar-se que el projecte funcioni com s'espera en un entorn real.
- Importància de les Proves i la Depuració
Per què són importants les proves?
- Qualitat del Codi: Les proves ajuden a mantenir la qualitat del codi, assegurant que cada part del programa funcioni com s'espera.
- Prevenció d'Errors: Identifiquen errors abans que arribin a producció, evitant problemes potencials per als usuaris finals.
- Facilitat de Manteniment: Un codi ben provat és més fàcil de mantenir i actualitzar, ja que les proves poden detectar si els canvis introdueixen nous errors.
Per què és important la depuració?
- Identificació d'Errors: La depuració permet identificar i corregir errors en el codi.
- Comprensió del Codi: Ajuda a comprendre millor com funciona el codi, facilitant la resolució de problemes.
- Millora del Rendiment: Pot ajudar a identificar i solucionar problemes de rendiment.
- Proves Unitàries
Què són les proves unitàries?
Les proves unitàries són proves que verifiquen el funcionament correcte de components individuals del codi, com ara funcions o mètodes.
Eina Recomanada: Jest
Jest és una eina de proves unitàries popular per a JavaScript.
Exemple de Prova Unitària amb Jest
// funcions.js function suma(a, b) { return a + b; } module.exports = suma; // funcions.test.js const suma = require('./funcions'); test('suma de 1 + 2 és igual a 3', () => { expect(suma(1, 2)).toBe(3); });
Com executar les proves amb Jest
- Instal·la Jest:
npm install --save-dev jest
- Afegeix un script al teu
package.json
:"scripts": { "test": "jest" }
- Executa les proves:
npm test
- Proves d'Integració
Què són les proves d'integració?
Les proves d'integració verifiquen que diferents components del sistema funcionin correctament junts.
Exemple de Prova d'Integració
// api.js const express = require('express'); const app = express(); app.get('/suma', (req, res) => { const { a, b } = req.query; const resultat = parseInt(a) + parseInt(b); res.send({ resultat }); }); module.exports = app; // api.test.js const request = require('supertest'); const app = require('./api'); test('GET /suma retorna la suma de dos números', async () => { const res = await request(app).get('/suma?a=1&b=2'); expect(res.body.resultat).toBe(3); });
Com executar les proves d'integració
- Instal·la Supertest:
npm install --save-dev supertest
- Executa les proves amb Jest com abans:
npm test
- Proves de Cap a Cap (E2E)
Què són les proves de cap a cap?
Les proves de cap a cap simulen el comportament de l'usuari per verificar que tot el sistema funcioni correctament des del principi fins al final.
Eina Recomanada: Cypress
Cypress és una eina popular per a proves de cap a cap.
Exemple de Prova de Cap a Cap amb Cypress
// cypress/integration/test.spec.js describe('Prova de Cap a Cap', () => { it('Visita la pàgina principal i comprova el títol', () => { cy.visit('http://localhost:3000'); cy.title().should('include', 'Títol de la Pàgina'); }); });
Com executar les proves amb Cypress
- Instal·la Cypress:
npm install --save-dev cypress
- Afegeix un script al teu
package.json
:"scripts": { "cypress:open": "cypress open" }
- Executa Cypress:
npm run cypress:open
- Depuració
Eines de Depuració
- Consola del Navegador: Utilitza
console.log
per imprimir valors i seguir el flux del codi. - Depurador del Navegador: Utilitza punts de ruptura (breakpoints) per aturar l'execució del codi i inspeccionar l'estat actual.
Exemple de Depuració amb console.log
function suma(a, b) { console.log('a:', a, 'b:', b); // Afegir un log per veure els valors return a + b; }
Depuració amb Breakpoints
- Obre les DevTools del navegador (F12 o clic dret -> Inspeccionar).
- Navega a la pestanya "Sources" (Fonts).
- Troba el fitxer JavaScript que vols depurar.
- Fes clic al número de línia on vols afegir un breakpoint.
- Executa el codi i el navegador s'aturarà en el breakpoint, permetent-te inspeccionar variables i l'estat del programa.
Resum
En aquesta secció, hem après la importància de les proves i la depuració en el desenvolupament de programari. Hem vist com escriure proves unitàries, d'integració i de cap a cap utilitzant eines com Jest, Supertest i Cypress. També hem explorat tècniques de depuració utilitzant la consola i els breakpoints del navegador. Amb aquestes habilitats, estàs preparat per assegurar-te que el teu projecte final funcioni correctament i sigui robust davant errors.
JavaScript: De Principiant a Avançat
Mòdul 1: Introducció a JavaScript
- Què és JavaScript?
- Configuració del Teu Entorn de Desenvolupament
- El Teu Primer Programa en JavaScript
- Sintaxi i Conceptes Bàsics de JavaScript
- Variables i Tipus de Dades
- Operadors Bàsics
Mòdul 2: Estructures de Control
- Declaracions Condicionals
- Bucles: for, while, do-while
- Declaracions Switch
- Gestió d'Errors amb try-catch
Mòdul 3: Funcions
- Definició i Crida de Funcions
- Expressions de Funció i Funcions Fletxa
- Paràmetres i Valors de Retorn
- Àmbit i Tancaments
- Funcions d'Ordre Superior
Mòdul 4: Objectes i Arrays
- Introducció als Objectes
- Mètodes d'Objecte i Paraula Clau 'this'
- Arrays: Conceptes Bàsics i Mètodes
- Iteració sobre Arrays
- Desestructuració d'Arrays
Mòdul 5: Objectes i Funcions Avançades
- Prototips i Herència
- Classes i Programació Orientada a Objectes
- Mòduls i Importació/Exportació
- JavaScript Asíncron: Callbacks
- Promeses i Async/Await
Mòdul 6: El Model d'Objectes del Document (DOM)
- Introducció al DOM
- Selecció i Manipulació d'Elements del DOM
- Gestió d'Esdeveniments
- Creació i Eliminació d'Elements del DOM
- Gestió i Validació de Formularis
Mòdul 7: APIs del Navegador i Temes Avançats
- Emmagatzematge Local i de Sessió
- Fetch API i AJAX
- WebSockets
- Service Workers i Aplicacions Web Progressives (PWAs)
- Introducció a WebAssembly
Mòdul 8: Proves i Depuració
- Depuració de JavaScript
- Proves Unitàries amb Jest
- Proves d'Integració
- Proves de Cap a Cap amb Cypress
Mòdul 9: Rendiment i Optimització
- Optimització del Rendiment de JavaScript
- Gestió de Memòria
- Manipulació Eficient del DOM
- Càrrega Per Mandat i Divisió de Codi
Mòdul 10: Frameworks i Llibreries de JavaScript
- Introducció a React
- Gestió d'Estat amb Redux
- Conceptes Bàsics de Vue.js
- Conceptes Bàsics d'Angular
- Triar el Framework Adequat