unit tests
Идея в том, что по S (single responsibility) каждый класс, метод, функция должны выполнять только одну задачу. Это позволяет минимизировать изменения в программе, если изменились требования к этой задаче. Любое изменение - это потенциально источник ошибок. Меньше изменений - меньше ошибок.
В примере функция и лезет в веб, и получает контент, и парсит XML. По SOLID, функция, которая парсит XML, должна на вход его получать. Откуда он пришёл, ей должно быть по барабану. Другая функция лезет в веб и качает данные. Точка. Ей по барабану, кто эти данные использовать будет и как. И так далее.
Разбивая логику на связанные, но независимые блоки, автоматом получаем тестируемые блоки, поскольку их зависимости минимальны и есть чёткое понимание, чего давать на вход и чего ждать на выходе.