Ruby Academy · Les

Testen en versiebeheer

Kwaliteit en semver

Les 3 van 413 stappen

Testen en versiebeheer is een gratis Ruby Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Ruby Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Ruby Academy bevat in totaal 4 lessen.

Waarom een gem testen

Omdat een gem door veel projecten wordt gebruikt, raakt een fout iedereen. Geautomatiseerde tests geven je vertrouwen bij het wijzigen van code en bewijzen dat de gem nog steeds werkt.

  • Tests documenteren het verwachte gedrag.
  • Ze vinden regressies voordat je een versie uitbrengt.
  • Serieuze gebruikers verwachten ze voordat ze een gem gaan gebruiken.

Een framework kiezen

De twee populaire keuzes zijn Minitest (wordt met Ruby meegeleverd en is lichtgewicht) en RSpec (een uitgebreide DSL die zeer gangbaar is). Beide zijn prima; kies er één en voeg deze als ontwikkelingsafhankelijkheid toe in het gemspec.

Een Minitest-voorbeeld

Minitest-tests zijn gewone klassen met assertiemethoden. Hier zie je een zelfstandig voorbeeld dat de logica van je gem uitvoert en het resultaat controleert.

require "minitest/autorun"

def greet(name)
  "Hi, " + name
end

class GreetTest < Minitest::Test
  def test_greet
    assert_equal "Hi, Sam", greet("Sam")
  end
end

Veelgebruikte asserties

Nuttige Minitest-asserties:

  • assert_equal expected, actual
  • assert obj en refute obj
  • assert_nil value
  • assert_raises(Error) { ... }

Elke test moet één duidelijk gedrag controleren.

require "minitest/autorun"

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

  def test_truth
    refute_nil 5
  end
end

Tests uitvoeren en automatiseren

Meestal voeg je een Rake-taak toe, zodat rake test de volledige testsuite uitvoert. Continue integratie voert daarna bij elke push dezelfde taak uit op verschillende Ruby-versies, zodat problemen vroeg worden gevonden.

Wat is semantische versie-indeling

Semantische versie-indeling (semver) geeft betekenis aan een versienummer in de vorm MAJOR.MINOR.PATCH:

  • MAJOR: incompatibele wijzigingen in de API.
  • MINOR: nieuwe functies die achterwaarts compatibel zijn.
  • PATCH: achterwaarts compatibele foutoplossingen.

Gebruikers vertrouwen hierop om veilig te kunnen bijwerken.

Een versie lezen

Bij 2.4.1 is major 2, minor 4 en patch 1. Door de tekenreeks te splitsen zie je de onderdelen.

version = "2.4.1"
major, minor, patch = version.split(".")
puts "Major: " + major
puts "Minor: " + minor
puts "Patch: " + patch

Wanneer verhoog je elk onderdeel

Beslisregels:

  • Een fout opgelost zonder de API te wijzigen? Verhoog patch.
  • Een functie toegevoegd terwijl oude code blijft werken? Verhoog minor en zet patch terug op 0.
  • Bestaand gedrag verwijderd of gewijzigd? Verhoog major en zet minor en patch terug op 0.
def bump_minor(version)
  major, minor, _patch = version.split(".").map(&:to_i)
  major.to_s + "." + (minor + 1).to_s + ".0"
end

puts bump_minor("1.3.5")

Versiebeperkingen

Gebruikers leggen de versie van je gem vast met operatoren in hun Gemfile:

  • '~> 1.4' staat 1.4 toe tot maar niet met inbegrip van 2.0 (pessimistisch).
  • '>= 1.4' staat elke nieuwere versie toe.
  • '= 1.4.2' legt precies die versie vast.

De pessimistische operator ~> komt het meest voor, omdat deze vernieuwingen en veiligheid in balans brengt.

Houd een wijzigingslogboek bij

Houd een CHANGELOG.md bij met een overzicht van wat er in elke versie is gewijzigd. Zo zien gebruikers wat nieuw is, wat niet meer werkt en hoe ze moeten overstappen. Koppel elke verhoging van het versienummer aan een vermelding in het wijzigingslogboek.

Vooruitgaveversies

Versies zoals 2.0.0.beta1 duiden op instabiele voorlopige versies. Gebruikers moeten zich er uitdrukkelijk voor aanmelden om ze te installeren, zodat je vroege versies kunt uitbrengen om te testen zonder normale installaties te beïnvloeden.

version = "2.0.0.beta1"
puts "Pre-release? " + version.include?("beta").to_s

Korte controle

Controleer je begrip van versiebeheer.

Samenvatting: testen en versiebeheer

Je hebt geleerd hoe je een gem betrouwbaar houdt:

  • Schrijf tests met Minitest of RSpec en automatiseer ze met Rake en CI.
  • Volg semver: MAJOR.MINOR.PATCH.
  • Verhoog het juiste onderdeel voor foutoplossingen, functies of incompatibele wijzigingen.
  • Gebruik ~>-beperkingen en houd een wijzigingslogboek bij.

Vervolgens publiceren we de gem naar RubyGems.

Gratis beginnen

Leer Ruby met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
29
Lessen
109

Veelgestelde vragen

Is de les “Testen en versiebeheer” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Ruby Academy, waaronder “Testen en versiebeheer”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Ruby Academy bevat in totaal 4 lessen.

Wat leer ik in “Testen en versiebeheer”?

Kwaliteit en semver Je oefent met Ruby Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Ruby Academy te beginnen?

Ervaring vooraf is niet nodig. Ruby Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Testen en versiebeheer”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Ruby Academy?

Ja. Elke les over Ruby Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Gemstructuur
  2. De code schrijven
  3. Testen en versiebeheer
  4. Publiceren naar RubyGems
← Terug naar Ruby Academy