Software testing is a process of evaluating the software for
reliability, validation, verification, quality assurance. The purpose of
software testing is to find bugs or defects in order to make software better. Testing
generally occurs once the product is developed, however in case of agile methodology
testing occurs in parallel to product development. Detecting bugs/
errors/defects are equally difficult because of the complexity of software. It
also depends on the understanding of software by the tester, i.e. deeper
working knowledge the tester has the more better testing can be done which
could find bugs related to coding error, logical error, business case error or
flow of data within the software. Good test cases which could relate very
nearly to real world scenarios play a vital role in making software testing
more reliable. Given this, not all combinations of inputs can be tested as this
number could be very large.
Software testing process can be classified into various
categories based on purpose. For example, classified into correctness,
performance, reliability and security1 . Sometimes software
testing is done on when the program is running which is called as dynamic
It refers to the minimum requirement that the software must meet. It can be
performed in two ways either in black-box or white-box.
In black box testing,
the aim is to check the software for its functionality against the input and
output received. Since the test case space is huge considering that more the
test cases more confident one is with the software product, however this may
not be possible in real case. Hence, in black box testing effectiveness of test
cases versus cost is of importance. Creating an exhaustive list of test cases
which can represent variety of different test cases plays a vital role.
In white box testing test cases are prepared on programming
logic, styles and business logic.
In this the performance of the software is tested. It is measure of how fast
the software responds to a query. It should not take infinite amount of time to
resolve the query. Its goal is to identify any performance delays, bottlenecks
in the software.
Reliability testing: It is a testing process where we test how failure
free is our software. This testing can help us in getting failure data which
can be used to estimate the current state of software and the future reliability
of software. This helps estimation would help software developers in creating
better software. In robustness testing we test the software against machine crashes1,
abnormal termination1 etc.
This testing is done to see how the software is against any security attacks or
hacks. It is a test against any kind of malicious attacks since most of the
software these days offer online services this testing is one the critical testing
process as the data can be easily scrapped from web.
Based on the level of testing done, testing can be
classified as unit testing2, integrated testing2,
system testing2 etc. Unit testing is testing only one module of
the software, for example in a banking software which has a module that record
client data the testing done on this one module is called unit testing. In
integrated testing, two or more modules are tested together to check the data
There are several tools available that help in all
these testing and different companies use different tools.