I found this nice article at stickyminds.com, which discusses about identifying bugs in an application if you don't have any specs, reference programs, docs etc..
Excerpt from the article;
" A bug is something that bugs somebody who matters. Testers can't be sure that something will bug someone, and so we must apply heuristics--useful but fallible ways of solving a problem or making a decision. Oracles--heuristic principles or mechanisms by which we might recognize a bug--include comparable programs, documents, mathematical principles, personal experience, and people--"live oracles."
Emotional reactions are associated with a psychological and physiological phenomenon called "arousal," which is the state of becoming alert or awake. For good testers, emotional reactions are oracles--trigger heuristics that wake us up to the possibility of a problem. Although emotional reactions don't come with a guarantee, they can often aid our decisions about the existence or the significance of a problem.
We sometimes depend on logical and objective assessments of software at the expense of other ways of thinking--ways that include feeling. Most of the results that this system is returning are functionally correct, but that correctness doesn't matter when there are problems that interfere with the customers' goals. If we engaged emotions and empathy more often and more consciously, they would point us rapidly to things that are important to people. Try testing a program while simply pretending that we have some skin in the game.
Our customers constantly find bugs in our systems without any preparation, documentation, reference programs, or live oracles. Customers test the product by using it, and they recognize bugs and assess their significance and the associated value of our products. They can do that. So can we."
Have a look!!!!