- an action we're trying to take
- a configuration we're attempting to run
This action then either completes successfully or it reveals a bug. Great!
Sometimes, though, it's useful to start with the bug. When approaching the system, conceive of a bug that you might find. Use your knowledge of the architecture of the system to seek out some potential issue. For example, you might believe that there could be a race condition in saving data and reporting. Then design a test that would reveal the bug if it's present.
Starting with the bug is a valuable technique for when only a narrow range of tests or conditions will expose the bug. You're unlikely to stumble across it because the conditions that trigger it are fewer, so you need to start with the bug and then go hunting for it. Think of starting with the bug when you're testing for deadlocks, race conditions, and security tests in particular.
Give it a shot. Maybe you'll get lucky and the bug you imagine doesn't exist... but maybe it will, and you'll have found it because you're looking for it.