Kotlin programming language
Quality Assurance: history
60s: Do exhaustive testing
Programs were smaller, we started out by trying to cover all possible paths in the code and all possible input combinations, but pretty soon we found out this was impossible.
Early 70s: Show that the program works correctly
Testing was understood as a “demonstration of correctness”, but we quickly came to the realization that this was not feasible.
Late 70s: Show that the program does not work correctly
The goal was changed to “demonstration of incorrectness” - finding bugs. This is feasible (if your program fails with a bug, it has a bug), and goal became the priority.
80s: Prevent defects throughout development
Defect detection -> defect prevention. Testing principles applied not only to the compiled version of the program, but to all stages of its development, including the design, implementation, architecture, and the tests themselves. Automated testing emerges.