Before learning the intricacies of Software testing, one needs to know what are the pre requisites to learn testing. It is very important to gain a momentum and know the computer terminologies for any layman such as what is a program, how does a software work, what is the life cycle of any software, different languages used (high level knowledge is preferred), what is meant by execution of a software, different kinds of executables( exe, binaries etc), etc.
After knowing this, you should start learning various terminologies used in software testing such as process, test strategies, methodologies, types of testing, tools used etc. After this learn what is the bug life cycle, how can we detect bugs, different bug status, bug priority, bug severity, how do we go about systematic testing, understanding the difference between defects, errors, bugs, etc. Internet has lot of resources which can give you authentic and appropriate information regarding various aspects. You can even ask your doubts in the software testing forums, subscribe to the feeds and newsletters to learn more about the current happenings in testing world.
Finding faults in the functionality is the first step to learn testing for beginners. It is also important to understand the requirements, this can be done by reading the requirement or functional and design specification documents. It would be great to learn software testing on the job. If requirements are not clear or no requirements are given then use your common sense, confirm with seniors and clients. Remember there should not be any assumptions in software testing; it should be strictly carried out in compliance with the client requirements. Try to test in an explorative fashion which will help you even if you do not have any user guides and documents. Creativity counts to the quality of the product, hence be more creative and expand your horizons as much as possible while examining the software.
In some cases test cases would have been given where you have to just do checklist verification against the expected and actual results. While in many other cases you might have to do some adhoc testing, I would suggest the more you test the software in an adhoc way, the more you will learn about the software, hence easier would it be to test it.
It is very much true that books are man’s best friends. Ian Somerville is the best book for beginners. You can also go for testing certifications which are provided by various vendors like QAI, ISTQB, CSTP and CSTE. Certifications in both manual, automated are available, which could give you in depth knowledge of testing along with certification which could be very easy in landing up with a decent job.