===== Tests ===== |Unit Tests| Test of one particular class/function. Predefined input-output. | |Smoke Tests|A simple integration test. It is inspired from hardware testing, which checks for the smoke from the hardware components once the hardware's power is switched on. Similarly in Software testing context, smoke testing refers to testing the basic functionality of the build.| |Integration Tests (I&T)|Integration testing (sometimes called integration and testing) is the phase in software testing in which individual software modules are combined and tested as a group. It occurs after unit testing and before validation testing.| |System Integration Test (SIT)|System integration testing involves the overall testing of a complete system of many subsystem components or elements. The system under test may be composed of hardware, or software, or hardware with embedded software, or hardware/software with human-in-the-loop testing.| |Validation Test| Validation is done at the end of the development process and takes place after verifications are completed. It answers the question like: * Am I building the right product? * Am I accessing the right data (in terms of the data required to satisfy the requirement). * It is a High level activity. | |Regression Tests|Regression testing is a type of software testing that verifies that software that was previously developed and tested still performs correctly after it was changed or interfaced with other software. Changes may include software enhancements, patches, configuration changes, etc.| |Acceptance Test| Test that a feature or use case is correctly implemented. It is similar to an integration test, but with a focus on the use case to provide rather than on the components involved. Verifies if software has met the required criteria for delivery to end users. May include * User Acceptance * Business Acceptance * Field Acceptance Acceptance criteria * Functional Correctness and Completeness * Data Integrity * Data Conversion * Usability * Performance * Timeliness * Confidentiality and Availability * Installability and Upgradability * Scalability * Documentation | |System Test| Tests of a system as a black box. Dependencies on other systems are often mocked or stubbed during the test (otherwise it would be more of an integration test). | |Pre-flight check| Tests that are repeated in a production-like environment, to alleviate the 'builds on my machine' syndrome. Often this is realized by doing an acceptance or smoke test in a production like environment | |End-To-End Test| Application test, which span the whole cycle, from start to finish. Tests dependencies and whether the flow of application is right from start to finish. \\ End-To-End-Tests testen alle Komponenten eines Systems gemeinsam, also die eigentliche Anwendung inklusive Browser, Webserver, Datenbank und jeglicher sonstiger Infrastruktur. | |Technical Test (alias Non Functional Testing)| Or NonFuncitonalTest - the tests, where non functional requirements are tested like: * Performance * Stability | |Canary Testing| Canary test A Canary test is an automated, non-destructive **(does not break anything, repeatable)** test that is run on a regular basis **in a LIVE environment**, such that if it ever fails, something really bad has happened. Examples might be: * Has data that should only ever be available in DEV/TEST appeared in LIVE. * Has a background process failed to run * Can a user logon |