Software Testing
Software
testing evaluates the capabilities of a given program in order to
determine if it meets the given requirements. Basically, when the
programmers finish their job, the software application is examined
for quality assurance so that it can be determined whether or not
it has all the features that it's supposed to and if it performs
the way it should. Some even say that software testing is actually
a form of art, because it involves a deep understanding of the
founding principles of software in general. The main difficulty in
software testing comes from the complexity of the software.
Software testing is not just debugging, it involves quality
assurance, validation and verification and reliability estimation.
Software testers try to balance between budget, quality and
time.
The general definition of software testing is that it's a
process of running an application for the sole purpose of finding
errors in it and determining if it meets its required results. The
biggest difficulty here is that software, unlike physical objects,
can fail in completely bizzare and strange ways and sometimes it's
not absolutely evident where the problem is coming from. Of course,
software doesn't suffer from corrosion or wear-out. Generally,
software doesn't change until it's upgraded so if there are errors,
they will remain buried in until fixed.
There will always be bugs in any software. It's impossible to
find a flawless piece of source code. We are humans and as such, we
make errors. Usually, the discovery of these errors is harder than
actually fixing them. This is where QA comes in. There are cases
though, when fixing one errors leads to the occurrence of another.
Computers and the respective software applications running on them
are often used in critical applications, that's why the results of
having a bug can be severe. There are cases where bugs have lead to
airplane crashes, stock market confusions and worse. Bugs can kill
and cause disasters. We are living in a computerized world where
the quality and reliability of software is of crucial importance.
Having top quality software means that it does all the functions
it's supposed to (as specified in the design plan), no more, no
less. Debugging is just one of the many methods of software testing
and it's made in order to find out design defects.
As mentioned, there is a wide range of software testing methods,
each one of them serving different purpose during the different
life cycle phases. Divided in terms of the goal served, software
testing can be divided in the following way - reliability testing,
correctness testing, security testing, performance testing.
|