slogan3

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

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.