Help mij met het schrijven van een Ruby-script voor het automatiseren van tests
description
Met deze prompt krijg je een praktisch Ruby-script voor het automatiseren van jouw testproces. Hierdoor bespaar je tijd, verbeter je de kwaliteit van je software door consistente tests en krijg je duidelijke rapportages van testresultaten. Dit is efficiënter dan handmatige tests en voorkomt menselijke fouten.
prompt
Schrijf een Ruby-script dat automatisering van tests mogelijk maakt voor de volgende toepassing: <beschrijf de toepassing of het systeem waarvoor je tests wilt automatisere ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een Ruby-script dat automatisering van tests voor een webapplicatie voor gebruikersregistratie mogelijk maakt, met focus op validatie van invoervelden en foutafhandeling bij lege velden. Het script gebruikt de populaire testing-library Selenium WebDriver samen met RSpec voor structuur en rapportage.
**Benodigdheden:**
- Ruby
- Gem 'selenium-webdriver'
- Gem 'rspec'
**Installatie:**
```bash
gem install selenium-webdriver rspec
```
**Testscript (bijvoorbeeld: registration_spec.rb):**
```ruby
require 'selenium-webdriver'
require 'rspec'
# Configuratie van RSpec
RSpec.configure do |config|
config.before(:each) do
# Start de browser voor elke test
@driver = Selenium::WebDriver.for :chrome
@driver.manage.window.resize_to(1280, 800)
@base_url = 'http://jouw-webapp-url.com' # Vervang door je echte URL
end
config.after(:each) do
# Sluit de browser na elke test
@driver.quit
end
end
RSpec.describe 'Gebruikersregistratie' do
def bezoek_registratiepagina
@driver.navigate.to("#{@base_url}/register")
end
def vul_in_veld(selector, waarde)
@driver.find_element(:css, selector).send_keys(waarde)
end
def klik_knop(selector)
@driver.find_element(:css, selector).click
end
def registratie_verzoek
bezoek_registratiepagina
yield
klik_knop('button[type="submit"]')
end
def error_bericht
@driver.find_element(:css, '.error').text
end
context 'Validatie van invoervelden' do
it 'verstuurt correcte gegevens en registreert gebruiker' do
registratie_verzoek do
vul_in_veld('#naam', 'Jan Jansen')
vul_in_veld('#email', 'jan@example.com')
vul_in_veld('#wachtwoord', 'SterkWachtwoord123')
end
expect(@driver.page_source).to include('Registratie succesvol')
end
it 'geeft foutmelding bij ongeldige email' do
registratie_verzoek do
vul_in_veld('#naam', 'Jan Jansen')
vul_in_veld('#email', 'ongeldig-email')
vul_in_veld('#wachtwoord', 'SterkWachtwoord123')
end
expect(error_bericht).to include('Ongeldig e-mailadres')
end
end
context 'Foutafhandeling bij lege velden' do
it 'geeft foutmelding bij lege naam' do
registratie_verzoek do
# naam veld leeg
vul_in_veld('#email', 'jan@example.com')
vul_in_veld('#wachtwoord', 'SterkWachtwoord123')
end
expect(error_bericht).to include('Naam is verplicht')
end
it 'geeft foutmelding bij lege email' do
registratie_verzoek do
vul_in_veld('#naam', 'Jan Jansen')
# email veld leeg
vul_in_veld('#wachtwoord', 'SterkWachtwoord123')
end
expect(error_bericht).to include('E-mailadres is verplicht')
end
it 'geeft foutmelding bij lege wachtwoord' do
registratie_verzoek do
vul_in_veld('#naam', 'Jan Jansen')
vul_in_veld('#email', 'jan@example.com')
# wachtwoord veld leeg
end
expect(error_bericht).to include('Wachtwoord is verplicht')
end
end
end
```
**Uitleg:**
- Het script start en sluit de browser voor elke test, zodat tests onafhankelijk zijn.
- Er worden verschillende scenario's getest:
- Correcte registratie
- Ongeldige e-mail
- Lege invoervelden (naam, e-mail, wachtwoord)
- Bij elke test wordt gecontroleerd of de juiste success- of foutmeldingen verschijnen.
- Fouten worden duidelijk weergegeven via de `expect`-meldingen en de inhoud van foutberichten.
**Uitvoeren van de tests:**
```bash
rspec registratie_spec.rb
```
**Aanpassingen:**
- Vervang `http://jouw-webapp-url.com` door de daadwerkelijke URL van je applicatie.
- Pas CSS-selectors aan als deze anders zijn in jouw toepassing.
- Voeg extra testscenario's en randgevallen toe naar behoefte, zoals:
- Te lange invoer
- Speciale tekens
- Duplicate e-mailadressen
- Testen op SQL-injectie (security)
Zo heb je een basis automatiseringsscript dat je kunt uitbreiden en aanpassen voor jouw toepassing.
provider: deepseek
model: deepseek-chat
Hier is een Ruby-script met RSpec en Capybara voor het testen van een registratiewebapplicatie:
```ruby
require 'rspec'
require 'capybara/rspec'
require 'selenium-webdriver'
# Capybara configuratie
Capybara.default_driver = :selenium_chrome
Capybara.app_host = 'http://jouw-registratie-app-url.com' # Vervang met jouw URL
RSpec.describe 'Gebruikersregistratie Testscenario\'s', type: :feature do
before(:each) do
visit '/registratie' # Pas aan naar jouw registratiepad
end
describe 'Validatie van invoervelden' do
it 'accepteert geldige invoer' do
fill_in 'voornaam', with: 'Jan'
fill_in 'achternaam', with: 'Jansen'
fill_in 'email', with: 'jan.jansen@voorbeeld.nl'
fill_in 'wachtwoord', with: 'VeiligWachtwoord123!'
fill_in 'wachtwoord_bevestiging', with: 'VeiligWachtwoord123!'
click_button 'Registreer'
expect(page).to have_content('Registratie succesvol')
end
it 'valideert e-mailformaat' do
fill_in 'email', with: 'ongeldige-email'
click_button 'Registreer'
expect(page).to have_content('Voer een geldig e-mailadres in')
end
it 'valideert wachtwoordsterkte' do
fill_in 'wachtwoord', with: 'zwak'
click_button 'Registreer'
expect(page).to have_content('Wachtwoord moet minstens 8 tekens bevatten')
end
it 'controleert wachtwoordovereenkomst' do
fill_in 'wachtwoord', with: 'Wachtwoord123'
fill_in 'wachtwoord_bevestiging', with: 'AnderWachtwoord456'
click_button 'Registreer'
expect(page).to have_content('Wachtwoorden komen niet overeen')
end
end
describe 'Foutafhandeling bij lege velden' do
%w[voornaam achternaam email wachtwoord wachtwoord_bevestiging].each do |veld|
it "toont foutmelding wanneer #{veld} leeg is" do
# Vul alle velden behalve het te testen veld
all_fields = ['voornaam', 'achternaam', 'email', 'wachtwoord', 'wachtwoord_bevestiging']
all_fields.each do |f|
fill_in f, with: 'Testwaarde' unless f == veld
end
click_button 'Registreer'
expect(page).to have_content('Dit veld is verplicht')
end
end
it 'toont meerdere foutmeldingen wanneer meerdere velden leeg zijn' do
click_button 'Registreer' # Zonder enige invoer
expect(page).to have_content('voornaam is verplicht', count: 1)
expect(page).to have_content('e-mail is verplicht', count: 1)
expect(page).to have_content('wachtwoord is verplicht', count: 1)
end
end
describe 'Randgevallen' do
it 'handelt speciale tekens in namen' do
fill_in 'voornaam', with: 'Jan-Willem'
fill_in 'achternaam', with: 'van den Berg'
fill_in 'email', with: 'test@voorbeeld.nl'
fill_in 'wachtwoord', with: 'Veilig123!'
fill_in 'wachtwoord_bevestiging', with: 'Veilig123!'
click_button 'Registreer'
expect(page).to have_content('Registratie succesvol')
end
it 'voorkomt dubbele e-mailregistraties' do
# Eerste registratie
fill_in 'voornaam', with: 'Test'
fill_in 'achternaam', with: 'Gebruiker'
fill_in 'email', with: 'dubbele@voorbeeld.nl'
fill_in 'wachtwoord', with: 'Wachtwoord123'
fill_in 'wachtwoord_bevestiging', with: 'Wachtwoord123'
click_button 'Registreer'
# Tweede poging metzelfde e-mail
visit '/registratie'
fill_in 'voornaam', with: 'Andere'
fill_in 'achternaam', with: 'Gebruiker'
fill_in 'email', with: 'dubbele@voorbeeld.nl'
fill_in 'wachtwoord', with: 'AnderWachtwoord123'
fill_in 'wachtwoord_bevestiging', with: 'AnderWachtwoord123'
click_button 'Registreer'
expect(page).to have_content('E-mailadres is al in gebruik')
end
it 'handelt extreem lange invoerwaarden' do
lange_naam = 'A' * 256
fill_in 'voornaam', with: lange_naam
click_button 'Registreer'
expect(page).to have_content('Voornaam mag niet langer zijn dan 255 tekens')
end
end
end
# Testrunner script
def run_tests
puts "Start registratietests op #{Time.now}"
puts "=" * 50
# Voer tests uit en vang resultaten op
results = RSpec::Core::Runner.run([$0])
puts "=" * 50
puts "Tests voltooid op #{Time.now}"
puts "Resultaat: #{results == 0 ? 'ALLE TESTS GESLAAGD' : '#{results} TEST(S) MISLUKT'}"
exit results
end
run_tests if __FILE__ == $0
```
**Benodigde gems (voeg toe aan Gemfile):**
```ruby
gem 'rspec'
gem 'capybara'
gem 'selenium-webdriver'
```
**Testscenario's die zijn opgenomen:**
1. **Validatie tests:**
- Geldige invoer acceptatie
- E-mailformaat validatie
- Wachtwoordsterkte validatie
- Wachtwoordovereenkomst controle
2. **Lege velden foutafhandeling:**
- Individuele verplichte velden
- Meerdere lege velden simultaan
3. **Randgevallen:**
- Speciale tekens in namen
- Dubbele e-mailregistraties
- Extreem lange invoerwaarden
**Installatie en gebruik:**
```bash
bundle install
rspec registratie_test.rb --format documentation
```
Het script geeft gedetailleerde foutmeldingen en rapporteert duidelijk welke tests zijn geslaagd of mislukt.