I led the automation team that used QTP, and I hated it. The recording / playback functionality was terrible, it was usually confusing, which led to strange test results. A record can only be used to create a database of objects, and even then she had to give all kinds of hacks to make it work somewhat reliably.
QTP / QC is based on ActiveX / COM and can only be written using VBScript, which is another flaming dog poo package. There are all these hacks and tricks that we had to do to get any extensibility. We did things such as running a test, which dynamically adds a QTP test to the test suite, edits input parameters, changes the object repository to suit the environment, saves the test, creates an instance of the scheduler to run the test. After the test completes, copy all the results to the parent test, and then remove the QTP test from the test suite. In the end, we ended up publishing custom COM components that VBScript called and used QTP / Quality Center as a semi-powerful reporting engine, which in fact did not provide enough flexibility to get the type of reports that we really need.
Another problem with Mercury / HP is that they transferred all their technical support to India and did not train them. It was common to spend 2 weeks on a lower level of purgatory support before you could talk to anyone with any technical knowledge of the API, just to say that yes, this is a mistake, but we will not fix it.
I regret the strong language, but I found that the whole episode is traumatic and will never work on a project or for a team that uses QTP / QC again.
source share