Сегодня был очень странный день, да. Начался он с того, что свершилось невозможное и
у меня не было работы (Да, ради этого стоило уволиться). Впервые за полтора года на этой работе я не знал, чем мне заняться... впрочем, мое разгильдяйство было недолгим и я принялся за одну из своих недавних мыслей, что появилась в моей голове, а именно -
автоматизированное тестирование.
Немного программизмуИтак, у меня было 2 класса с некоторым очень простым функционалом, которые я и стал использовать в качестве подопытных кроликов. Задачу решил усложнить себе тем обстоятельством, что на этом же проекте решил опробовать написание кода в среде KDevelop 3 и сделать свою первую программу на платформе GNU/Linux. Мысль реализовалась в виде пары тестирующих классов, которые запускали те или иные функции своих подопечных с определенными параметрами и проверяли результаты их работы с уже известными. Основная функция лишь создавала соответствующие объекты и запускала у них единственный метод.
Результатом моих трудов стал достаточно наглядный лог отработки тестов, по которому легко будет обнаружить нефункционирующий кусок кода.
А мысль-то была вообще к чему? Мои одногруппники и одногруппницы, а также все, кто учился на моей специальности, конечно же помнят такого преподавателя, как М. А. Верхотуров. И особенно помнят, как он настаивал, почти что насаждал необходимость этапа проектирования, чтобы при решении задачи мы думали о том, что надо получить, а не как ее решать. Так вот одним из лучших стимулов к правильному мышлению является проектирование на основе тестов (Test-Driven Development, TDD).
Подход имеет ряд плюсов - он облегчает процесс отладки (пусть и не всех видов ошибок, но и то - хорошо!), указывая явно, в каком модуле или даже блоке кода локализована ошибка; такой подход повышает надежность кода, уменьшая вероятность возникновения ошибок; разработка на основе тестов фокусирует ум над конкретной проблемой (выполнение теста), что уменьшает время написания кода хотя бы за счет принципа бритвы Оккама - иначе в 80-90% случаев код становится не столь конкретным и кроме заявленной функции реализует что-то еще. На всякий случай.Однако мои размышления были самым нахальным образом прерваны запросом некой
тетки из Нефтеюганска, которая как обычно очнулась за час до срока сдачи отчетности и ей прям срочно, прям щас понадобилось, чтобы данные с одного филиала волшебным образом очутились в другом филиале. И, конечно же, крайним оказался я, ибо до того момента я так и не смог протестировать свою утилиту после модификаций. Естесственно, она не работала. Данные я перенес вручную - запросами. Но получилось что-то непонятно-феерическое. Так что секасу мне еще предстоит достаточно.
А завтра мне все равно придется выходить на работу, чтобы выполнить работы по администрированию, которым я еще занимаюсь кроме своих прямых обязанностей. Ведь в будни никто нам это делать не дает, мол, заказчики, работы невпроворот... Все больше убеждаюсь, что не зря я ухожу.