I think I tried TuffTest quite some time ago, don't believe I've seen it recently, I'll have to check it out.
I would guess, from what I've seen of messed up computers. That if there is a problem on a machine that has been "working fine" for a long time then suddenly doesn't, I'd give it a %90 chance that it is software related. Some random corrupt file or DLL, new spyware or a virus etc...
If the machine is new, or was just purchased, or hasn't been in service long, and it acts up, I give it more of a %70 chance of being software only problem. Especially because you don't know the working history of the system.
I use those two factors to decide whether I should tackle software diagnostics or hardware first. Although one might turn into the other. I have a pretty good sense of what side to check based on certain questions. "Anything new to the system?" (such as Antivirus or other software? Just went to high speed Internet? Got RAM upgrade a week ago? Uninstalled a program you thought was bad? Just moved from out of town? Etc...)
Even in super-rare occasions I've seen one side leak to the other. Case in point: If XP is installed on a machine that has bad RAM, thus causing problems in XP, and the RAM is replaced, XP may still act up. Not sure how, but corrupt data from bad RAM during install causes permanent errors in XP subsystem. Thus, replace the RAM, and have to reload again.
If you are talking about programming, then I would assume for SURE that a person would want to run hardware testers, TuffTest, benchmarks, stress testers, and so forth, to make sure the hardware is good during design time. To make sure any peculiars of his program isn't related to faulty hardware.
But surely, the easiest way to decipher whether a problem be hardware or software, is the drilling of information from the owner.
The only times I've seen a system have hardware problems on a machine that has a good history, would be things like:
Random hard drive crash
Invalid shutdowns (power out etc..)
System or CPU overheat
Underpowered power supply
And other such things that can happen over time. I see a lot of systems getting blown capacitors on the motherboard these days too. Likely from cheap OEM PS's that gradually decay over time.
Lastly, I'd say from all the systems I've worked on, software problems outweight hardware ones. But the hardware problems are not often easy to find without first reloading a machine to see if, what appears to be a software problem, will go away. But on the same note, what appears to be a software problem, can take hours from you when all it is is corrupt sector of the hard drive.
I guess that's why there aren't really any "hardware only" or "software only" techs out there.