Issue #321
Testing in an Agentic World 🔎
| |||
| Welcome to the 321st issue!
A great opener to a super insightful article by Charles Fulnecky based on a decade of experience across various projects. Just have a read — Testing in an Agentic World. Happy testing! | |||
| | |||
| |||
| |||
| | |||
| |||
| Dev is moving faster so how are you keeping up with the testing? That's an important question that many people in software engineering are asking themselves right now. Testers share how they do it and offer advice. On that note, Alan Page shares a good reminder that More Isn't the Reward, while Heemeng Foo explains why Context Is the New Technical Debt. | |||
| How I Used a QA Agent Workflow to Reduce Manual Testing Pressure If you run tests without knowing which cases they cover, James Cullimore has a practical workflow that adds traceability and confidence ratings to close that gap. Moreover, Rishi Raj shares an interesting story on how I Almost Built an AI QA Engineer. Then I Did the Math and Built the Boring Version Instead. | |||
| Stop Prompting and Start Specifying: SDD as the New Core of the STLC Armando José Serrano Escalona walks through how SDD, BDD and TDD can work as one system where specs become the source of truth for AI to write code and tests. Also, Daniel Dahlin asks: Who Gets to Decide What the AI Tests? | |||
| What is a good Senior QA like? Good question, especially in the age of AI. There's some great advice from the community sharing different points of view on what makes you a Senior tester. I also liked Apzal Bahin's short explanation on Why I Test: The Real Reason I Show Up Every Day as a QA. | |||
| Why did testing miss this… Because you didn't set a risk appetite When something goes wrong, it's easy to blame testing. Callum Akehurst-Ryan says why it's important to get leadership to define acceptable risks from a quality perspective. | |||
| | |||
| |||
| 17 PRs a Day, One QA: How We Automated E2E Failure Triage Denis Skvortsov describes how his team replaced manual investigation of failed tests with a bot that reads test results, PR diffs and logs, and then decides whether to file a ticket or trigger a rerun. | |||
| Automation Before Automation: An Intermediate Phase In Modern Software Testing Liudas Jankauskas wrote a paper proposing a new phase between exploratory and automated testing powered by AI-generated disposable tests, including a study showing how it found bugs in a production API. Moreover, S Chathuranga Jayasinghe gives some food for thought: We Keep Patching Test Automation. Should We Rebuild It Instead? | |||
| Do We Still Need to Write API Tests? An Experiment with LLM Agents Testing a REST API If you want to know how good AI agents are at finding API bugs, Oleksandr Podoliako has the data: 50 runs, seven planted bugs and a few surprises about which model even finishes the job. Furthermore, Obafemi Oderanti advocates for Building Reliable APIs: Why Testing Must Be Non-Negotiable. | |||
| Evals Are Just QA With a New Name: How to Actually Test Skills and RAG Amit Rawat argues that evals are QA with a new name and demonstrates how to test agent skills and knowledge bases with real code and numbers. On top of that, Yiğit Taş reminds us that Your Prompts Have No Test Coverage. | |||
| The Modern Page Object Model: Less Shared Code, Easier Changes Are you still using Page Objects the traditional way? Anton Gulin shows five outdated habits and a cleaner pattern with locators in the constructor and assertions back in tests. Examples in Playwright, but applicable to other frameworks, too. In relation to that, David Ingraham demonstrates A One-Second Static Check for E2E Selector Drift. | |||
| Your green tests are lying Vladyslav Dmitriiev found that some tests pass not because the feature works but because the assertion can never fail, and built a tool that inverts assertions to prove the point. Because, as Dmitry Shyshkin says, The Assertion Is the Hard Part, while James Thomas explains that it's Better Isolate Than Never. | |||
| | |||
| |||
| A Practical Guide to Building a Load Model in Performance Testing Daniel van Bavel explains the foundation of a performance test load model to help you understand how think time and pacing work together to simulate real user behaviour. You can learn more in the second and third parts. Speaking of that, Shohanur Rahman created a k6 Performance Testing Suite that you can use or get inspired by to create your test harness. | |||
| Designing an AI-Assisted Mobile QA Framework That Teams Can Maintain Rashiprabha Atapattu shares the first part of the journey of setting up a test harness for AI mobile automation, including clear assumptions and rules. The second part tells more about specific Copilot setup. Moreover, James Cullimore shares a lesson learned on How One Missing undefined Cut My Android Test Runtime by 72%. | |||
| Flaky No More — Catching Broken Images Your Playwright Tests Can't See Sewmini Jayaweera explains why Playwright's | |||
| Playwright MCP Gives an AI Agent a Browser. I Gave Mine a Governed Model of the Application. Using Playwright MCP? Daniel Dahlin shares why they didn't build a test-generation agent with it, but instead used a versioned model of the app as the source of truth. Moreover, Mohammad Faisal Khatri gives a good overview of Playwright Browser vs BrowserContext vs Page: Complete Guide with Examples. | |||
| | |||
| |||
| How to Think About Biases (For Testers) When James Bach and Jon Bach talk, you can always learn something useful. Enjoy this 27-minute discussion about the importance of thinking in our roles. | |||
| Testing an AI Chat Bot Overview Exercises Want to practice testing an LLM-based chat interface? Alan Richardson created a free playground app specifically for that, as demonstrated in this 7-minute demo. | |||
| | |||
| |||
| | |||
| Thanks for reading! If you enjoy this newsletter and find it helpful in becoming a better tester, please consider sharing it with others. |