Statement coverage verifies that all executable statements are run, but it cannot detect statements that should exist but don't (missing requirements). Unused branches, dead code, and unused statements may still be executed and thus covered by statement coverage.