Smoke test is a term used in plumbing, electronics, and computer software development. It refers to the first test made after repairs or first assembly to provide some assurance that a device, plumbing, or software will not catastrophically fail. After the smoke test proves that the pipes will not leak or the circuit will not burn, the assembly is ready for more stressful testing.
Regression testing is any type of software testing which seeks to uncover regression bugs. Regression bugs occur whenever software functionality that previously worked as desired stops working or no longer works in the same way that was previously planned. Typically regression bugs occur as an unintended consequence of program changes.
In computer programming, a unit test is a procedure used to validate that a particular module of source code is working properly. The procedure is to write test cases for all functions and methods so that whenever a change causes a regression, it can be quickly identified and fixed. Ideally, each test case is separate from the others; constructs such as mock objects can assist in separating unit tests. This type of testing is mostly done by the developers and not by end-users.
A Build Verification Test (BVT), also knows as Build Acceptance Test, is a set of tests run on each new build of a product to verify that the build is testable before the build is released into the hands of the test team. The build acceptance test is generally a short set of tests, which exercises the mainstream functionality of the application.
System testing is testing conducted on a complete, integrated system to evaluate the system's compliance with its specified requirements. System testing falls within the scope of Black box testing, and as such, should require no knowledge of the inner design of the code or logic.  Alpha testing and Beta testing are sub-categories of System testing.
In engineering, an acceptance test is jointly performed by users or sponsors with manufacturers or producers through black-box testing (i.e., the testers need not know anything about the internal workings of the system). The results will determine acceptance of the system. It may also be referred to as a functional test, beta test, QA test, application test, confidence test, end user test, final test, validation test, factory acceptance test or site or field acceptance test. The 'factory acceptance test' is run within the manufacturer's facilities whereas the 'site or field test' is run within the user's environment.
Integration testing (sometimes called Integration and testing and abbreviated I&T) is the phase of software testing in which individual software modules are combined and tested as a group. It follows unit testing and precedes system testing.Integration testing takes as its input modules that have been unit tested, groups them in larger aggregates, applies tests defined in an Integration test plan to those aggregates, and delivers as its output the integrated system ready for system testing.
Ad hoc testing is software testing performed without planning and documentation. The tests are intended to be run only once, unless a defect is discovered. Ad hoc testing is a part of exploratory testing, being the least formal of test methods. In this view, ad hoc testing has been criticized because it isn't structured, but this can also be a strength: important things can be found quickly. It is performed with improvisation, the tester seeks to find bugs with any means that seem appropriate. It contrasts to regression testing that looks for a specific issue with detailed reproduction steps, and a clear expected result. Ad hoc testing is most often used as a complement to other types of testing.
Stress testing is a form of testing that is used to determine the stability of a given system or entity. It involves testing beyond normal operational capacity, often to a breaking point, in order to observe the results.