Software Testing
Software testing should be
distinguished from the separate discipline of software quality assurance, which
encompasses all business process areas, not just testing.
There are many approaches to
software testing, but effective testing of complex products is essentially a
process of investigation, not merely a matter of creating and following routine
procedure. One definition of testing is "the process of questioning a product
in order to evaluate it", where the "questions" are operations the tester
attempts to execute with the product, and the product answers with its behavior
in reaction to the probing of the tester [citation need].
Although most of the
intellectual processes of testing are nearly identical to that of review or
inspection, the word testing is connected to mean the dynamic analysis of the
product—putting the product through its paces. The quality of the application
can, and normally does, vary widely from system to system but some of the
common quality attributes include capability, reliability, efficiency,
portability, maintainability, Compatibility and usability. A good test is
sometimes described as one which reveals an error; however, more recent
thinking suggests that a good test is one which reveals information of interest
to someone who matters within the project community.
White box and Black box testing
White box and black box
testing are terms used to describe the point of view a test engineer takes when
designing test cases. Black-box being external views of the test objects where
as white box being an internal view of the test objects. In recent years the
term grey box testing has come into common usage. Typical grey box tester is
permitted to set up or manipulate the testing environment, like seeding a
database, and can view the state of the product after his actions, like
performing a SQL query on the database to be certain of the values of columns.
It is used almost exclusively of client-server testers or others who use a
database as a repository of information, but can also apply to a tester who has
to manipulate XML files (DTD or an actual XML file) or configuration files
directly. It can also be used of testers who know the internal workings or
algorithm of the software under test and can write tests specifically for the
anticipated results.
Testing Levels
Component testing tests the
minimal software item that can be tested. Component integration testing exposes
defects in the interfaces and interaction between integrated components. System
testing tests an integrated system to verify that it meets its requirements.