There are many types of Testing. Refer website "Guru99.com" for the list. But I would like to set our focus on few which we use often.
White Box Testing
Testing based on an analysis of internal workings and structure of a piece of software which is based on knowledge of internal logic of application's code is known as White box testing. It is also known as Glass box Testing. In White box testing one would have knowledge of development language and general OOPS concept.
Black Box Testing
Testing a feature without having access to code, instead testing functionality of an application with considering only requirements. In Black box testing one should have knowledge of the product in test and should compare with the requirements.
Smoke Test is performed to verify the stability of the build under test; it's a quick test that major functionality is tested without bothering with finer details. Smoke Test is generally automated and it takes between 20 minutes to 3 hours (depending upon functionality to be tested).
Sanity Test is performed on new software initially to decide if the build is stable enough and can be tested further.
Regression is performed to verify the changes introduced during the release of new build are working as per expectation, the other functionality due to that fixed are not hampers and a new issue is not injected in the new build.
Performance Test is the most effective way to gauge an application or an environment's capacity and scalability. This is useful to identify performance bottlenecks in application. Performance Testing is performed to verify whether system meets performance requirements.
Stress Test is testing under heavy load beyond system capacity. The objective of Stress testing is to identify the load under which it fails and how. Stress Testing is similar to Performance testing but in Stress Testing we use a very high level of simulated load.
Load Test is monitoring the behavior of system under heavy load, wherein keeping the track of system response time and the graph which degrades or fail with time.
Unit Test is often performed by developers and not testers, wherein it is a testing of software components or modules which is tested before it is integrated with other modules.
Compatibility Test is often performed to determine whether the application is compatible with other systems that it needs to interface with. For a Windows application it can be tested across different OS, the look and feel as well as the functionality can be tested on the other hand for a web based application it can be tested across different browser and their sub version.
User Acceptance Testing
User Acceptance Test is black box is testing which is performed by client to verify the system functionality and usability prior to the system being moved to production. The acceptance test will be the responsibility of the client which is performed in presence of project team. A third party test team can work with the client to perform User Acceptance Testing.
I will try to blog more types of testing with more details in future, but if you want to know more about other types of testing please drop a comment and I will try to surely answer your queries as soon as possible.
Note: There are different process and methodologies followed in various organizations. The above content is as per my experience in industry so far.
Please feel free to write comments if you like my post or else if your opinion is different or you may like to add any more points in them.