En aquest mòdul, aprendrem com assegurar-nos que el nostre codi RPG funcioni correctament mitjançant tècniques de proves i depuració. Aquestes habilitats són essencials per a qualsevol programador, ja que ajuden a identificar i corregir errors, millorant la qualitat del codi i assegurant que les aplicacions funcionin com s'espera.

Objectius del Mòdul

  • Entendre la importància de les proves i la depuració.
  • Aprendre diferents tipus de proves.
  • Utilitzar eines de depuració per identificar i corregir errors.
  • Aplicar millors pràctiques per a la depuració de codi.

  1. Importància de les Proves i la Depuració

Per què són importants les proves?

  • Qualitat del Codi: Les proves ajuden a garantir que el codi compleixi amb els requisits especificats.
  • Fiabilitat: Redueixen la probabilitat d'errors en producció.
  • Mantenibilitat: Faciliten la identificació de problemes i la seva correcció.

Per què és important la depuració?

  • Identificació d'Errors: Permet trobar i corregir errors en el codi.
  • Comprensió del Codi: Ajuda a entendre com funciona el codi i per què es produeixen errors.
  • Millora del Rendiment: Pot ajudar a optimitzar el codi per millorar el rendiment.

  1. Tipus de Proves

Proves Unitàries

  • Descripció: Proves que es fan a nivell de funció o mòdul per assegurar-se que cada part del codi funciona correctament de manera independent.
  • Exemple:
    // Funció per sumar dos números
    Dcl-Proc Sumar;
      Dcl-Pi *N Int(10);
        num1 Int(10);
        num2 Int(10);
      End-Pi;
    
      Return num1 + num2;
    End-Proc;
    
    // Prova unitària per la funció Sum
    Dcl-Proc ProvaSumar;
      Dcl-S num1 Int(10) Inz(5);
      Dcl-S num2 Int(10) Inz(10);
      Dcl-S resultat Int(10);
    
      resultat = Sum(num1: num2);
      If resultat <> 15;
        Dsply 'Error: La funció Sumar no funciona correctament';
      Else;
        Dsply 'Prova superada';
      EndIf;
    End-Proc;
    

Proves d'Integració

  • Descripció: Proves que es fan per assegurar-se que diferents mòduls o components del sistema funcionen correctament junts.
  • Exemple:
    // Funció per restar dos números
    Dcl-Proc Restar;
      Dcl-Pi *N Int(10);
        num1 Int(10);
        num2 Int(10);
      End-Pi;
    
      Return num1 - num2;
    End-Proc;
    
    // Prova d'integració per les funcions Sum i Restar
    Dcl-Proc ProvaIntegracio;
      Dcl-S num1 Int(10) Inz(20);
      Dcl-S num2 Int(10) Inz(10);
      Dcl-S resultatSum Int(10);
      Dcl-S resultatRestar Int(10);
    
      resultatSum = Sum(num1: num2);
      resultatRestar = Restar(num1: num2);
    
      If resultatSum <> 30 Or resultatRestar <> 10;
        Dsply 'Error: Les funcions no funcionen correctament junts';
      Else;
        Dsply 'Prova d\'integració superada';
      EndIf;
    End-Proc;
    

Proves de Sistema

  • Descripció: Proves que es fan per assegurar-se que el sistema complet funciona correctament en el seu conjunt.
  • Exemple: Provar una aplicació completa de gestió d'inventari per assegurar-se que totes les funcionalitats (afegir, eliminar, modificar, consultar) funcionen correctament.

Proves d'Acceptació

  • Descripció: Proves que es fan per assegurar-se que el sistema compleix amb els requisits del client o usuari final.
  • Exemple: Provar que una aplicació de nòmines genera correctament els informes de pagament segons les especificacions del client.

  1. Eines de Depuració

Utilització del Depurador

  • Descripció: Un depurador és una eina que permet executar el codi pas a pas per identificar on es produeixen els errors.
  • Exemple:
    // Exemple de codi amb un error
    Dcl-Proc Dividir;
      Dcl-Pi *N Int(10);
        num1 Int(10);
        num2 Int(10);
      End-Pi;
    
      If num2 = 0;
        Dsply 'Error: Divisió per zero';
        Return *Zero;
      EndIf;
    
      Return num1 / num2;
    End-Proc;
    
    // Utilització del depurador per identificar l'error
    // 1. Posar un punt de ruptura a la línia "If num2 = 0;"
    // 2. Executar el codi pas a pas per veure el valor de num2
    

Registres de Log

  • Descripció: Els registres de log són missatges que s'escriuen en un fitxer o consola per ajudar a identificar on es produeixen els errors.
  • Exemple:
    // Exemple de codi amb registres de log
    Dcl-Proc Dividir;
      Dcl-Pi *N Int(10);
        num1 Int(10);
        num2 Int(10);
      End-Pi;
    
      Dsply ('Inici de la funció Dividir');
      If num2 = 0;
        Dsply 'Error: Divisió per zero';
        Return *Zero;
      EndIf;
    
      Dsply ('Final de la funció Dividir');
      Return num1 / num2;
    End-Proc;
    

  1. Millors Pràctiques per a la Depuració

Escriure Codi Clar i Llegible

  • Descripció: Escriure codi que sigui fàcil de llegir i entendre facilita la identificació d'errors.
  • Consell: Utilitzar noms de variables descriptius i comentar el codi quan sigui necessari.

Provar Sovint

  • Descripció: Provar el codi freqüentment durant el desenvolupament ajuda a identificar errors més aviat.
  • Consell: Escriure proves unitàries per a cada funció o mòdul.

Utilitzar el Depurador

  • Descripció: Utilitzar el depurador per executar el codi pas a pas i identificar on es produeixen els errors.
  • Consell: Posar punts de ruptura en llocs estratègics del codi.

Revisar el Codi

  • Descripció: Revisar el codi amb altres programadors pot ajudar a identificar errors que un mateix no veu.
  • Consell: Fer revisions de codi regularment amb l'equip de desenvolupament.

Exercicis Pràctics

Exercici 1: Prova Unitària

Escriu una prova unitària per a una funció que multiplica dos números.

Exercici 2: Prova d'Integració

Escriu una prova d'integració per a dues funcions: una que suma dos números i una que els resta.

Exercici 3: Utilització del Depurador

Utilitza el depurador per identificar un error en una funció que divideix dos números.

Exercici 4: Registres de Log

Afegeix registres de log a una funció que calcula el factorial d'un número.

Solucions

Solució Exercici 1

// Funció per multiplicar dos números
Dcl-Proc Multiplicar;
  Dcl-Pi *N Int(10);
    num1 Int(10);
    num2 Int(10);
  End-Pi;

  Return num1 * num2;
End-Proc;

// Prova unitària per la funció Multiplicar
Dcl-Proc ProvaMultiplicar;
  Dcl-S num1 Int(10) Inz(5);
  Dcl-S num2 Int(10) Inz(10);
  Dcl-S resultat Int(10);

  resultat = Multiplicar(num1: num2);
  If resultat <> 50;
    Dsply 'Error: La funció Multiplicar no funciona correctament';
  Else;
    Dsply 'Prova superada';
  EndIf;
End-Proc;

Solució Exercici 2

// Funció per sumar dos números
Dcl-Proc Sum;
  Dcl-Pi *N Int(10);
    num1 Int(10);
    num2 Int(10);
  End-Pi;

  Return num1 + num2;
End-Proc;

// Funció per restar dos números
Dcl-Proc Restar;
  Dcl-Pi *N Int(10);
    num1 Int(10);
    num2 Int(10);
  End-Pi;

  Return num1 - num2;
End-Proc;

// Prova d'integració per les funcions Sum i Restar
Dcl-Proc ProvaIntegracio;
  Dcl-S num1 Int(10) Inz(20);
  Dcl-S num2 Int(10) Inz(10);
  Dcl-S resultatSum Int(10);
  Dcl-S resultatRestar Int(10);

  resultatSum = Sum(num1: num2);
  resultatRestar = Restar(num1: num2);

  If resultatSum <> 30 Or resultatRestar <> 10;
    Dsply 'Error: Les funcions no funcionen correctament junts';
  Else;
    Dsply 'Prova d\'integració superada';
  EndIf;
End-Proc;

Solució Exercici 3

// Exemple de codi amb un error
Dcl-Proc Dividir;
  Dcl-Pi *N Int(10);
    num1 Int(10);
    num2 Int(10);
  End-Pi;

  If num2 = 0;
    Dsply 'Error: Divisió per zero';
    Return *Zero;
  EndIf;

  Return num1 / num2;
End-Proc;

// Utilització del depurador per identificar l'error
// 1. Posar un punt de ruptura a la línia "If num2 = 0;"
// 2. Executar el codi pas a pas per veure el valor de num2

Solució Exercici 4

// Exemple de codi amb registres de log
Dcl-Proc Factorial;
  Dcl-Pi *N Int(10);
    num Int(10);
  End-Pi;

  Dcl-S resultat Int(10) Inz(1);
  Dcl-S i Int(10);

  Dsply ('Inici de la funció Factorial');
  For i = 1 To num;
    resultat *= i;
    Dsply ('Valor de i: ' + %Char(i));
    Dsply ('Valor de resultat: ' + %Char(resultat));
  EndFor;

  Dsply ('Final de la funció Factorial');
  Return resultat;
End-Proc;

Conclusió

En aquest mòdul, hem après la importància de les proves i la depuració en el desenvolupament de programari RPG. Hem explorat diferents tipus de proves, com les proves unitàries, d'integració, de sistema i d'acceptació. També hem vist com utilitzar eines de depuració com el depurador i els registres de log per identificar i corregir errors en el codi. Finalment, hem aplicat aquestes tècniques en exercicis pràctics per reforçar els conceptes apresos.

Amb aquestes habilitats, estàs preparat per assegurar-te que el teu codi RPG sigui de la màxima qualitat i fiabilitat. En el següent mòdul, ens centrarem en la presentació del projecte final, on podràs aplicar tot el que has après al llarg del curs.

© Copyright 2024. Tots els drets reservats