En aquest tema, ens centrarem en les tècniques de proves i depuració que són essencials per garantir que el teu projecte final funcioni correctament i estigui lliure d'errors. Aprendrem com identificar i corregir errors, així com assegurar-nos que el codi compleixi amb els requisits especificats.

Objectius d'Aprenentatge

  • Comprendre la importància de les proves i la depuració en el desenvolupament de programari.
  • Aprendre a escriure proves unitàries per verificar la funcionalitat del codi.
  • Utilitzar eines de depuració per identificar i corregir errors en el codi.
  • Aplicar tècniques de desenvolupament guiat per proves (TDD).

Contingut

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

  • Proves: Asseguren que el codi compleixi amb els requisits i funcioni correctament en diferents escenaris.
  • Depuració: Identifica i corregeix errors en el codi, millorant la qualitat i la robustesa del programari.

  1. Tipus de Proves

  • Proves Unitàries: Verifiquen la funcionalitat de components individuals del codi.
  • Proves d'Integració: Asseguren que diferents components del sistema funcionin correctament junts.
  • Proves de Sistema: Verifiquen el sistema complet per assegurar-se que compleix amb els requisits especificats.
  • Proves d'Acceptació: Validen que el sistema compleixi amb les expectatives i necessitats de l'usuari final.

  1. Escriptura de Proves Unitàries amb unittest

El mòdul unittest és una biblioteca estàndard de Python per escriure i executar proves unitàries.

Exemple de Prova Unitària

import unittest

def suma(a, b):
    return a + b

class TestSuma(unittest.TestCase):
    def test_suma_positius(self):
        self.assertEqual(suma(1, 2), 3)

    def test_suma_negatius(self):
        self.assertEqual(suma(-1, -1), -2)

    def test_suma_zero(self):
        self.assertEqual(suma(0, 0), 0)

if __name__ == '__main__':
    unittest.main()

Explicació:

  • unittest.TestCase: Classe base per crear noves proves.
  • self.assertEqual: Mètode per verificar que el resultat de la funció és l'esperat.
  • if __name__ == '__main__': Permet executar les proves quan el fitxer es corre directament.

  1. Desenvolupament Guiat per Proves (TDD)

El TDD és una metodologia de desenvolupament on les proves es creen abans del codi funcional.

Passos del TDD

  1. Escriure una prova que falli.
  2. Escriure el codi mínim necessari per passar la prova.
  3. Refactoritzar el codi per millorar la seva qualitat mantenint les proves passant.

  1. Eines de Depuració

  • Print Statements: Inserir declaracions print per mostrar valors de variables i fluxos de control.
  • PDB (Python Debugger): Eina integrada per depurar codi Python.

Exemple d'Ús de PDB

import pdb

def suma(a, b):
    pdb.set_trace()
    return a + b

print(suma(1, 2))

Explicació:

  • pdb.set_trace(): Pausa l'execució del programa i obre una sessió interactiva de depuració.

  1. Exercicis Pràctics

Exercici 1: Escriure Proves Unitàries

Escriu proves unitàries per la següent funció que calcula el factorial d'un nombre.

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

Solució

import unittest

class TestFactorial(unittest.TestCase):
    def test_factorial_zero(self):
        self.assertEqual(factorial(0), 1)

    def test_factorial_positiu(self):
        self.assertEqual(factorial(5), 120)

    def test_factorial_un(self):
        self.assertEqual(factorial(1), 1)

if __name__ == '__main__':
    unittest.main()

Exercici 2: Depuració amb PDB

Depura el següent codi per trobar i corregir l'error.

def divideix(a, b):
    return a / b

print(divideix(4, 0))

Solució

import pdb

def divideix(a, b):
    pdb.set_trace()
    if b == 0:
        raise ValueError("El divisor no pot ser zero")
    return a / b

print(divideix(4, 0))

  1. Resum

En aquesta secció, hem après la importància de les proves i la depuració en el desenvolupament de programari. Hem explorat com escriure proves unitàries amb unittest, aplicar el TDD i utilitzar eines de depuració com PDB. Aquests coneixements són essencials per garantir que el teu projecte final funcioni correctament i compleixi amb els requisits especificats.

Amb això, estàs preparat per abordar la fase de proves i depuració del teu projecte final. Bona sort!

Curs de Programació en Python

Mòdul 1: Introducció a Python

Mòdul 2: Estructures de Control

Mòdul 3: Funcions i Mòduls

Mòdul 4: Estructures de Dades

Mòdul 5: Programació Orientada a Objectes

Mòdul 6: Gestió de Fitxers

Mòdul 7: Gestió d'Errors i Excepcions

Mòdul 8: Temes Avançats

Mòdul 9: Proves i Depuració

Mòdul 10: Desenvolupament Web amb Python

Mòdul 11: Ciència de Dades amb Python

Mòdul 12: Projecte Final

© Copyright 2024. Tots els drets reservats