A team runs a static analysis tool on every pull request, sees a clean scan, and ships an API with a BOLA vulnerability that lets any authenticated user read any other user's data by changing an ID in the URL. The static scanner was never going to catch this — it reads source code, and the code that fetches an order by ID looks completely ordinary; nothing in the code's structure signals that the authorization check for that ID is missing, because the absence of a check that should exist isn't a pattern a scanner reading syntax can recognize. This is not a failure of the tool; it's a mismatch between what the tool was built to find and what the team assumed it covered.
Different testing techniques catch structurally different categories of flaw, and none of them, individually or even all together, is a substitute for the others. Understanding what each one actually sees — and, just as importantly, what each one is structurally blind to — is what lets a team build a testing strategy that has real coverage instead of a checklist of tool names that sounds thorough but leaves the exact gap an incident eventually finds.