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 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.
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