Смотрю ролики по программированию, по тестированию - юнит тесты, модульные тесты и т.д.
Насколько я понимаю, тестирование эмулирует работу/вызовы компонентов системы с заданными значениями и проверяет ответ. Если ответ верный - то тест пройден. Проще говоря a+b=c. Если на входе a=2, b=2, c=4 - тест пройден, иначе нет.
Это теория, теперь практика.
Сегодня зашел в игру Overwatch 2 (крупный издатель, 35 миллионов аккаунтов). После обновления в игре баг - из за текста иконка лиги сдвинулась вниз.
(Есть и другие баги...)
Какие тесты нужно было сделать, чтобы предотвратить этот баг? Баг, скорее всего возник из за изначальной ошибки проектирования - не ограничили длину текста, не поставили позицию иконки поверх текста, жестко не привязали иконку и т.д.
Но этот баг не отследить.
Предположим, что можно написать тест - если иконка вышла с формы - баг, тест не пройден. Но таких иконок +100500.
Это уйма тестов.
Приложение просто обрастет тестами в геометрической прогрессии. Миллион взаимодействий, зависимостей, комбинаций.
Так в чем практический смысл тестирования? Где оно нужно, когда даже крупнейшие компании допускают явные баги на главном экране игры (а там про команды с миллионными бюджетами).