To be a successful tester, I believe you need a different mindset than developers. Developers are trying to implement a feature based on requirements or use-cases.
As a tester, your mindset is somewhat: "how can I break or misuse this feature?"
Of course, you want to make sure the use-case, the requirements are fully implemented. That's the obvious part. To be able to do this, you need to understand the product you are testing, understand the feature from a user point of view and validate it. Also, as a developer understands the interactions with the rest of the product.
But going further, this is all the mis-clicks, errors ... that developers do not necessarily have in mind that you need to test. In some view, we ask a good tester to be a hacker or breaker.
#1) You Understand Priorities
Software tester unknowingly becomes a good time manager as the first thing he needs to understand is a priority. Most of the time, you are given a module/functionality to test and timeline (which is always right) and you need to give output. These regular challenges make you understand how to prioritize things.
#2) You Ask Questions
Asking questions is the most important part of Software Testing. If you fail at it, you are going to lose an important bunch of information.
#3) You Can Create Numbers Of Ideas
As I have written in almost my all posts, Software Testing is about ideas. When you can generate numbers of ideas to test the product, you stand out of crowd as most of the time people feel self-satisfaction after writing ordinary functional and performance test cases.
#4) You Can Analyze Data
Being a tester, you are not expected to do testing only. You need to understand the data collected from testing and need to analyze them for the particular behavior of application or product.
There is no bug that is non-reproducible. If it occurred once that means it’s going to pop out for the second time. But to reach out to the root cause, you need to analyze the test environment, the test data, the interruptions etc.
#5) You Can Report Negative Things In A Positive Way
Yes, you read it correctly. A tester needs to learn tactics to deal with everyone around and needs to be good at communication. No one feels good when he/she is being told that whatever they did was completely or partially wrong. But it makes a whole lot of difference in reaction when you suggest doing something or rectifying something with better ideas and without an egoistic voice.
#6) You Are Good At Reporting
For the whole day, you worked and worked and executed numbers of test cases and marked them as pass/fails in test management tools. What would be your status at the end of the day? No one would be interested in knowing how many numbers of test cases you executed. People want a short and sweet description of your whole day task.
#7) You Are Flexible To Support Whenever It’s Required
The duty of software tester does not end after reporting a bug. If the developer is not able to reproduce the bug, you are expected to support to reproduce it because then only the developer will be able to fix it.
#8) You Are Able To Co-relate Real-time Scenarios To Software Testing
When you are able to co-relate testing with real life, it’s easy. Habituate yourself to think or constantly create test cases about how to test a train, how to test a vegetable, how to test a monument and see how it helps in the near future. It will help your mind to constantly generate ideas and relate testing with practical things.
#9) You Are A Constant Learner
Software testing is challenging because you need to learn new things constantly. It’s not about gaining the expertise of specific scripting language; it’s about keeping up with the latest technology, about learning automation tools, about learning to create ideas, about learning from experience and ultimately about constantly thriving.
10) You Can Wear End User’s Shoes
You are a good tester only when you can understand your customers. The customer is GOD and you need to understand his/her needs. If the product does not satisfy customer needs, no matter how useful it is, it is not going to work. And it is a tester’s responsibility to understand the customer.
Aditi's response is very comprehensive, and as someone who has functioned as a tester, a test lead and a QA manager in a career that has spanned nearly 25 years, the only thing I would add is to keep this idea in mind: the main objective of any tester is to look for problems that threaten the product's value. If your intention is to find the most bugs, you may be viewed as a good tester, but the tester who reveals the biggest threats to a product's value will contribute the most to its perceived quality.
A great start is to follow Michael Bolton on LinkedIn and read his blog and articles on his web site, Developsense (https://developsense.com/) to gain a better understanding of what testing is truly about.
Good luck in your future. Don't be someone else. Be yourself.
Michael and Aditi provide great comments on Tester Mindset and Approach. Couple of additional areas to consider. A Software Tester is a Software Engineer building up a Test Suite that verifies the Program developed by the Developer. Learning Software Development with the Testing mindset is important. Couple of examples. Software Engineering skills of critically reading a Specification, Enumerating the required behaviors, and building tests are required for testing. To test a System that uses a technology such as SQL you have to know SQL. Writing programs to generate random inputs makes the tester more effective.
The Test Activities Section in the Software Engineering Book of Knowledge (enumeration of what a Software Engineer should know/learn) gives a summary - http://swebokwiki.org/Chapter_4:_Software_Testing#Test_Activities . You might also scan the entire chapter to get a feel for the range of work/skills.