A Software Testing career involves working towards the assurance of software quality. More than 40% of the time and effort of software development is spent in various forms of testing involving various people like developers, testers, users, etc. Testers have to assure that software works as intended (meets stated or intended requirements) and also ensure that there are no unintended consequences of usage of the software. For example, when testing online banking software, the tester has to ensure that the software allows you to check your account, transfer money, etc. which are the stated user requirements. Additionally, the tester has to ensure that the software is user-friendly and does not confuse the user, is secure and cannot be hacked into and performs well under pressure when thousands of people check their accounts at the same time.
There are three important aspects to becoming an expert software tester
a. Software Testing Techniques: Understanding the fundamental techniques of software testing and becoming good at these techniques. Basics of software testing can be learnt through certifications like ISTQB (International Software Testing Qualifications Board) or CSTE (Certified Software Tester). And implementing these techniques by executing various types of software testing on the job. Testers need to review code to understand the workflow of software and identify defects even before the entire system is built. This is called white box testing. Testers also perform black box testing which is working with functional software to identify defects. Apart from these, testers also check non-functional aspects like performance, security, usability, etc.
b. Software Testing Tools: Learning to use different software testing tools for various purposes like Defect Tracking, Test Management, Test Automation, Performance Testing, Security Testing, etc. There are vendor supported tools like HP Quick Test Professional, HP Load Runner, IBM Rational Robot, Ranorex, as well as Open Source tools like Selenium, jMeter, Bugzilla, etc. A tester should be able to use multiple tools across various areas since technology is changing fast but the fundamentals of these varied tools and their features remain the same. Testers need to be able to write code to implement these tools. Software testing requires a deep technical frame of mind to identify and provide solutions to software defects.
c. Domain: Focusing on and learning a domain. Domains can be vertical domains like Banking, Insurance, Manufacturing, or horizontal domains that are used across multiple industries like Customer Relationship Management, Supply Chain Management, etc. For example, Understanding of banking processes is necessary to test Banking software. Similarly there are testers who bring not only technical knowledge of tools and technology but also domain knowledge to the table.