Types of Software Testing

Black Box Testing

Black box testing (also known as functional testing) takes an external look at the test object – its functionality. The tester only knows what the software is supposed to do not how it produces the results i.e. the tester looks at the inputs and outputs. Therefore the programming code is never looked at. A tester will enter various inputs and determine which ones are correct hence knowledge of the test cases internal structure is unknown.

White Box Testing

White box testing requires specific knowledge of the programming code of the test object. The testing conducted here will only be accurate if the tester is aware of the software’s purpose. White box testing relates to how the system is implemented.

Unit Testing

Unit testing determines if the code is fit for purpose, this is done by testing small units of the source code. An individual unit is the smallest part of an application that can be tested. Programmers usually create unit tests however occasionally white box testers may also create this during the development process.

Incremental Testing

Incremental testing is where subsystems are tested in isolation, many more subsystems can be integrated with continued testing as each subsystem is integrated.


System Testing

System testing tests the entire system. The goal of system testing is to make sure the software is working correctly. Every single unit needs to be tested to see if there are any bugs.


Regression Testing

Regression testing ensures that changes made to computer programs still work with the older programming. Code test scenarios are created to test these new units of code these then form the basis of the test bucket. When a new version of software is to be released all the old tests are run with the new version ensuring the old capabilities still work, so eliminating any possibilities of errors in the code that isn’t supposed to change.

User Acceptance Testing

User acceptance testing known as UAT is the final step before the system goes live. End users (the client) need to test the application ensuring it meets the specification, that it provides a real benefit to the organisation and that it works in a business environment, before it is accepted.

Adoc Testing

Adhoc testing is used in software engineering where there is no planning or documentation so is very informal and exploratory. This type of test is carried out only once provided a defect is not found.


Automated Testing

Automated testing is where a computer program is written to test software applications that would have been test manually. This method of testing means software can be tested quickly, repeatedly and is very cost effective in the long run. Automated testing is used by experienced QA testers that have the understanding of automation.

System Integration

System Integration Testing fundamentally tests whether or not one system can coexist with another.

End to end testing

End-to-end Testing is the testing of the complete business process before a system is deployed into the actual business environment.


Configuration testing

Configuration Testing involves testing an application with every configuration of hardware and software.

Alpha testing

Alpha Testing is tested by the end user at the developer’s site.

Performance Testing

Performance Testing is a very complicated test to do correctly without using testing tools. Performance testing carries out load testing and stress testing.

Structual Testing

Structural Testing measures to see how much testing is done. Structural testing can be carried out at any levels of testing.