Докладчики Exception Seminar #04

Максим Ищенко

Website:http://developers.org.ua
Город:Киев
О докладчике:

Автор и технический руководитель проекта developers.org.ua. Вместе со своей командой берётся за выполнение разнообразных проектов на Python (outsourcing), в основном веб-ориентированных.

Название доклада:"Роль тестирования в разработке на Python"
О докладе:
  1. Побочные эффекты динамизма языка:
    • даже опечатки требуют для своего обнаружения выполнения кода
    • refactoring — постоянный источник ошибок
    • pylint/pycheker обнаруживают только узкий класс проблем
    • легко "протащить" некачественный в "продакшн"
  2. Тестировать необходимо, но как?
    • насколько глубоко копать
    • как найти баланс между гибкостью (скоростью внесения изменений) и надежностью кода
  3. Муки выбора (стратегии тестирования):
    • ручное тестирование
    • модульное тестирование
    • функциональное тестирование
  4. Инструментарий:
    • nose
    • twill
    • selenium
  5. Использование nose (мини-туториал)
  6. Приемы эффективного тестирования:
    • разработка-через-тестирование (TDD, bialix)
    • скорость исполнения тестов
    • изоляция тестов
    • заглушки (ввод/вывод, БД, внешние библиотеки)
    • не нужно бояться вносить "ненужные" тестовые расширения в "продакшн" код (logging, hooks, etc.)
  7. Примеры проектов (с точки зрения тестирования)
  8. Ссылки:

Александр Бельченко

Nickname:Bialix
Город:Запорожье
Название доклада:"Использование разработки через тестирование (TDD) в разработке системы Bazaar"
О докладе:
  1. Знакомство: кто я и о чем собираюсь рассказать
  2. Краткое описание процесса разработки системы Bazaar:
    • Эрик Реймонд "Cathedral and Bazaar"
    • Распределенная разработка системы
    • Процесс включения правок в основной репозитарий:
      • требования к новому коду и багфиксам (PEP-8, обязательное наличие тестов)
      • отслеживание статуса патчей через Bundle Buggy
      • code review, обратная связь
      • объединение правок с основным кодом через сервис PQM (patch queue manager, http://pqm.ubuntu.com), обязательный прогон тестов на сервере PQM.
  3. Проблемы разработки кросс-платформенной системы:
    • краткий набор возможностей Bazaar и проблемы их тестирования
    • почему нужно использовать питон-фреймворк для тестирования
    • влияние ограничений различных платформ на тесты
    • обратное влияние тестов на написание основного кода системы, или как писать удобный для тестирования код.
  4. Использование стандартной библиотеки unittest для построения тестовой подсистемы Bazaar:
    • возможности и ограничения библиотеки unittest
    • подсистема тестирования Bazaar: как расширяли возможности unittest (с конкретными примерами):
      • улучшенное представление результатов тестирования
      • расширенные базовые классы для тестов
      • возможность пропуска тестов (из-за ограничений конкретной платформы);
      • автоматическое создание наборов тестов по образцу при старте тестирования (клонирование тестов по единому образцу для ансамбля реализаций):
        • тестирование черного ящика и поддержки unicode
        • тестирование набора поддерживаемых транспортных протоколов (file://, sftp://, ftp://, http://, https://, bzr://);
        • тестирование различных поддерживаемых конфигураций работы с bzr (автономные ветки, ветки в общем репозитарии, работа в стиле CVS/SVN);
        • тестирование работы с различными поддерживаемыми форматами репозитария.
      • benchmarks: подсистема оценки скорости работы основных операций, или вы не можете увеличить скорость работы если вы не можете ее измерить.
    • много тестов: это хорошо или плохо? Влияние времени исполнения всех тестов на стиль работы:
      • частичное тестирование
      • останов по первой ошибке
      • запуск "своих" тестов первыми
      • муляжи, модели и реальные операции ввода-вывода
  5. Вопросы и ответы.
  6. Заключительное слово.

Андрей Светлов

Город:Киев
Название доклада:"Профайлинг"
О докладе:
  1. Введение
  2. timeit - за пару минут
  3. Python profiler
    • статистический и событийный профайлер
    • модуль profile: что сделать, чтобы его включить
    • pstats - смотрим на результат
    • интересна "первая страница"
    • что-то метод много кушает/часто вызывается. Правим.
    • на первой странице много лишнего. Правим pstats. Уже лучше.
  4. Этого мало - "в среднем по больнице температура 36.6". Нужен событийный perfmon.
  5. Для измерения производительности нужны в первую голову мерялки. Пишем первую.
    • результат в консоль - ненаглядно
    • пишем бросатель UDP пакетов с profile info
    • нужен рисователь графиков. Создаем
    • конфиги, раскраска, масштабирование и фильтрация
    • итого...
    • использование его же для отладки web. proxy profile server.
  6. Заключение.