Selenium versus toneelschrijver: belangrijkste verschillen, code vergeleken en welke te kiezen

  1. Home
  2. Blog
  3. Testautomatisering

Testautomatisering

Selenium versus toneelschrijver: Belangrijkste verschillen, code vergeleken en welke te kiezen

Selenium heeft een geschiedenis van twintig jaar en een enorm ecosysteem. Toneelschrijver is nieuwer en bevat meer out-of-the-box. Vergelijk ze over wat er van dag tot dag toe doet, lees één test in beide en beslis met vertrouwen.

9 min leestijd
Selenium versus toneelschrijver: belangrijkste verschillen, code vergeleken en welke te kiezen

Belangrijkste punten

  • Selenium is een volwassen bibliotheek voor browserautomatisering, gebouwd op de W3C WebDriver-standaard.
  • Toneelschrijver is een nieuwer framework met automatisch wachten, traceren en een testrunner.
  • Voor een nieuw webproject is Playwright meestal sneller productief.
  • Selenium blijft een goede keuze voor grote bestaande suites, bredere taalbehoeften en testen in browsers van echte leveranciers.

Als u een testautomatiseringsproject start, zal de vraag Selenium versus toneelschrijver snel opkomen. Zoekresultaten kunnen de indruk wekken dat het een uitgemaakte zaak is, maar het juiste antwoord hangt af van uw team, uw bestaande tests en de browsers die u moet ondersteunen.

Deze gids vergelijkt ze met de dingen die u daadwerkelijk zult voelen tijdens het dagelijkse werk. De codevoorbeelden tonen de typische stijl van elke tool, en we hebben ze voor dit artikel niet uitgevoerd. We vermijden ook het vermelden van snelheidspercentages, omdat gepubliceerde benchmarks sterk variëren en vaak afkomstig zijn van leveranciers. Meet op uw eigen applicatie of snelheid de beslissing zal nemen.

Het korte antwoord

Kies Toneelschrijver voor de meeste nieuwe webtestprojecten, vooral als uw team kan werken in JavaScript, TypeScript, Python, Java of .NET. U beschikt over meer functies uit de doos en er gaat minder tijd verloren aan infrastructuur en lange wachttijden.

Kies Selenium als je al een grote, werkende suite hebt, als je een taal nodig hebt die Playwright officieel niet ondersteunt, zoals Ruby, of als je moet testen op de echte browserbuilds en platforms die beschikbaar zijn via een Selenium-raster of apparaatwolk.

Selenium versus toneelschrijver zij aan zij

Aspect Selenium Toneelschrijver
Voor het eerst uitgebracht 2004 2020, door Microsoft
Wat het is Browserautomatiseringsbibliotheek Framework, met een runner in Node.js
Talen Java, Python, C#, Ruby, JavaScript TypeScript, JavaScript, Python, Java, .NET
Browsers Chroom, Firefox, Edge, Safari Chroom, Firefox, WebKit
Wachten Expliciete wachttijden die u schrijft Automatisch wachten ingebouwd
Testloper Neem je eigen mee, zoals pytest of JUnit Inbegrepen voor Node.js, pytest-plug-in voor Python
Parallelle runs Selenium Grid of het testframework Ingebouwd in de runner
Foutopsporing Framework-logboeken, screenshots die u toevoegt Trace-viewer, UI-modus, codegen
Netwerk spotten Beperkte, vaak extra tooling Ingebouwd
Gemeenschap Zeer groot en al lang gevestigd Groot en groeit snel

Architectuur: hoe iedereen met de browser praat

Selenium verzendt opdrachten met behulp van het W3C WebDriver-protocol, een formele standaard. Uw code praat met een stuurprogramma, zoals ChromeDriver, dat de browser bestuurt, waarbij elke opdracht meestal een afzonderlijk HTTP-verzoek is. Omdat browserleveranciers deze standaard ondersteunen, is deze breed compatibel. Een nieuwer protocol, WebDriver BiDi, voegt tweerichtingscommunicatie en gebeurtenisstreaming toe aan de standaard.

Playwright onderhoudt een permanente verbinding met de browser en gebruikt zijn eigen gepatchte builds van Chromium, Firefox en WebKit. Omdat de verbinding direct en tweerichtingsverkeer is, kan deze reageren op browsergebeurtenissen en kan elke test in zijn eigen lichtgewicht browsercontext worden uitgevoerd. Dit is de reden waarom de meeste vergelijkingen Playwright als sneller beoordelen, hoewel de werkelijke kloof afhangt van uw toepassing en uw tests.

Eén test in beide tools

Hier is dezelfde inlogtest, geschreven in Python, tegen een openbare oefensite.

Selenium

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def test_login(driver):
    driver.get("https://the-internet.herokuapp.com/login")
    driver.find_element(By.ID, "username").send_keys("tomsmith")
    driver.find_element(By.ID, "password").send_keys("SuperSecretPassword!")
    driver.find_element(By.CSS_SELECTOR, "button[type=submit]").click()

    message = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.ID, "flash"))
    )
    assert "You logged into a secure area" in message.text

Je hebt ook een armatuur nodig om de driver te maken en te sluiten, zoals we laten zien in onze Selenium Python-tutorial.

Toneelschrijver

from playwright.sync_api import Page, expect

def test_login(page: Page):
    page.goto("https://the-internet.herokuapp.com/login")
    page.get_by_label("Username").fill("tomsmith")
    page.get_by_label("Password").fill("SuperSecretPassword!")
    page.get_by_role("button", name="Login").click()

    expect(page.locator("#flash")).to_contain_text("You logged into a secure area")

Dit is afhankelijk van de plug-in pytest-playwright, die de armatuur page levert. Het is korter, vooral omdat de wachttijd is ingebouwd in expect, en omdat locators zoals get_by_role de pagina beschrijven zoals een gebruiker deze ziet. Met Selenium kun je deze standaard aanzienlijk verminderen met helpers en het Page Object Model, dat we in beide tools aanbevelen.

Wachten en schilferige tests

Timing is de belangrijkste oorzaak van slechte browsertests, en dit is waar de twee tools het meest verschillen in het dagelijks gebruik.

In Selenium ben jij verantwoordelijk voor de synchronisatie. Expliciet wachten werkt goed, maar iemand moet ze overal onthouden, en teams die het vergeten, vallen vaak terug op time.sleep. In onze gids voor Selenium wacht wordt uitgelegd hoe je dit op de juiste manier doet.

In Toneelschrijver controleren acties automatisch of een element zichtbaar en stabiel is, ingeschakeld is en gebeurtenissen kan ontvangen voordat er actie wordt ondernomen. Web-first-beweringen blijven het opnieuw proberen tot er een time-out optreedt. Je kunt nog steeds slechte tests schrijven, bijvoorbeeld met slechte testgegevens, maar een grote bron van problemen wordt standaard afgehandeld.

Browsers en talen

Dit is waar Selenium een echt voordeel heeft. De WebKit-build van Playwright ligt dicht bij de Safari-engine, maar is niet hetzelfde als Safari op een Mac of iPhone. Als echt Safari-gedrag van cruciaal belang is, brengt Selenium met SafariDriver, of een echte apparaatwolk, u dichter bij wat uw gebruikers daadwerkelijk uitvoeren.

Op dezelfde manier test Playwright de gebundelde browserversies, hoewel het ook geïnstalleerde Chrome- en Edge-kanalen kan aansturen. Selenium stuurt de browsers aan die u installeert, wat helpt als u specifieke versies moet ondersteunen. Voor native mobiele apps is dit ook niet het volledige antwoord: Appium, dat is gebouwd op WebDriver-concepten, is de gebruikelijke tool.

Wat talen betreft, ondersteunt Selenium Ruby officieel en heeft het een zeer lange geschiedenis in Java-teams. De Node.js-versie van Playwright heeft ook de meest complete tooling, aangezien de volledige testrunner aanwezig is. Andere talen krijgen de kernbibliotheek en integreren met hun eigen testframeworks.

Foutopsporing

Toneelschrijver heeft hier een duidelijke voorsprong. De traceviewer registreert elke actie, samen met DOM-snapshots, netwerkaanroepen en consolelogboeken, zodat u een mislukte CI-run kunt doorlopen nadat deze is voltooid. Dankzij de UI-modus en codegen kun je ook sneller tests schrijven. Bekijk onze Tutorial voor toneelschrijvers voor beginners voor hoe je deze kunt gebruiken.

Met Selenium stelt u dit zelf samen, uit screenshots bij storingen, browserlogs, video van uw netwerkprovider en rapporten uit uw testframework. Het werkt goed, en veel teams hebben uitstekende instellingen, maar het kost moeite om te bouwen.

Netwerk- en API-functies

Playwright kan netwerkverzoeken onderscheppen en bespotten met een paar regels code, wat handig is voor het testen van foutstatussen:

page.route("**/api/orders", lambda route: route.fulfill(status=500))

Het bevat ook een API-verzoekclient, zodat u via een API testgegevens kunt creëren voordat u de browser bestuurt. Selenium 4 heeft enkele netwerkfuncties toegevoegd via het Chrome DevTools Protocol en BiDi, maar ondersteuning en gemak variëren per browser en taal. Veel Selenium-gebruikers voegen een proxy of een aparte HTTP-bibliotheek toe, zoals in de API-tests tools.

Tip: Welke tool je ook kiest, zorg ervoor dat browsertests gericht zijn op kritieke trajecten en breng details naar lagere niveaus. Een kleinere suite is belangrijker dan een snellere tool. Bekijk onze best practices voor end-to-end testen.

Parallelle runs en schaal

De runner van Playwright verwerkt parallelle werknemers en sharding over CI-machines met eenvoudige opties. Browsercontexten zijn goedkoop, dus isolatie vereist niet voor elke test een geheel nieuwe browser.

Selenium gebruikt Selenium Grid om tests te distribueren over machines en browserversies, en testframeworks zorgen voor het parallellisme. Grid is meer om te draaien, maar het is op zeer grote schaal bewezen, en veel commerciële apparaatclouds ondersteunen het rechtstreeks.

Moet u migreren van Selenium naar Toneelschrijver?

Niet automatisch. Een werkpakket is waardevol, en een herschrijving kost tijd bij het testen van het product. Stel eerst deze vragen:

  1. Is er een meetbaar probleem? Slechte tests of trage foutopsporing zijn goede redenen. “Het is nieuwer” is dat niet.
  2. Hoe groot is de suite? Honderd tests kunnen worden verplaatst. Tienduizend is een groot project.
  3. Zijn uw paginaobjecten schoon? Goede abstracties maken de verplaatsing veel goedkoper.
  4. Vertrouwt u op Selenium-specifieke functies? Controleer eerst uw netwerk- en apparaatbehoeften.

Als je toch beweegt, doe het dan geleidelijk. Schrijf nieuwe tests in Playwright, migreer eerst de meest zwakke oude tests en voer ze beide naast elkaar uit totdat de oude suite klein genoeg is om met pensioen te gaan. Vertaal tests niet regel voor regel, omdat hierdoor slaapplaatsen en oude locators worden overgenomen. Vermijd ook de fouten die worden behandeld in fouten in testautomatisering.

Hoe te kiezen

Jouw situatie Redelijke keuze
Nieuwe webapp, modern team Toneelschrijver
Grote stabiele Selenium suite Blijf bij Selenium en verbeter het
Team schrijft Ruby Selenium
Echte Safari-dekking is van cruciaal belang Selenium, of een apparaatwolk
Slechte tests en harde CI-foutopsporing Probeer Toneelschrijver tijdens een pilot
Native mobiele apps Appium

Het beste van alles is om een korte pilot uit te voeren. Automatiseer uw drie meest lastige trajecten in elke tool tegen uw eigen applicatie, in uw eigen CI, en vergelijk de code, de snelheid en hoe gemakkelijk u een fout kunt opsporen. Eén week aan bewijsmateriaal overtreft elk vergelijkingsartikel, inclusief dit artikel. Als Cypress ook op jouw shortlist staat, lees dan Toneelschrijver versus Cypress.

Tot slot

Toneelschrijver is meestal de gemakkelijkere plek om te beginnen, en Selenium blijft een betrouwbare standaard met een breed bereik. Geen van beide zal een slecht ontworpen testsuite redden. Kies op basis van uw werkelijke beperkingen, investeer in stabiele locators en goede testgegevens, en houd uw suite gefocust op wat het belangrijkst is voor uw gebruikers.

Veelgestelde vragen

Is toneelschrijver beter dan Selenium?

Voor veel nieuwe webprojecten wel, dankzij automatisch wachten en ingebouwde tooling. Selenium kan beter geschikt zijn voor bestaande suites, bredere taalbehoeften of specifieke echte browsers.

Is Toneelschrijver sneller dan Selenium?

Het wordt vaak als sneller gerapporteerd vanwege de aanhoudende browserverbinding en lichtgewicht contexten. Het echte verschil hangt af van uw app, dus meet het met uw eigen tests.

Is Selenium verouderd?

Nee. Selenium wordt actief onderhouden en gebouwd op basis van een W3C-standaard, en wordt nog steeds veel gebruikt. Selenium 4 en WebDriver BiDi blijven het moderniseren.

Kan Toneelschrijver echte Safari testen?

Toneelschrijver test met zijn eigen WebKit-build, die dicht bij de Safari-engine ligt, maar niet identiek is. Gebruik voor echt Safari- of iOS-gedrag echte apparaten of SafariDriver.

Moet een beginner Selenium of Toneelschrijver leren?

Veel beginners vinden Toneelschrijver gemakkelijker om mee te beginnen. Selenium verschijnt nog steeds in veel vacatures, dus controleer uw lokale markt. De kernconcepten worden tussen hen overgedragen.

Blijf leren

Werk met Stack Quora

Hulp nodig met testen, WordPress of SEO?

We helpen teams betere software te leveren en hun sites te laten groeien. Vertel ons waar u mee bezig bent en wij stellen een duidelijke volgende stap voor.

Blijf lezen

Meer handleidingen over testen, AI en moderne ontwikkeling

Genoten van dit artikel? Kies een onderwerp en ga direct naar onze nieuwste tutorials.

Kunstmatige intelligentie

AI-hallucinaties uitgelegd: waarom taalmodellen dingen verzinnen en hoe ze te verminderen

AI-hallucinaties uitgelegd: wat ze zijn, waarom taalmodellen ze produceren, veelvoorkomende typen, hoe je ze kunt verminderen met aarding en aanwijz…

Lees artikel →
DevOps

Omgevingsvariabelen uitgelegd: .env-bestanden, geheimen en configuratie goed gedaan

Omgevingsvariabelen uitgelegd met Python-voorbeelden die we hebben uitgevoerd: ze lezen en instellen, waarom elke waarde een string is, .env-bestand…

Lees artikel →
Softwareontwikkeling

API-snelheidsbeperking uitgelegd: algoritmen, headers en afhandeling van 429-fouten

API-snelheidsbeperking uitgelegd met een simulatie die we hebben uitgevoerd: token-bucket, vast venster, schuifvenster, 429 reacties, headers van sn…

Lees artikel →
Testautomatisering

Spotten in Python: unittest.mock, patch en de fouten die tests doen liegen

Spotten in Python met unittest.mock, getest: Mock en return_value, side_effect, patchen waar een naam wordt gebruikt, spec en autospec, spotdatums e…

Lees artikel →
Softwaretesten

Codedekking uitgelegd: lijn versus filiaaldekking en wat 100% werkelijk betekent

Codedekking uitgelegd met een echte dekking.py-run: dekking van lijnen, vertakkingen en condities, een rapport lezen, waarom 100% dekking nog steeds…

Lees artikel →
Databases & SQL

DELETE versus TRUNCATE versus DROP in SQL: verschillen, terugdraaien en wanneer elk te gebruiken

DELETE versus TRUNCATE versus DROP uitgelegd met geteste SQL: wat elk verwijdert, terugdraaien, triggers, identiteitsreset, snelheid en hoe PostgreS…

Lees artikel →
Databases & SQL

SQL-weergaven uitgelegd: creëer, gebruik en vermijd de valkuilen, met voorbeelden

SQL-weergaven uitgelegd met query's die we hebben uitgevoerd: een weergave maken, live resultaten, kolommen verbergen, prestaties, bijwerkbare en ge…

Lees artikel →
Softwareontwikkeling

TypeScript-interface versus type: echte verschillen, getest met de compiler

TypeScript-interface versus type, gecontroleerd met de echte compiler: wat beide kunnen doen, wat slechts één kan doen, samenvoegen van declaraties,…

Lees artikel →
Softwareontwikkeling

Python *args en **kwargs uitgelegd: flexibele functies met duidelijke voorbeelden

Python *args en **kwargs uitgelegd met code die we hebben uitgevoerd: in- en uitpakken, parametervolgorde, argumenten die alleen trefwoorden en posi…

Lees artikel →
Softwareontwikkeling

Python Lambda-functies: syntaxis, echt gebruik en wanneer u ze niet moet gebruiken

Python lambda-functies uitgelegd met code die we hebben uitgevoerd: syntaxis, sorteren met sleutel, kaart en filter, sluitingen, de laat-bindende va…

Lees artikel →
Kunstmatige intelligentie

Wat zijn AI-agenten? Hoe ze werken, met een eenvoudige agentloop die u kunt uitvoeren

Wat zijn AI-agenten? Een duidelijke gids voor de agentenlus, tools, geheugen en vangrails, met een kleine Python-lus die we hebben uitgevoerd, echte…

Lees artikel →
DevOps

Monitoring versus waarneembaarheid: het echte verschil, met logboeken, statistieken en sporen

Monitoring versus waarneembaarheid uitgelegd: bekende en onbekende fouten, logboeken, statistieken en sporen, een walkthrough voor afrekenincidenten…

Lees artikel →
DevOps

Docker-volumes versus bindingsmounts: bewaar containergegevens op de juiste manier

Docker-volumes versus bind-mounts uitgelegd: waarom containergegevens verdwijnen, benoemde volumes, bind-mounts, tmpfs, Compose-voorbeelden, back-up…

Lees artikel →
Testautomatisering

TDD versus BDD: belangrijkste verschillen, één functie die op beide manieren is gebouwd en wanneer deze moet worden gebruikt

TDD versus BDD uitgelegd met één kortingsfunctie die in beide richtingen is gebouwd: rood-groen-refactor met code die we hebben uitgevoerd, gegeven-…

Lees artikel →
Softwaretesten

Gebruikersacceptatietesten (UAT): proces, checklist en echte voorbeelden

Gebruikersacceptatietesten uitgelegd: wie voert het uit, hoe het verschilt van QA, een proces in zeven stappen, een UAT-testcase-sjabloon, een check…

Lees artikel →
Databases & SQL

SQL NULL-waarden uitgelegd: IS NULL, COALESCE, NULLIF en de te vermijden vallen

SQL NULL-waarden uitgelegd met query's die we hebben uitgevoerd: logica met drie waarden, IS NULL, COALESCE, NULLIF, hoe aggregaten, joins en sorter…

Lees artikel →
Databases & SQL

SQL CASE WHEN-instructie: syntaxis, echte voorbeelden en veelvoorkomende fouten

SQL CASE WHEN uitgelegd met vragen die we hebben uitgevoerd: eenvoudige en doorzochte formulieren, volgorde van de voorwaarden, draaipunten met SUM,…

Lees artikel →
Softwareontwikkeling

Wat is JWT? JSON-webtokens uitgelegd met een werkend voorbeeld

Wat is JWT? JSON Web Tokens uitgelegd: de drie delen, een token gebouwd en waarmee is geknoeid in de code die we hebben uitgevoerd, JWT versus sessi…

Lees artikel →
Softwareontwikkeling

JavaScript-gebeurtenislus uitgelegd: call-stack, microtaken en timers met voorbeelden

De JavaScript-gebeurtenislus uitgelegd met code die we hebben uitgevoerd: call-stack, taak- en microtask-wachtrijen, waarom setTimeout 0 niet onmidd…

Lees artikel →
Softwareontwikkeling

Python-generatoren en opbrengst uitgelegd: bespaar geheugen met echte voorbeelden

Python-generatoren en opbrengst uitgelegd met code die we hebben uitgevoerd: hoe ze pauzeren en hervatten, gemeten geheugenbesparingen, pijplijnen, …

Lees artikel →
Kunstmatige intelligentie

Wat zijn inbeddingen? Vectoren en cosinusovereenkomst eenvoudig uitgelegd

Wat zijn insluitingen? Een gids in duidelijke taal over vectoren, cosinusovereenkomst en semantisch zoeken, met een klein voorbeeld dat we hebben ui…

Lees artikel →
DevOps

Implementatie van blauwgroen versus kanarie: verschillen, afwegingen en hoe te kiezen

Blauw-groen versus kanarie-implementatie uitgelegd: hoe elk werkt, kosten, risico's en terugdraaien, stabiele gebruikersbucket die we hebben getest,…

Lees artikel →
Testautomatisering

Schilferige tests: wat de oorzaak ervan is en hoe u ze voorgoed kunt oplossen

Zwakke tests uitgelegd met demo's die we hebben uitgevoerd: de belangrijkste oorzaken, hoe je er een kunt bevestigen en diagnosticeren, goede oploss…

Lees artikel →
Softwaretesten

Belastingtesten versus stresstesten: verschillen, statistieken en k6-voorbeelden

Belastingtesten versus stresstesten uitgelegd: wat elk bewijst, piek- en soak-tests, de statistieken die er toe doen, waarom gemiddelden misleiden, …

Lees artikel →
Softwaretesten

Testcase versus testscenario: belangrijkste verschillen, voorbeelden en wanneer deze te gebruiken

Testcase versus testscenario uitgelegd: duidelijke definities, een tabel naast elkaar, één functie voor het opnieuw instellen van wachtwoorden, over…

Lees artikel →
Databases & SQL

Optimalisatie van SQL-query's: lees uitvoeringsplannen en repareer langzame query's, met timing

Optimalisatie van SQL-query's getest op een miljoen rijen: lees uitvoeringsplannen, voeg de juiste indexen toe, repareer niet-sargeerbare filters, g…

Lees artikel →
Databases & SQL

SQL UNION versus UNION ALL: verschillen, voorbeelden en geteste prestaties

SQL UNION versus UNION ALL uitgelegd met de query's die we hebben uitgevoerd: duplicaten, de regels volgen beide, een echte databug, gemeten prestat…

Lees artikel →
Softwareontwikkeling

JavaScript Fetch API-tutorial: GET, POST, foutafhandeling en time-outs

Een JavaScript Fetch API-tutorial getest tegen een lokale server: GET en POST, waarom 404 niet gooit, een herbruikbare helper, queryreeksen, time-ou…

Lees artikel →
Softwareontwikkeling

Python-bestandsverwerking: lezen, schrijven, CSV, JSON en pathlib met voorbeelden

Het verwerken van Python-bestanden uitgelegd met code die we hebben uitgevoerd: open modi, met het lezen van grote bestanden, CSV, JSON, pathlib, bi…

Lees artikel →
Softwareontwikkeling

Python-klassen en -objecten: OOP-zelfstudie met echte voorbeelden

Python-klassen en -objecten uitgelegd met code die we hebben uitgevoerd: __init__, methoden, klasse versus instantie-attributen, overerving, eigensc…

Lees artikel →
Kunstmatige intelligentie

Wat is een groot taalmodel? Hoe LLM's werken, uitgelegd zonder de hype

Wat is een groot taalmodel? LLM's uitgelegd in duidelijke taal: tokens, inbedding, aandacht, training, temperatuur- en contextvensters, een kleine d…

Lees artikel →
DevOps

Linux-opdrachten voor beginners: de essentiële terminalgids met voorbeelden

Linux-opdrachten voor beginners, gegroepeerd op taak: navigatie, bestanden, logboeken bekijken, grep, pipelines, machtigingen, processen en archieve…

Lees artikel →
Testautomatisering

Selenium versus toneelschrijver: belangrijkste verschillen, code vergeleken en welke te kiezen

Selenium versus Playwright vergeleken: architectuur, wachten, browser- en taalondersteuning, debuggen, dezelfde test in beide tools, migratieadvies …

Lees artikel →
Softwaretesten

Equivalentiepartitionering: testontwerptechniek uitgelegd met uitgewerkte voorbeelden

Equivalentiepartitionering uitgelegd: hoe je geldige en ongeldige partities kunt vinden, uitgewerkte voorbeelden voor leeftijden, wachtwoorden en ko…

Lees artikel →
Softwaretesten

Ernst versus prioriteit bij het testen van software: verschillen, matrix en echte voorbeelden

Ernst versus prioriteit bij het testen van software uitgelegd: duidelijke definities, een vierwegmatrix met voorbeelden, niveauschalen, wie deze bep…

Lees artikel →
Databases & SQL

Tutorial voor SQL-subquery's: typen, gecorreleerde subquery's en BESTAAN met voorbeelden

Een SQL-subquery-tutorial met query's die we hebben uitgevoerd: scalaire, IN-, FROM- en SELECT-subquery's, gecorreleerde subquery's, EXISTS, de NOT …

Lees artikel →
Databases & SQL

SQL-transacties en ACID uitgelegd: COMMIT-, ROLLBACK- en isolatieniveaus

SQL-transacties en ACID uitgelegd met een bankoverschrijving die we hebben uitgevoerd: COMMIT, ROLLBACK, savepoints, locks, isolatieniveaus, dirty r…

Lees artikel →
Softwareontwikkeling

Git merge vs rebase: verschillen, voorbeelden en wanneer je wat gebruikt

Git merge vs rebase uitgelegd met echte logoutput, een vergelijkingstabel, de gouden regel van rebase en een veilige teamwerkwijze.

Lees artikel →
Softwareontwikkeling

Python list comprehension: syntaxis, voorbeelden en wanneer je het vermijdt

Python list comprehension uitgelegd: syntaxis, filteren, if-else, geneste lussen, gemeten tijden en wanneer een gewone for-lus beter is.

Lees artikel →
Databases & SQL

SQL JOIN uitgelegd met voorbeelden (Inner, Left, Right, Full)

Begrijp SQL joins stap voor stap met voorbeeldtabellen en queries: INNER, LEFT, RIGHT, FULL, CROSS en SELF, plus veelgemaakte fouten en prestatietips.

Lees artikel →