What is a software testing? It is a good method which uses to check if the developed program fulfil the specification of requirements that the customer wanted and also to ensure that software product is defect free. There are many levels and types of testing.

- Unit Testing
- Integration Testing
- System Testing
- Acceptance Testing
Each one of the test has their own definition, purposes and writing methods, so it is very important to decide which type of testing you are going to use in order to achieve your goals.
Unit testing:

Unit Testing is a term that goes back to ancient times, although it is not very often heard, as the Smalltalk programming language developed under the leadership of Alan Kay in the 70s. Unit testing in computer science; It is the process of testing whether a block of code (usually method) that calls or uses another block is performing its task correctly by separating it from the other block to which it is associated. Unit tests will fail if the task is not performed correctly. What we call units is usually a method or a function.
- It can be automated and easily operated repeatedly.
- It should be easily written.
- Once written, the feature should remain as it is used.
- Anyone should be able to operate.
- Its operation should be as easy as pressing a button.
- It performs checks quickly
Integration testing
The integration testing is testing the operation of two or more slave modules as a group. In short, integration testing; checks the combination of codes that can be tested with unit tests. Unit tests only control the operation of the relevant unit independently of the other units.”

System Testing
System testing (or end-to-end testing [E2E]). Is a complete system testing. When unit tests and integration tests are testing parts of the system, this one is targeting the system as a whole. This testing is performed by QA testers. For example, testing an entire application from login to checkout and making sure emails are delivered. This is done from the user perspective, and shouldn’t be automated with data mocks or fake requests. This type of testing is the most involved and time-consuming. If a bug was discovered during E2E testing, that means something was missing in unit or integration testing.
Acceptance Testing
Acceptance Tests refers to the testing of end-user scenarios. It can also be considered as integration tests but refers to testing a user story.
The purpose of acceptance tests; is to control whether the operations that are necessary for the user group to accept the software as running can be performed. It is used to say, the system cannot perform the operations as expected of it rather than identifying where the system has errors.

To learn more about Software Testing visit: