Les proves són una part essencial del desenvolupament de programari, ja que asseguren que el codi funcioni com s'espera i ajuden a detectar errors abans que el programari es desplegui en producció. En aquest mòdul, aprendrem com escriure i executar proves en Perl utilitzant diversos mòduls de prova.

Continguts

Introducció a les Proves

Les proves són scripts que verifiquen que el codi funcioni correctament. Hi ha diversos tipus de proves, incloent-hi:

  • Proves unitàries: Verifiquen el funcionament de petites unitats de codi, com ara funcions o mètodes.
  • Proves d'integració: Verifiquen que diferents parts del sistema funcionin correctament quan es combinen.
  • Proves funcionals: Verifiquen que el sistema compleixi amb els requisits funcionals.

Mòduls de Prova en Perl

Perl té diversos mòduls per a la realització de proves. Els més comuns són:

  • Test::Simple: Proporciona una manera senzilla de fer proves.
  • Test::More: Una extensió de Test::Simple amb més funcionalitats.
  • Test::Exception: Permet provar excepcions.
  • Test::MockObject: Permet crear objectes simulats per a proves.

Comparació de Mòduls de Prova

Mòdul Descripció Ús Principal
Test::Simple Proves senzilles amb una interfície mínima Proves unitàries bàsiques
Test::More Proves més avançades amb més funcionalitats Proves unitàries i d'integració
Test::Exception Proves d'excepcions Verificació de gestió d'errors
Test::MockObject Creació d'objectes simulats per a proves Proves d'integració i funcionals

Escrivint Proves Bàsiques

Exemple amb Test::Simple

use Test::Simple tests => 1;

ok(1 + 1 == 2, 'Sumem 1 i 1');

Explicació:

  • use Test::Simple tests => 1; indica que hi haurà una prova.
  • ok(1 + 1 == 2, 'Sumem 1 i 1'); comprova que 1 + 1 és igual a 2 i mostra el missatge 'Sumem 1 i 1'.

Exemple amb Test::More

use Test::More tests => 2;

is(1 + 1, 2, 'Sumem 1 i 1');
isnt(1 + 1, 3, '1 + 1 no és 3');

Explicació:

  • use Test::More tests => 2; indica que hi haurà dues proves.
  • is(1 + 1, 2, 'Sumem 1 i 1'); comprova que 1 + 1 és igual a 2.
  • isnt(1 + 1, 3, '1 + 1 no és 3'); comprova que 1 + 1 no és igual a 3.

Proves Avançades

Proves d'Excepcions amb Test::Exception

use Test::More tests => 1;
use Test::Exception;

dies_ok { die "Error!" } 'Prova que l'excepció es llança';

Explicació:

  • dies_ok { die "Error!" } 'Prova que l'excepció es llança'; comprova que el bloc de codi llança una excepció.

Proves amb Objectes Simulats amb Test::MockObject

use Test::More tests => 1;
use Test::MockObject;

my $mock = Test::MockObject->new();
$mock->set_true('method_name');

ok($mock->method_name(), 'El mètode simulat retorna true');

Explicació:

  • Test::MockObject->new(); crea un objecte simulat.
  • $mock->set_true('method_name'); defineix que el mètode method_name retornarà true.
  • ok($mock->method_name(), 'El mètode simulat retorna true'); comprova que el mètode simulat retorna true.

Execució de Proves

Les proves es poden executar des de la línia de comandes utilitzant el comandament prove:

prove test_file.t

També es poden executar directament amb Perl:

perl test_file.t

Exercicis Pràctics

Exercici 1: Prova Bàsica

Escriu una prova que comprovi que la funció sum retorna la suma correcta de dos nombres.

# sum.pl
sub sum {
    my ($a, $b) = @_;
    return $a + $b;
}

1;
# sum_test.t
use Test::More tests => 1;
require './sum.pl';

is(sum(2, 3), 5, 'Sumem 2 i 3');

Exercici 2: Prova d'Excepció

Escriu una prova que comprovi que la funció divide llança una excepció quan es divideix per zero.

# divide.pl
sub divide {
    my ($a, $b) = @_;
    die "Divisió per zero" if $b == 0;
    return $a / $b;
}

1;
# divide_test.t
use Test::More tests => 1;
use Test::Exception;
require './divide.pl';

dies_ok { divide(1, 0) } 'Prova que l'excepció es llança en dividir per zero';

Conclusió

En aquest mòdul, hem après la importància de les proves en el desenvolupament de programari i com utilitzar diversos mòduls de prova en Perl per escriure i executar proves. Les proves ajuden a assegurar que el nostre codi funcioni correctament i a detectar errors abans que es despleguin en producció. Practicar l'escriptura de proves és essencial per convertir-se en un programador més eficient i fiable.

© Copyright 2024. Tots els drets reservats