En aquest tema, explorarem les tècniques i eines per a la depuració i les proves en Ada. La depuració i les proves són parts essencials del cicle de desenvolupament de programari, ja que ens ajuden a identificar i corregir errors, així com a assegurar-nos que el nostre codi funcioni correctament sota diferents condicions.

  1. Introducció a la Depuració

1.1 Què és la Depuració?

La depuració és el procés de trobar i corregir errors (bugs) en el codi. Els errors poden ser de diversos tipus, com ara errors de sintaxi, errors lògics o errors d'execució.

1.2 Eines de Depuració

Algunes eines comunes per a la depuració en Ada inclouen:

  • GDB (GNU Debugger): Una eina de depuració potent que es pot utilitzar amb Ada.
  • GPS (GNAT Programming Studio): Un entorn de desenvolupament integrat (IDE) que inclou eines de depuració.

  1. Tècniques de Depuració

2.1 Depuració amb GDB

GDB és una eina de depuració de línia de comandes que permet inspeccionar el codi durant l'execució. A continuació es mostra un exemple bàsic d'ús de GDB amb Ada.

Exemple de Depuració amb GDB

-- fitxer: hello.adb
with Ada.Text_IO; use Ada.Text_IO;

procedure Hello is
begin
   Put_Line("Hola, món!");
end Hello;

Per compilar i depurar aquest programa amb GDB:

  1. Compila el programa amb GNAT:

    gnatmake -g hello.adb
    

    L'opció -g inclou informació de depuració.

  2. Inicia GDB:

    gdb hello
    
  3. A GDB, pots utilitzar comandes com break, run, next, step i print per depurar el programa:

    (gdb) break hello.adb:5
    (gdb) run
    (gdb) next
    (gdb) print variable_name
    

2.2 Depuració amb GPS

GPS és un IDE que proporciona una interfície gràfica per a la depuració. Pots establir punts de ruptura, inspeccionar variables i executar el codi pas a pas.

  1. Proves en Ada

3.1 Tipus de Proves

  • Proves Unitàries: Proves que verifiquen el funcionament de components individuals del codi.
  • Proves d'Integració: Proves que verifiquen la interacció entre diferents components.
  • Proves de Sistema: Proves que verifiquen el sistema complet en un entorn que simula les condicions reals d'ús.

3.2 Eines de Proves

  • AUnit: Un marc de proves unitàries per a Ada, similar a JUnit per a Java.

Exemple de Prova Unitària amb AUnit

-- fitxer: test_hello.adb
with AUnit.Test_Cases; use AUnit.Test_Cases;
with Ada.Text_IO; use Ada.Text_IO;

procedure Test_Hello is
   type My_Test_Case is new Test_Case with null record;

   procedure Run (Test : in out My_Test_Case) is
   begin
      Put_Line("Hola, món!");
      -- Aquí podríem afegir asserts per verificar el comportament
   end Run;

begin
   Test_Cases.Register_Test_Case(My_Test_Case'Access);
end Test_Hello;

Per executar les proves:

  1. Compila el programa de proves:

    gnatmake test_hello.adb
    
  2. Executa el programa de proves:

    ./test_hello
    

  1. Consells i Bones Pràctiques

4.1 Escriu Proves Regularment

Escriu proves per a cada nova funcionalitat que implementis. Això t'ajudarà a detectar errors de manera precoç.

4.2 Utilitza Punts de Ruptura Estratègics

Estableix punts de ruptura en llocs clau del teu codi per inspeccionar l'estat del programa durant l'execució.

4.3 Revisa els Missatges d'Error

Llegeix i interpreta els missatges d'error amb cura. Sovint proporcionen pistes valuoses sobre la causa dels errors.

  1. Exercicis Pràctics

Exercici 1: Depuració amb GDB

  1. Escriu un programa Ada que calculi la suma dels primers 10 nombres naturals.
  2. Compila el programa amb l'opció -g.
  3. Utilitza GDB per establir un punt de ruptura al començament del bucle i inspecciona el valor de la variable de suma en cada iteració.

Exercici 2: Proves Unitàries amb AUnit

  1. Escriu una funció Ada que calculi el factorial d'un nombre.
  2. Escriu una prova unitària per a aquesta funció utilitzant AUnit.
  3. Compila i executa la prova per assegurar-te que la funció funciona correctament.

  1. Conclusió

La depuració i les proves són components essencials del desenvolupament de programari. Utilitzant les eines i tècniques adequades, pots identificar i corregir errors de manera eficient, així com assegurar-te que el teu codi compleix amb els requisits especificats. Practica regularment aquestes habilitats per millorar la qualitat del teu codi i la teva eficiència com a programador.

© Copyright 2024. Tots els drets reservats