En aquest tema, aprendrem com assegurar-nos que el nostre codi funciona correctament mitjançant proves i com identificar i corregir errors a través de la depuració. Aquestes habilitats són essencials per a qualsevol desenvolupador, ja que ajuden a mantenir la qualitat del codi i a reduir el nombre de bugs en les aplicacions.

  1. Introducció a les Proves

1.1. Què són les Proves?

Les proves són un conjunt de tècniques i eines utilitzades per verificar que el codi compleix amb els requisits especificats i funciona com s'espera. Hi ha diversos tipus de proves, però en aquest tema ens centrarem en les proves unitàries i les proves d'integració.

1.2. Tipus de Proves

  • Proves Unitàries: Verifiquen la funcionalitat de components individuals del codi, com ara mètodes o classes.
  • Proves d'Integració: Verifiquen que diferents components del sistema funcionen correctament quan es combinen.

  1. Proves Unitàries amb Minitest

2.1. Configuració de Minitest

Minitest és una biblioteca de proves inclosa amb Ruby. Per començar a utilitzar-la, només cal que creïs un fitxer de prova i l'executis amb el comandament ruby.

# test_example.rb
require 'minitest/autorun'

class ExampleTest < Minitest::Test
  def test_addition
    assert_equal 4, 2 + 2
  end
end

2.2. Estructura d'una Prova Unitària

  • Setup: Configura l'entorn necessari per a les proves.
  • Test: Defineix els casos de prova.
  • Teardown: Neteja l'entorn després de les proves.
class ExampleTest < Minitest::Test
  def setup
    @value = 2
  end

  def test_addition
    assert_equal 4, @value + 2
  end

  def teardown
    # Neteja si cal
  end
end

  1. Depuració

3.1. Utilització de puts i p

Una manera senzilla de depurar el codi és utilitzar puts o p per imprimir valors a la consola.

def add(a, b)
  result = a + b
  puts "Result: #{result}"
  result
end

3.2. Utilització del Depurador de Ruby (byebug)

byebug és una eina poderosa per a la depuració en Ruby. Permet aturar l'execució del codi i inspeccionar l'estat del programa.

Instal·lació de byebug

gem install byebug

Utilització de byebug

require 'byebug'

def add(a, b)
  byebug
  a + b
end

add(2, 3)

Quan el codi arriba a byebug, l'execució s'atura i pots inspeccionar les variables i executar comandes per entendre millor el comportament del codi.

3.3. Comandes Bàsiques de byebug

  • next: Executa la següent línia de codi.
  • step: Entra dins de la següent línia de codi si és una crida a un mètode.
  • continue: Continua l'execució fins al següent punt de depuració.
  • list: Mostra el codi al voltant de la línia actual.
  • display: Mostra el valor d'una expressió cada vegada que s'atura l'execució.

  1. Exercicis Pràctics

Exercici 1: Prova Unitària

Crea una prova unitària per a una funció que calcula el factorial d'un nombre.

# factorial.rb
def factorial(n)
  return 1 if n == 0
  n * factorial(n - 1)
end

# test_factorial.rb
require 'minitest/autorun'
require_relative 'factorial'

class FactorialTest < Minitest::Test
  def test_factorial
    assert_equal 1, factorial(0)
    assert_equal 1, factorial(1)
    assert_equal 2, factorial(2)
    assert_equal 6, factorial(3)
    assert_equal 24, factorial(4)
  end
end

Exercici 2: Depuració

Utilitza byebug per depurar la següent funció i corregir l'error.

def reverse_string(str)
  reversed = ""
  str.length.times do |i|
    reversed += str[i]
  end
  reversed
end

puts reverse_string("hello") # Ha de retornar "olleh"

Solució

require 'byebug'

def reverse_string(str)
  reversed = ""
  str.length.times do |i|
    byebug
    reversed = str[i] + reversed
  end
  reversed
end

puts reverse_string("hello") # Ha de retornar "olleh"

  1. Resum

En aquesta secció, hem après la importància de les proves i la depuració en el desenvolupament de programari. Hem vist com utilitzar Minitest per escriure proves unitàries i com utilitzar byebug per depurar el codi. Aquestes eines i tècniques són essencials per assegurar la qualitat i la fiabilitat del nostre codi.

En el següent tema, ens centrarem en el desplegament de la nostra aplicació, on aprendrem com posar en producció el nostre projecte final.

© Copyright 2024. Tots els drets reservats