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)