ProvaLab Blog
Testing, security and load testing for teams that write code with AI agents.
Subscribe via RSSTwo free PDFs: the whole of each series, to read offline or print
Testing Basics (23 parts) and Hands-On Testing (7 parts), with every diagram.
Hands-On Testing · Part 7
· 8 min read
Your first load test with k6 (hands-on): find where your API slows down
Write and run a k6 load test against the API from Part 4, set pass/fail thresholds, read the summary, then run a stress test to 1,000 users and find where it slows, with the real output.
Read the post· 10 min read
Playwright with Python in practice: fixtures, page objects, saved state, mocked APIs and parallel runs
Hands-on: grow three Playwright tests into a real suite with page objects, pytest fixtures, saved browser state, an API mocked with page.route, and a parallel run that more than halves the time.
Read the post· 10 min read
50 software testing interview questions, with short answers and where to read more
The questions QA and test automation interviews actually ask, grouped by topic, each with a two-sentence answer and a link to the full explanation in our Testing Basics and Hands-On series.
Read the postHands-On Testing · Part 3
· 7 min read
API testing explained: what it is, why test the API before the UI, and what to check
What an API is and how API tests work, why they are faster and more stable than UI tests, the five things to check in every response, the kinds of API tests, and the tools teams use.
Read the postTesting Basics · Part 7
· 6 min read
Test design techniques: black-box, white-box and grey-box testing
The three ways of looking at software when you design tests, and the techniques for each, from boundary values and state transitions to statement and branch coverage.
Read the postTesting Basics · Part 10
· 5 min read
The bug life cycle explained: from New to Closed (and Reopened)
Every status a bug passes through, who moves it at each step, the side exits like Duplicate and Deferred, one bug followed from start to finish, and the habits that keep a bug tracker healthy.
Read the postTesting Basics · Part 22
· 6 min read
Exploratory testing explained: charters, sessions and heuristics
What exploratory testing is and isn't, how session-based testing works, how to write a charter, the heuristics skilled testers use to generate ideas, and how to report what you found.
Read the postHands-On Testing · Part 4
· 8 min read
Your first API tests in 15 minutes (Python, pytest and requests)
Build a tiny discount API you own, then write eleven pytest tests against it: functional, contract, negative, authentication and authorisation checks, with the real output and a planted bug.
Read the postTesting Basics · Part 5
· 5 min read
Your first automated test in 15 minutes (Python + pytest)
A hands-on, step-by-step guide to writing and running your first automated tests with Python and pytest, including what a failing test looks like and how to read it.
Read the postHands-On Testing · Part 2
· 7 min read
Your first Playwright test in 15 minutes (Python)
Install Playwright for Python, write three browser tests against a real website, run them headless, break one on purpose and read the failure, record a trace, and run the suite in CI.
Read the postHands-On Testing · Part 6
· 9 min read
Your first security scan with OWASP ZAP (hands-on)
Run a real DAST scan with OWASP ZAP against the API from Part 4, read the report, plant a SQL injection and watch the scanner find it, triage the findings, fix the bug and re-scan.
Read the post· 3 min read
How do you test code your AI coding agent wrote?
AI agents write features in minutes, but most teams still check that code the old way. Here is a practical way to verify AI-written code before it ships.
Read the postTesting Basics · Part 9
· 5 min read
How to write a good bug report (with template and examples)
What makes a bug report easy to act on, every field to include, severity vs priority explained, a good and a bad example side by side, and a copy-ready template.
Read the postTesting Basics · Part 8
· 5 min read
How to write a test plan (with a one-page example)
What a test plan is, the sections every plan needs, a one-page example you can copy, risk-based testing, and how test plans work in agile teams.
Read the postTesting Basics · Part 6
· 5 min read
How to write good test cases: template, examples and techniques
What goes into a test case, a ready-to-use template with real examples, the techniques testers use to pick the right cases, and the mistakes to avoid.
Read the postTesting Basics · Part 12
· 6 min read
Integration testing explained: approaches, stubs, drivers and examples
What integration testing is, why bugs hide where components meet, the big bang, top-down, bottom-up and sandwich approaches, stubs and drivers, and what to check at every integration point.
Read the postTesting Basics · Part 3
· 5 min read
Manual vs automated testing: what to automate, and what not to
When a person should test and when a machine should, how to decide what to automate, what automation really costs, and the tools teams use.
Read the post· 7 min read
MCP, plugins and skills, explained: how AI agents use ProvaLab
What MCP is, how Claude Code plugins and skills fit around it, what changed in the new stateless MCP, and how your coding agent can use ProvaLab through it.
Read the postTesting Basics · Part 16
· 7 min read
Performance testing and its types: load, stress, spike, soak, volume and scalability
What performance testing is, the six main types and when to use each, the metrics that matter (and why averages lie), how to run a performance test step by step, and the common mistakes.
Read the postTesting Basics · Part 20
· 6 min read
QA vs QC vs testing, and verification vs validation, explained
The difference between quality assurance, quality control and testing, and between verification and validation, with simple definitions, examples, the V-model, and comparison tables.
Read the postTesting Basics · Part 15
· 6 min read
Regression testing vs re-testing: what they are and why we do both
Why every bug fix needs re-testing, how regression testing catches what a change broke elsewhere, the differences between them, how to choose regression tests, and how to keep a regression suite fast.
Read the postTesting Basics · Part 11
· 6 min read
The requirements traceability matrix (RTM): prove everything is tested
What a traceability matrix is, how to build one step by step, forward and backward traceability, how to measure coverage, and how it answers "are we ready to release?"
Read the postHands-On Testing · Part 5
· 8 min read
Security testing basics: the OWASP Top 10 (2025) in plain language
What security testing is, the ten risks in the OWASP Top 10 2025 explained with everyday examples, the six kinds of security testing and which tools do them, and the checks you can add this week.
Read the postTesting Basics · Part 19
· 6 min read
The 7 principles of software testing, explained with examples
The seven testing principles from the ISTQB syllabus in plain language, each with a real-world example and what it means for how you test day to day.
Read the postTesting Basics · Part 14
· 5 min read
Smoke testing vs sanity testing: the difference, with examples
What smoke testing and sanity testing are, how they differ, when to use each, example checklists for a real app, and how to automate them.
Read the postTesting Basics · Part 4
· 6 min read
The Software Testing Life Cycle (STLC): all six phases explained
The six phases of the STLC in plain language, with what goes in and comes out of each, entry and exit criteria, how STLC fits the SDLC, and how it works in agile teams.
Read the postTesting Basics · Part 21
· 7 min read
Static testing explained: reviews, walkthroughs, inspections and static analysis
How to find defects without running the software: the four types of review, the review process, static analysis tools with a real example, and why static testing is the cheapest testing there is.
Read the postTesting Basics · Part 13
· 6 min read
System testing explained: testing the whole product, end to end
What system testing is, how it differs from integration and acceptance testing, its functional and non-functional types, example test cases, and how to do it well.
Read the postTesting Basics · Part 18
· 7 min read
Test coverage explained: the types, and how to calculate each one
The main kinds of test coverage (requirement, execution, code and platform), the formula for each with worked examples, sensible targets, and why 100% coverage isn't bug-free.
Read the postTesting Basics · Part 17
· 6 min read
Test runs and test results explained: statuses, pass rates and how to read them
What a test run and a test result are, how they relate to test cases, every result status, how to calculate pass rates correctly, and how to read a run so nothing important is missed.
Read the postTesting Basics · Part 23
· 8 min read
Testing in agile and CI/CD: how it all fits together
How testing works when a team ships every week or every day: whole-team quality, the agile testing quadrants, shift-left and shift-right, TDD and BDD, and testing at every stage of a CI/CD pipeline.
Read the postTesting Basics · Part 2
· 5 min read
Types of software testing explained: unit, integration, system and acceptance
The four levels of software testing in plain language, with one running example, plus the testing pyramid and the other testing words you will hear at work.
Read the postHands-On Testing · Part 1
· 8 min read
UI testing explained: what it is, how it works, and Selenium vs Playwright vs Cypress
What UI testing is and what it's for, how a browser test actually works, how to choose locators that don't break, why UI tests go flaky, and an honest comparison of Selenium, Playwright and Cypress.
Read the postTesting Basics · Part 1
· 5 min read
What is software testing, and why does every team need it?
A plain-language introduction to software testing: what it is, what it checks, when it happens, who does it, and the myths that trip teams up.
Read the post