Def#1:Software testing is
a process used to identify the correctness, completeness and
quality of developed computer software computer software.
Def#2:Software testing is
the process of devising a set of inputs to a given piece of
software that will cause the software to exercise some portion
of its code. The developer of the software can then check that
the results produced by the software are in accord with his or
her expectations.
Why software testing is
necessary -
Any software – excepts the
simple "Hello World" program – is often defective. Software testing helps to improve the quality of a software
product.
The design of any real
software has limits with end-user's real scenario. Software testing helps to solidify the design of a software
product.
The quicker we identify and
fix a bug, the less money we will spend. Software testing helps to save money to develop a software
product.
If software DOESN'T
need any testing, software testers will lose their job. Software testing helps software tester to make software
tester living ;)
etc...
Resources for software testing -
ACM ACM
delivers resources that advance computing as a science and a
profession.
IEEE The world's leading professional association for the
advancement of technology.
ISO ISO is a network of the national standards institutes of 156
countries, on the basis of one member per country, with a
Central Secretariat in Geneva, Switzerland, that coordinates the
system.
Owner Typically, software testing is owned by software test
engineers (actually there are lots of alias for those guys and
gals, namely tester, QA engineer etc. and there responsibility
may vary among difference organizations). However, software
designer (architects) and software developers (coders) are also
owners of software testing. Generally speaking, all the people
uses that software are testers of it. But the software tester is
the official goalkeeper.
Test Cycle Although testing varies between organizations, there is a
normal cycle to testing: 1.Requirements Analysis: Testing should begin in the
requirements phase of the software life cycle(SDLC). 2.Design Analysis: During the design phase, testers work
with developers in determining what aspects of a design are
testable and under what parameter those tests work. 3.Test Planning: Test Strategy, Test Plan(s), Test Bed
creation. 4.Test Development: Test Procedures, Test Scenarios, Test
Cases, Test Scripts to use in testing software. 5.Test Execution: Testers execute the software based on
the plans and tests and report any errors found to the
development team. 6.Test Reporting: Once testing is completed, testers
generate metrics and make final reports on their test effort and
whether or not the software tested is ready for release. 7.Retesting the Defects.
One thing we should take care is that these phases in software
testing is not separated. they are connected together closely
and often interlaced.
Test Methodology
Observed from different perspectives, there are quite a few
different test methodologies.
From the point of different phases, there are unit test,
integration test, system test;
From the point of the touch on program codes, there are
block-box test, white-box test and gray-box test (a mixture of
black-box and white-box test);
From the point of different properties of the software, there
are setup test, performance test, stress test, scalability test,
functionality test, capability test, etc...