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.
- 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:
- Is er een meetbaar probleem? Slechte tests of trage foutopsporing zijn goede redenen. “Het is nieuwer” is dat niet.
- Hoe groot is de suite? Honderd tests kunnen worden verplaatst. Tienduizend is een groot project.
- Zijn uw paginaobjecten schoon? Goede abstracties maken de verplaatsing veel goedkoper.
- 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
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.
Meer handleidingen over testen, AI en moderne ontwikkeling
Genoten van dit artikel? Kies een onderwerp en ga direct naar onze nieuwste tutorials.
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 →DevOpsOmgevingsvariabelen 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 →SoftwareontwikkelingAPI-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 →TestautomatiseringSpotten 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 →SoftwaretestenCodedekking 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 & SQLDELETE 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 & SQLSQL-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 →SoftwareontwikkelingTypeScript-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 →SoftwareontwikkelingPython *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 →SoftwareontwikkelingPython 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 intelligentieWat 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 →DevOpsMonitoring 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 →DevOpsDocker-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 →TestautomatiseringTDD 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 →SoftwaretestenGebruikersacceptatietesten (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 & SQLSQL 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 & SQLSQL 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 →SoftwareontwikkelingWat 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 →SoftwareontwikkelingJavaScript-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 →SoftwareontwikkelingPython-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 intelligentieWat 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 →DevOpsImplementatie 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 →TestautomatiseringSchilferige 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 →SoftwaretestenBelastingtesten 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 →SoftwaretestenTestcase 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 & SQLOptimalisatie 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 & SQLSQL 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 →SoftwareontwikkelingJavaScript 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 →SoftwareontwikkelingPython-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 →SoftwareontwikkelingPython-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 intelligentieWat 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 →DevOpsLinux-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 →TestautomatiseringSelenium 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 →SoftwaretestenEquivalentiepartitionering: testontwerptechniek uitgelegd met uitgewerkte voorbeelden
Equivalentiepartitionering uitgelegd: hoe je geldige en ongeldige partities kunt vinden, uitgewerkte voorbeelden voor leeftijden, wachtwoorden en ko…
Lees artikel →SoftwaretestenErnst 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 & SQLTutorial 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 & SQLSQL-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 →SoftwareontwikkelingGit 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 →SoftwareontwikkelingPython 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 & SQLSQL 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 →