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:
- Proves Unitàries: Verifiquen la funcionalitat de components individuals del codi, com ara mètodes o classes.
- Proves d'Integració: Asseguren que diferents components del sistema funcionin correctament junts.
- Proves Funcionals: Verifiquen que el sistema compleixi amb els requisits funcionals especificats.
- Proves de Rendiment: Mesuren el rendiment del sistema sota diferents condicions de càrrega.
- 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
- Requerir Minitest:
require 'minitest/autorun'
carrega Minitest i configura l'entorn de proves. - Definició de la Classe:
class Calculator
defineix una classe simple amb un mètodeadd
. - Definició de la Prova:
class TestCalculator < Minitest::Test
defineix una classe de prova que hereta deMinitest::Test
. - Mètode setup:
def setup
inicialitza una instància deCalculator
abans de cada prova. - Mètode de Prova:
def test_add
defineix una prova que verifica que el mètodeadd
funcioni correctament.assert_equal 4, @calculator.add(2, 2)
comprova que el resultat deadd(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:
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ó
- Crea una classe
Calculator
amb un mètodemultiply
que multipliqui dos números. - 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:
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.
Curs de Programació en Ruby
Mòdul 1: Introducció a Ruby
Mòdul 2: Conceptes Bàsics de Ruby
Mòdul 3: Treballant amb Col·leccions
Mòdul 4: Programació Orientada a Objectes en Ruby
- Classes i Objectes
- Variables i Mètodes d'Instància
- Variables i Mètodes de Classe
- Herència
- Mòduls i Mixins
Mòdul 5: Conceptes Avançats de Ruby
- Blocs, Procs i Lambdas
- Metaprogramació
- Gestió d'Excepcions
- Entrada/Sortida de Fitxers
- Expressions Regulars
Mòdul 6: Introducció a Ruby on Rails
- Què és Ruby on Rails?
- Configuració de l'Entorn Rails
- Creació d'una Aplicació Simple en Rails
- Arquitectura MVC
- Rutes
Mòdul 7: Proves en Ruby
- Introducció a les Proves
- Proves Unitàries amb Minitest
- Desenvolupament Basat en Comportament amb RSpec
- Mocking i Stubbing
Mòdul 8: Millors Pràctiques en Ruby
- Estil de Codi i Convencions
- Refactorització
- Optimització del Rendiment
- Millors Pràctiques de Seguretat