Всем доброго времени суток.
Вопрос №1.
Как писать юниттесты к функциям и классам, которые получают что-то на вход и возвращают какой-то результат, вроде понятно: подаем input, сравниваем output с ожидаемым.
А как протестировать что-нибудь более хитрое? Например: сервер(неважно какой) результат своей деятельности записывает в базу данных, эти данные просматриваются через веб интерфейс (обновляются ajax-ом), к серверу коннектятся клиенты, которые вносят свои данные/изменения, + там же где-то еще и оповещения менеджерах о некоторых событиях.
Логика подсказывает, что это все нужно разбить на компоненты и тестировать их по отдельности. А как тестировать их взаимодействие (например, что джаваскрипты не сломали и они отправляют «правильные» запросы и запросы «правильно» отвечают)? Или сложные действия: реакция сервера на получение «плохих» данных от клиента итд?
Как это происходит в реальной жизни (в продакшне)?
Вопрос №2.
Не посоветуете ли какую-нибудь литературу по вопросу №1?
Спасибо за внимание.