En aquest tema, aprendrem com assegurar-nos que el nostre codi Dart funciona correctament mitjançant proves i depuració. Aquest procés és essencial per garantir la qualitat del programari i detectar errors abans que arribin als usuaris finals.
Continguts
Introducció a les Proves
Les proves són una part fonamental del desenvolupament de programari. Ens ajuden a verificar que el nostre codi funciona com s'espera i a detectar errors abans que es converteixin en problemes més grans.
Beneficis de les Proves
- Detecció primerenca d'errors: Les proves permeten identificar errors en les primeres fases del desenvolupament.
- Millora de la qualitat del codi: Escriure proves fomenta la creació de codi més net i mantenible.
- Facilitat de refactorització: Amb proves adequades, podem refactoritzar el codi amb confiança, sabent que les proves ens alertaran si alguna cosa es trenca.
Tipus de Proves
Hi ha diversos tipus de proves que podem utilitzar en el desenvolupament de programari:
- Proves Unitàries: Verifiquen el funcionament de components individuals del codi, com ara funcions o mètodes.
- Proves d'Integració: Verifiquen que diferents components del sistema funcionen correctament junts.
- Proves de Sistema: Verifiquen el sistema complet per assegurar-se que compleix els requisits especificats.
- Proves d'Acceptació: Verifiquen que el sistema compleix les necessitats i expectatives dels usuaris finals.
Escriptura de Proves Unitàries
Les proves unitàries són essencials per assegurar-nos que cada part del nostre codi funciona correctament de manera aïllada. En Dart, podem utilitzar el paquet test
per escriure i executar proves unitàries.
Instal·lació del Paquet test
Per començar a escriure proves unitàries, primer hem d'instal·lar el paquet test
. Afegim la següent dependència al nostre fitxer pubspec.yaml
:
Després, executem pub get
per instal·lar el paquet.
Exemple de Prova Unitària
A continuació, es mostra un exemple de com escriure una prova unitària en Dart:
import 'package:test/test.dart'; int suma(int a, int b) { return a + b; } void main() { test('La funció suma ha de retornar la suma de dos nombres', () { expect(suma(2, 3), equals(5)); }); }
Explicació del Codi
- Importació del paquet
test
: Importem el paquettest
per utilitzar les seves funcions. - Funció
suma
: Definim una funció simple que suma dos nombres. - Funció
main
: Definim una prova que verifica que la funciósuma
retorna el resultat correcte.
Escriptura de Proves d'Integració
Les proves d'integració verifiquen que diferents components del sistema funcionen correctament junts. Aquestes proves són més complexes que les proves unitàries, però són igualment importants.
Exemple de Prova d'Integració
A continuació, es mostra un exemple de com escriure una prova d'integració en Dart:
import 'package:test/test.dart'; class Calculadora { int suma(int a, int b) { return a + b; } int resta(int a, int b) { return a - b; } } void main() { group('Proves d\'integració de la classe Calculadora', () { final calculadora = Calculadora(); test('La funció suma ha de retornar la suma de dos nombres', () { expect(calculadora.suma(2, 3), equals(5)); }); test('La funció resta ha de retornar la resta de dos nombres', () { expect(calculadora.resta(5, 3), equals(2)); }); }); }
Explicació del Codi
- Classe
Calculadora
: Definim una classe amb dues funcions:suma
iresta
. - Funció
main
: Definim un grup de proves que verifiquen el funcionament de la classeCalculadora
.
Depuració del Codi
La depuració és el procés de trobar i corregir errors en el codi. Dart proporciona diverses eines per ajudar-nos a depurar el nostre codi de manera eficient.
Eines de Depuració
- print: La funció
print
és una eina simple però efectiva per depurar el codi. Podem utilitzar-la per imprimir valors i missatges en la consola. - Debugger: Dart inclou un depurador integrat que ens permet establir punts de ruptura, inspeccionar variables i executar el codi pas a pas.
- IDE: La majoria dels entorns de desenvolupament integrats (IDE) com Visual Studio Code i IntelliJ IDEA tenen suport per a la depuració de codi Dart.
Exemple de Depuració amb print
void main() { int a = 5; int b = 3; int resultat = suma(a, b); print('El resultat de la suma és: $resultat'); } int suma(int a, int b) { return a + b; }
Exemple de Depuració amb el Depurador
- Establir un punt de ruptura: Col·loquem un punt de ruptura en la línia on volem aturar l'execució del codi.
- Executar el codi en mode de depuració: Executem el codi en mode de depuració des de l'IDE.
- Inspeccionar variables: Utilitzem el depurador per inspeccionar el valor de les variables i seguir l'execució del codi pas a pas.
Exercicis Pràctics
Exercici 1: Escriure Proves Unitàries
Escriu proves unitàries per a la següent funció que calcula el factorial d'un nombre:
Solució
import 'package:test/test.dart'; int factorial(int n) { if (n <= 1) return 1; return n * factorial(n - 1); } void main() { test('La funció factorial ha de retornar el factorial d\'un nombre', () { expect(factorial(5), equals(120)); expect(factorial(0), equals(1)); expect(factorial(1), equals(1)); }); }
Exercici 2: Depurar el Codi
Depura el següent codi per trobar i corregir l'error:
void main() { int a = 5; int b = 3; int resultat = resta(a, b); print('El resultat de la resta és: $resultat'); } int resta(int a, int b) { return a + b; // Error: hauria de ser a - b }
Solució
void main() { int a = 5; int b = 3; int resultat = resta(a, b); print('El resultat de la resta és: $resultat'); } int resta(int a, int b) { return a - b; // Correcció: ara resta correctament }
Conclusió
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 i d'integració, així com utilitzar eines de depuració per trobar i corregir errors en el nostre codi. Aquestes habilitats són essencials per garantir la qualitat i la fiabilitat del nostre programari.
Curs de Programació en Dart
Mòdul 1: Introducció a Dart
- Introducció a Dart
- Configuració de l'Entorn de Desenvolupament
- El Teu Primer Programa en Dart
- Sintaxi i Estructura Bàsica
Mòdul 2: Conceptes Bàsics de Dart
Mòdul 3: Col·leccions
Mòdul 4: Programació Orientada a Objectes en Dart
Mòdul 5: Funcionalitats Avançades de Dart
Mòdul 6: Gestió d'Errors i Depuració
Mòdul 7: Paquets i Biblioteques de Dart
Mòdul 8: Dart per a Web i Mòbil
- Introducció a Flutter
- Construcció d'una Aplicació Simple amb Flutter
- Dart per al Desenvolupament Web