A Comprehensive Guide to Scenario-Based Testing in Software Development