Skip to content

Introduction

Software testing is a process related to software development. It ensures the quality of the created software, and its main goal is to verify if the software is compliant with the user's expectations (or with the project specification).

Types of tests

Unit tests

  • Verify the performance of single parts of code (usually a method).
  • Fast and easy to automate.
  • Usually run with every source code change.

Integration tests

  • Verify the performance of a few application modules at once.
  • Quite long execution time.
  • Many possible points of failure.
Issue Unit test Integration test
Dependencies Single element of code is tested Many dependencies are tested
Points of failure One potential point of failure (method) Many potential points of failure
Speed Very high Potentially long execution time due to e.g. database access
Configuration No additional configuration Test can require configuration (e.g. database connection)

System tests

System tests are performed when all system components have been integrated. In this phase we can erform e2e (end to end) test - going through the whole process. For example a functionality of account registration should save a user in the database and send an e-mail with a confirmation of the registration. Testing of this whole process is an e2e test.

Acceptance tests

Software tests, which main goal is not finding bugs but getting a formal confirmation of creating a software with a proper quality (according to the specification)