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.
- 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.
- 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.
- 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;
- 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 num2Solució 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.
Curs de Programació RPG
Mòdul 1: Introducció a la Programació RPG
- Què és RPG?
- Configuració del Teu Entorn de Desenvolupament
- Sintaxi i Estructura Bàsiques
- Programa Hello World
Mòdul 2: Conceptes Bàsics
Mòdul 3: Treballant amb Dades
Mòdul 4: Tècniques Avançades de Programació
Mòdul 5: RPG IV i Més Enllà
Mòdul 6: Integrant RPG amb Tecnologies Modernes
Mòdul 7: Aplicacions del Món Real
- Construint una Aplicació Simple
- Estudi de Cas: Sistema de Gestió d'Inventari
- Estudi de Cas: Sistema de Nòmines
- Millors Pràctiques i Revisió de Codi
