You should execute all logical decisions on their tree and false sides. You should execute all independent paths within a module at least once. You should execute all loops at their boundary conditions. You should execute all interfaces at their boundary conditions.