Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Опыт создания системы управления сборкой и тестированием<br />Часть 0 - теоретическая<br />Олег Ладыгин<br />oladygin@gmai...
О чем речь вообще?<br />Где взять дистрибутив?<br />Что реализовано?<br />Что делает этот тест?<br />Тест валиден для этой...
Сначала надо подумать<br />Прежде чем что-то разработать, надо определить:<br /><ul><li> кто этим будет пользоваться;
 с чем он уже работает;
 какую часть можно улучшить.</li></ul>В итоге – надо подумать.<br />
артефакты<br /><ul><li>Дистрибутив
Исходный код
Сборка
Тест
Стабильная сборка
Тип теста
Дефекты
Bug-tracking
Система управления версиями (CVS)
Регулярная сборка и тестирование
…
Отгрузка
Сервера и платформы
Ресурсы
Отчеты</li></li></ul><li>Автоматизируем? Надо формально описать.<br />Как выглядит сборка<br />Как выглядит тестирование<b...
Upcoming SlideShare
Loading in …5
×

"Опыт создания системы управления сборкой и тестированием" (слайдкаст)

5,519 views

Published on

Доклад посвящен вопросам создания и использования собственной системы управления процессами сборки и тестирования ПО. Описываются ключевые моменты построения таких систем, в частности: вопросы интерфейсов, быстродействия, качества и интеграции в общую инфраструктуру. Затрагиваются концепции встраивания качества в код, сбора и использования метрик ПО, неотделимости сборки от тестирования, автоматизированного ведения базы знаний об ошибках и другие.

Published in: Technology, Business
  • Follow the link, new dating source: ♥♥♥ http://bit.ly/2u6xbL5 ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Sex in your area is here: ❶❶❶ http://bit.ly/2u6xbL5 ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

"Опыт создания системы управления сборкой и тестированием" (слайдкаст)

  1. 1. Опыт создания системы управления сборкой и тестированием<br />Часть 0 - теоретическая<br />Олег Ладыгин<br />oladygin@gmail.com<br />
  2. 2. О чем речь вообще?<br />Где взять дистрибутив?<br />Что реализовано?<br />Что делает этот тест?<br />Тест валиден для этой версии?<br />Когда тестировать?<br />Какая сборка стабильная?<br />… кто здесь?!…<br />А если сотни подсистем?<br />А если тысячи тестов?<br />Как этим управлять?<br />Модель «Организационная жаба»<br />
  3. 3. Сначала надо подумать<br />Прежде чем что-то разработать, надо определить:<br /><ul><li> кто этим будет пользоваться;
  4. 4. с чем он уже работает;
  5. 5. какую часть можно улучшить.</li></ul>В итоге – надо подумать.<br />
  6. 6. артефакты<br /><ul><li>Дистрибутив
  7. 7. Исходный код
  8. 8. Сборка
  9. 9. Тест
  10. 10. Стабильная сборка
  11. 11. Тип теста
  12. 12. Дефекты
  13. 13. Bug-tracking
  14. 14. Система управления версиями (CVS)
  15. 15. Регулярная сборка и тестирование
  16. 16.
  17. 17. Отгрузка
  18. 18. Сервера и платформы
  19. 19. Ресурсы
  20. 20. Отчеты</li></li></ul><li>Автоматизируем? Надо формально описать.<br />Как выглядит сборка<br />Как выглядит тестирование<br />
  21. 21. Вариант описания - дерево<br />Как еще выглядит сборка<br />Как еще выглядит тестирование<br />Что значит «ВЗЯТЬ»?<br />Только последний?<br />Где-то конкретно указанный?<br />Стабильную сборку?<br />
  22. 22. Что внутри прямоугольничков?<br />Блоки сборки, теста, подготовки среды можно описать единообразно.<br />Так как все эти действия <br />совершаются не просто так,<br />а преследуют некоторую цель, назовем это все Целью,<br />которая либо достигается, либо используются ее результаты.<br />Происходит выполнение какой-то команды<br />
  23. 23. Зачем нужна структура?<br />Автоматический поиск и выбор необходимых методов и данных.<br />
  24. 24. Объединим все в сложную схему….<br />Если совместить предыдущие слайды, получится очень большая и красивая схема. При наличии бинокля ее можно будет разглядеть. Или можно порисовать самостоятельно вместо перекура….<br /><ul><li>Цели либо выполняются, либо доставляются ее результаты.
  25. 25. Если одновременно есть и выполнение, и использование, то создаются связи.
  26. 26. Как действовать, если цель не выполнилась, и какие результаты какого именно выполнения надо использовать?</li></li></ul><li>Превратим дерево в граф<br /><ul><li>Если множество целей выполняются в едином пространстве – то свяжем все одинаковые цели между собой, и будем использовать именно их результаты.
  27. 27. Иначе будем использовать на выбор: самые достоверныерезультаты, последние, заданные вручную.</li></ul>Что получим в переводе «на пожрать»?<br /><ul><li>При одиночном запуске теста берутся стабильные дистрибутивы.
  28. 28. При запуске теста и сборки тестируется только эта сборка</li></ul>Опционально можно сделать и так:<br /><ul><li>При запуске теста выбирается дистрибутив из списка успешных
  29. 29. Если стадия разработки – берется последний, если в тестировании – переданный на тестирование.</li></li></ul><li>Связи - автоматические<br /> Билд 3<br /> Билд 2<br /> Билд 1<br />Некоторое пространство 2<br />Пространство 3<br />
  30. 30. Управление ресурсами<br />Не хватает одной детали – управления последовательностью запуска тестов и подготовкой среды их выполнения.<br /><ul><li>Ресурс – это БД, общие файлы, данные, схемы, сервера и т.д.
  31. 31. Цель требует ресурсы для запуска, в Exclusive или Shared режиме.
  32. 32. Каждый ресурс имеет номинальную мощность, а цель – требуемую.
  33. 33. Цель может создать ресурс после своего выполнения
  34. 34. Группировка ресурсов по серверам или БД</li></li></ul><li>Ресурс: База из снапшота М<br />Ресурс: База с данными К<br />Подготовка – как ресурс<br />Логика ресурсного планирования обеспечивает не только последовательность и непротиворечивость работы, но и удобство.<br /><ul><li>Тест L1 требует БД монопольно для crush-теста,БД должна быть поднята из снапшотаM
  35. 35. Тест F2 требует БД для unit-теста, на БД должны быть данные набора К </li></ul>При активации ресурса производится поднятие БД из снапшота М<br />При активации ресурса производится заполнение БД тестовыми данными набора К<br />
  36. 36. Часть 0 - теоретическая<br />Часть 1 - практическая<br />
  37. 37. Что же на практике?<br />Подробнее о ядре<br /><ul><li>Ресурсы – подробнее
  38. 38. Выполнение задач - подробнее</li></ul>Но этотолько теория. На практике, у нас еще есть:<br /><ul><li>Регулярное тестирование – кодировки файлов, контроль русских символов, контроль правописания…
  39. 39. Выполнение задач по событиям (изменения статусов дефектов, наступление пятницы 13…)
  40. 40. Автоматическая чистка процессов на серверах
  41. 41. Управление нагрузкой
  42. 42. Средства формирования и рассылки отчетов</li></li></ul><li>Регулярное тестирование<br />Если состав дистрибутивов известен и поддается автоматическому анализу, мы можем вытащить все исходные коды, находящиеся в разработке, и проверить:<br /><ul><li>Орфографию
  43. 43. Web-части:
  44. 44. проверить кодировку
  45. 45. соответствие правилам разработки -
  46. 46. SQL :
  47. 47. контроль русских символов
  48. 48. список пакетов pl/sql, их состав и взаимные вызовы
  49. 49. Исходный код:
  50. 50. изменение SLOC
  51. 51. матерный словарь</li></li></ul><li>Выполнение задач по событиям<br />Если для запуска любого теста или сборки достаточно пройти по своей БД и вызвать функцию запуска, то:<br />Дополнительно – внешний конвейер событий. Что туда положила внешняя система – будет исполнено. Это механизм scheduler-а на всей инфраструктуре. Или просто мега-триггер на какие-либо изменения.<br /><ul><li>Если не отключен режим автосборки – то собирать каждую ночь и выполнять все тесты
  52. 52. Для больших тестов – запускать, к примеру, по пятницам в 22:00
  53. 53. Для контроля оперативных данных – формирование отчетов каждые 2 часа</li></li></ul><li>Автоматическая чистка процессов<br />Задачи выполняются на серверах через SSH. Есть системный ресурс – логин из пула пользователей.<br /><ul><li>Активация – удаляются все процессы этого пользователя на сервере.
  54. 54. Выполняется произвольный пользовательский код
  55. 55. Деактивация – так же удаляются все процессы
  56. 56. Unix – kill, Windows – WinSSHd
  57. 57. Дополнительно – робот удаления процессов старше 7 дней и defunc-процессов</li></li></ul><li>Управление нагрузкой, выбор сервера<br /><ul><li>Управление нагрузкой – выбор сервера из нескольких доступных
  58. 58. Эксклюзивный захват сервера
  59. 59. Активация сервера – установка набора переменных окружения</li></li></ul><li>формирование и рассылка отчетов<br /><ul><li>Отчет – лишь цель определенного типа
  60. 60. Пусть она возвратит нам index.html как результат своей работы
  61. 61. Выполнение – по заказу или по расписанию</li>

×