Backtesting can be very useful if done correctly. I wouldn't like to blindly trade a system that had in the past excessive drawdown and a small profit factor. At the same time, backtesting cannot provide any kind of certainty for future performance. Most people abuse backtesting by employing optimization. This is the main cause of losses. In addition, if some programs generate wrong results, things can get much worse.
I have noticed in the past that some backtesting programs did not generate signals where they should but I did not pay any attention to this crap. Most program vendors do not understand what their programs do anyway. Only when you develop your own you can have an understanding of what it does.