Архив для August, 2009

Тесты — это просто

Когда я рассказывал lightning talk про тестирование, я отмечал свою статистику— размеры тестов всегда больше размера тестируемого кода. Из этого можносделать неправильный вывод, что на написание оттестированного кода уходитв два раза больше времени, чем на код без тестов. При обсуждении я говорил,что тесты как правило проще чем тестируемый код, и время колеблется где-тов районе +50%. Так вот, это пессимистичная оценка. Некоторое время я специально понаблюдал за собой и процессом написания и тестирования. И результат очень простой: базовые тесты пишутся впроцессе отладки кода, а не отдельно. И при достаточном опыте написаниятестируемого кода и тестов, время написания кода+тестов такого-же порядка,как написание отлаженного кода.

Для себя я выработал такой подход:

  1. Пишем test-aware код
  2. При создании кода сразу покрываем тестами те юниты, которые тестируетсялегко (нет возни с mock’ами, файлами, фикстурами и пр.)
  3. Покрываем ключевые юниты тестами (если они еще не покрыты после п.2)
  4. При появлении бага перед исправлением пишем тест, который падает приналичии ошибки и проходит после исправления. Исправляем, прогоняем тест, коммитим.

Не освещена тема функционального тестирования, так что stay tuned ;)

Копирование файлов (paramiko и sftp)

Зачастую возникает задача копирования файлов между хостами. Если вы пишите шелл-скрипт, то чаще всего эта задача решается при помощи sftp либо rsync. Для rsync я не встречал хорошего Python-инструмента, а вот для sftp (и ssh) есть отличная библиотека paramiko. О ней и пойдет сегодня речь.

продолжить чтение