An error that occurs when code compiles and runs, but doesn't perform correctly. E.g. using > instead of >=. It is detected by systematic testing with a trace table
A plan for testing a program in a structured way. Includes test data and expected results. Proper testing with one of these can find logic errors and prevent runtime errors
A testing tool that finds logic errors. It records the values of variables at each point during execution, so you can see where the program code does something you didn't intend