====== 01 Overview ======
**User Story 1**: \\
As developers, when implementing new software features, we want to be able to test them right away (as we go).
**User Story 2**: \\
As developers, when integrating new features into our software, we want to make sure that we don't break anything in the overall system.
===== Approaches =====
==== Smoke Testing ====
Taking from electronics: If you turn on a PCB and no smoke can be seen, it probably works.
==== Unit Testing ====
Testing individual functions/VIs in the program to give a wide range of inputs and check that the outputs are correct - things like the Unit Test Framework, Caraya, VI Tester etc. can help you with this.
==== Integration Testing ====
This involves testing how modules of your program interact with each other - for example testing APIs and communication between VIs.
==== Regression Testing ====
Running existing tests after introducing changes to your software, in order to make sure that the existing code base still works as expected.
==== System Testing ====
Testing the overall system functionality according to a test plan
==== End-to-end Testing ====
Test from the end user’s experience by simulating the real user scenario and validating the system under test and its components for integration and data integrity.
==== Acceptance Testing ====
Final demonstration to the customer in order to achieve acceptance of delivery and go for invoicing.