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 arribi als usuaris finals. En aquest tema, aprendrem els conceptes bàsics de les proves en Ruby, incloent-hi els tipus de proves, les eines disponibles i com escriure les primeres proves.

Objectius del Tema

  • Entendre la importància de les proves en el desenvolupament de programari.
  • Conèixer els diferents tipus de proves.
  • Familiaritzar-se amb les eines de proves en Ruby.
  • Escriure proves bàsiques utilitzant Minitest.

Importància de les Proves

Les proves són crucials per diverses raons:

  • Qualitat del Codi: Asseguren que el codi compleixi amb els requisits especificats.
  • Mantenibilitat: Faciliten la refactorització del codi sense por de trencar funcionalitats existents.
  • Documentació: Les proves poden servir com a documentació viva del comportament del codi.
  • Confiança: Proporcionen confiança als desenvolupadors i als usuaris finals que el programari funciona correctament.

Tipus de Proves

Hi ha diversos tipus de proves que es poden realitzar en el desenvolupament de programari:

  1. Proves Unitàries: Verifiquen la funcionalitat de components individuals del codi, com ara mètodes o classes.
  2. Proves d'Integració: Asseguren que diferents components del sistema funcionin correctament junts.
  3. Proves Funcionals: Verifiquen que el sistema compleixi amb els requisits funcionals especificats.
  4. Proves de Rendiment: Mesuren el rendiment del sistema sota diferents condicions de càrrega.
  5. Proves de Seguretat: Identifiquen vulnerabilitats de seguretat en el sistema.

Eines de Proves en Ruby

Ruby ofereix diverses eines per a la realització de proves. Les més populars són:

  • Minitest: Una biblioteca de proves inclosa amb Ruby que proporciona un conjunt complet d'eines per a proves unitàries, proves d'acceptació i proves de rendiment.
  • RSpec: Una biblioteca de proves basada en el comportament (BDD) que permet escriure proves en un estil més llegible i expressiu.

Escriure Proves Bàsiques amb Minitest

Instal·lació de Minitest

Minitest ve inclòs amb Ruby, així que no cal instal·lar res addicional. Només cal assegurar-se que Ruby estigui instal·lat correctament.

Estructura d'una Prova amb Minitest

A continuació, es mostra un exemple bàsic d'una prova unitària amb Minitest:

# test_calculator.rb
require 'minitest/autorun'

class Calculator
  def add(a, b)
    a + b
  end
end

class TestCalculator < Minitest::Test
  def setup
    @calculator = Calculator.new
  end

  def test_add
    assert_equal 4, @calculator.add(2, 2)
  end
end

Explicació del Codi

  1. Requerir Minitest: require 'minitest/autorun' carrega Minitest i configura l'entorn de proves.
  2. Definició de la Classe: class Calculator defineix una classe simple amb un mètode add.
  3. Definició de la Prova: class TestCalculator < Minitest::Test defineix una classe de prova que hereta de Minitest::Test.
  4. Mètode setup: def setup inicialitza una instància de Calculator abans de cada prova.
  5. Mètode de Prova: def test_add defineix una prova que verifica que el mètode add funcioni correctament. assert_equal 4, @calculator.add(2, 2) comprova que el resultat de add(2, 2) sigui igual a 4.

Executar les Proves

Per executar les proves, simplement cal executar el fitxer de prova des de la línia de comandes:

ruby test_calculator.rb

Si totes les proves passen, veurem un missatge indicant que les proves han estat exitoses. Si alguna prova falla, Minitest proporcionarà informació detallada sobre l'error.

Exercici Pràctic

Exercici 1: Escriure una Prova per a un Mètode de Multiplicació

  1. Crea una classe Calculator amb un mètode multiply que multipliqui dos números.
  2. Escriu una prova unitària per al mètode multiply utilitzant Minitest.

Solució

# test_calculator.rb
require 'minitest/autorun'

class Calculator
  def multiply(a, b)
    a * b
  end
end

class TestCalculator < Minitest::Test
  def setup
    @calculator = Calculator.new
  end

  def test_multiply
    assert_equal 6, @calculator.multiply(2, 3)
  end
end

Executar la Solució

Executa el fitxer de prova per assegurar-te que la prova passi correctament:

ruby test_calculator.rb

Conclusió

En aquesta secció, hem après la importància de les proves en el desenvolupament de programari, els diferents tipus de proves, les eines disponibles en Ruby i com escriure proves bàsiques utilitzant Minitest. En el proper tema, aprofundirem en les proves unitàries amb Minitest i explorarem més funcionalitats avançades.

© Copyright 2024. Tots els drets reservats