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.