A few attributes of a good tester include curiosity, professional pessimism, a critical eye, attention to detail and good communication skills. You would need to try to think of all possibilities and question everything. Another thing to remember is that if you are in doubt of something being a bug, then log it as a bug. It is important to focus on quality!
Some important skills that a tester should have includes reading, writing, product knowledge and testing knowledge. Reading is important because as a tester, you spend a lot of time reading requirements, emails and reviewing test cases, while writing is important for creating test cases and other testing documentation.
It is important for the tester to understand the business area that they are in, projects that they are working on and to have an understanding of requirements and documentation so that they will know what and how to test.
Testing skills are important and should be seen professionally and as a specific set of skills which include scripting, test design, exploring and attacking the system, creation and use of testing tools, building performance models, writing good bug reports, and more.
It would also benefit you to learn a programming language if you are getting into Automation testing as you would be able to write more complex test scripts.
There are different levels of tester independence that range from the lowest level being: testing by the test item’s author to the highest level being: testing by a person or people from a different organisation or company.
Just like testing and developing are different activities, the mindsets that are required are different too. Developers can test their own code, but it is more effective for a tester to do it because they are more objective and do not have the authors bias. Developers tend to rather search for confirmation that what they built works which could lead to not finding as many defects, this is why it is important to have independent testers.
Testing can be seen as destructive or to be criticising when finding a failure, this is why it is very important for testers to communicate in a positive and neutral manner. It is important to work as a team and to remember that the testers are there to help achieve the best possible outcome. The key goal is quality and the entire team needs to work together to achieve that goal.