Как правильно проверять работоспособность продукта?
Тестировать:
unit - обычно пишет программист на свой же код, все зависимости мокаются, чаще всего по белому ящику. При покрытии 95+% добрых 3/4 вашего кода - это тесты.
functional - тоже, обычно пишет программист, но уже с задействованием внешних сервисов, например БД. Тут главное не переборщить, функциональные тесты пишутся быстрее, но они на порядки медленнее, чем юнит тесты.
appearance - чаще пишут QA, иногда проводят мануально, цель - быстро понять, что продукт в принципе работает и ничего критичного не поломали
regration - чаще пишут QA, и проводят мануально - это полная проварка того, что продукт работает согласно ТЗ.
Какая общая схема?
1. Написал код по таске
2. Покрыл тестами
3. Отправил на код ревью
4. Сделал исправления, если нужно
5. Залил в рабочую ветку
Можно ли как то автоматизировать это?
Во многом - да, конечно, берете и пишете тесты.
Как проверить продукт на 100% работоспособность?
Покрыть тестами все возможные неполадки вашего продукта. Но, до всех вы не додумаетесь, и не защититесь от них, так что 100% - это довольно эфимерная цифра. Например, как вы гарантируете, что продукт будет работоспособен, если все ДЦ, в которых он размещен разом выйдут из строя?))
Что все ошибки обрабатываются правильно, что на 100% не будет исключений в коде.
Для каждого метода эмулируйте ситуацию по возникновению каждой из ошибок и проверяйте корректность этих ошибок.