Writing scenarios to test a functionality involves a lot of thinking. Over time test cases and scenarios become complex even for trivial applications.