I am in testing since 4 years.. I hear lot many types of testing [1 2 3 4]. .smoke, sanity, usability, ad-hoc, reliability, scalability, regression, unit, component, system, performance, alpha, beta, security. monkey, white, black, Grey, installation, static, dynamic, compatibility, usecase, install, exploratory, documentation, interoperability, upgrade, migration, Acceptance, Volume, Integration, language, load, stress, blah blah .. Even after 4 years, I am not confident in saying whats the difference between load and stress testing or Why do we need so many types of testing. some times I felt, Its just to make the testing complex :)
Well, In my opinion ..No white, black, ..nothing .. Just two types of testing
1. Functional testing -- This should include all smoke, sanity, localization, installation, adhoc, security, monkey ..etc etc .. The objective of Functional testing should be to say that, with very minimum load on the software system, all the features as designed works fine. That's it ..
2. Non-Functional testing -- Reliability, scalability, performance etc .. etc.. This testing must be done when satisfactory functional testing is done and Passed. Again, I would like to divide this in just 2 parts (Last division .. so you have finally 3 types of testing)
2a. Capability Testing: This testing is meant to showcase the overall capability of the software system. Objective of this testing should be to say, This is the maximum load system can withstand, This is the increase in performance If you increase memory by 100% etc ..
2b. Sustainance Testing: This testing is meant to showcase to customers that, given your kind of load, There will not be any issue in running this software for 30 days in a row .. Or The users interface is very easy-to-use or This software will work within your environment along with other softwares/hardwares. that's it ..
You tell me one type of testing with brief Objective of the testing, and I can (Will try..) say you where it fits in above three types of testing ...
Note: I believe Testing is not just test case design and reporting (As you see the syllabus of all the testing certifications), and not just having soft skills like Trust, Confidence, Communication, Don't Get Personal Blah Blah.. Its very-much in-depth technical activity.. A real Tester should be having qualities (Though In small extent) of a strong Developer, A strong marketing guru, A good Customer support Person, A very good Business Analyst , A very good People Manager, A Very good IT head of non-IT organization (Our Direct customers ..right ?) and Lastly a very very Normal End user (As If He does not anything about internal of IT). IMHO Software Testing is not "anyone can do" type of job. Today I hear that, People who has no knowledge of Information Technology is willing (and able to) get a job as software tester by just mugging up few testing terms and passing Testing certifications.