Доклад на конференции Selenium Camp 2012.
http://seleniumcamp.com/program/#parallel-testing
Видео: http://video.yandex.ru/users/xpinjection/view/105/#hq
"Опыт создания системы управления сборкой и тестированием" (полная)SPB SQA Group
Доклад посвящен вопросам создания и использования собственной системы управления процессами сборки и тестирования ПО. Описываются ключевые моменты построения таких систем, в частности: вопросы интерфейсов, быстродействия, качества и интеграции в общую инфраструктуру. Затрагиваются концепции встраивания качества в код, сбора и использования метрик ПО, неотделимости сборки от тестирования, автоматизированного ведения базы знаний об ошибках и другие.
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)SPB SQA Group
Доклад посвящен вопросам создания и использования собственной системы управления процессами сборки и тестирования ПО. Описываются ключевые моменты построения таких систем, в частности: вопросы интерфейсов, быстродействия, качества и интеграции в общую инфраструктуру. Затрагиваются концепции встраивания качества в код, сбора и использования метрик ПО, неотделимости сборки от тестирования, автоматизированного ведения базы знаний об ошибках и другие.
Доклад на конференции Selenium Camp 2012.
http://seleniumcamp.com/program/#parallel-testing
Видео: http://video.yandex.ru/users/xpinjection/view/105/#hq
"Опыт создания системы управления сборкой и тестированием" (полная)SPB SQA Group
Доклад посвящен вопросам создания и использования собственной системы управления процессами сборки и тестирования ПО. Описываются ключевые моменты построения таких систем, в частности: вопросы интерфейсов, быстродействия, качества и интеграции в общую инфраструктуру. Затрагиваются концепции встраивания качества в код, сбора и использования метрик ПО, неотделимости сборки от тестирования, автоматизированного ведения базы знаний об ошибках и другие.
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)SPB SQA Group
Доклад посвящен вопросам создания и использования собственной системы управления процессами сборки и тестирования ПО. Описываются ключевые моменты построения таких систем, в частности: вопросы интерфейсов, быстродействия, качества и интеграции в общую инфраструктуру. Затрагиваются концепции встраивания качества в код, сбора и использования метрик ПО, неотделимости сборки от тестирования, автоматизированного ведения базы знаний об ошибках и другие.
Андрей Похилько — Нагрузочное тестирование типичного интернет сервисаYandex
Нагрузочное тестирование интернет-сервиса начинается с того, что мы выясняем ожидаемый профиль нагрузки. Вооружившись подходящим инструментом, мы проводим типовую последовательность тестов и измеряем основные показатели производительности: ёмкость, скорость и надёжность. При этом особое внимание необходимо уделять наблюдению за состоянием ресурсов тестируемой системы.
Часто о нагрузочном тестировании рассказывают через призму используемого инструментария, хорошо раскрывая слово «нагрузочное» и часто оставляя слово «тестирование» за кадром. Так давайте же попробуем поговорить о месте именно тестирования в нагрузочном тестировании.
Андрей Похилько — Нагрузочное тестирование типичного интернет сервисаYandex
Нагрузочное тестирование интернет-сервиса начинается с того, что мы выясняем ожидаемый профиль нагрузки. Вооружившись подходящим инструментом, мы проводим типовую последовательность тестов и измеряем основные показатели производительности: ёмкость, скорость и надёжность. При этом особое внимание необходимо уделять наблюдению за состоянием ресурсов тестируемой системы.
Часто о нагрузочном тестировании рассказывают через призму используемого инструментария, хорошо раскрывая слово «нагрузочное» и часто оставляя слово «тестирование» за кадром. Так давайте же попробуем поговорить о месте именно тестирования в нагрузочном тестировании.
The SUSE Appliance Toolkit provides tools for easily building, managing, and maintaining software appliances. It includes SUSE Studio for a web-based appliance builder, WebYaST for appliance configuration and management, and a Lifecycle Management Server for unified updating of appliance components. The toolkit addresses the complexity of software deployments and aims to reduce maintenance costs while improving efficiency.
Open Source Testing Framework: real project example and best practicesAliaksandr Ikhelis
Summary: Presentation on open source testing frameworks (improved version, more focus on real project example) at Software Engineering Forum 2009 (SEF-1) conference by Aliaksandr Ikhelis. Sponte framework developer and owner is Stanislaw Wozniak, Expedia Limited, UK. Sponte project homepage: http://rubyforge.org/projects/sponte/; http://github.com/swozniak/sponte/tree/master
2. О чём поговорим
● Системы версионирования
● Юнит-тесты
● Непрерывная интеграция
3. О чём не поговорим
● Style Guide
● Системы управления проектом (http:
//basecamp.com и http://asana.com/)
● Системы учета ошибок (http://bugzilla.org и
http://redmine.org)
● Функциональное тестирование (e.g.:
selenium)
● Тестирование безопасности (e.g.:
w3af+nikto+nmap)
● Остальное тестирование (e.g.: ab)
4. Системы управления версиями
(СУВ, VCS)
From Wiki:
Набор программных средств для
управления изменениями в документах,
программах, веб-сайтах и других данных,
хранимых в файлах
6. Проблемы
● Совместный доступ к коду
● Когда редактировали?
● Кто редактировал?
● Что изменилось?
● Контроль версий
● Контроль доступа пользователей
7. Системы контроля кода ПО (SCM)
Или системы управления конфигурацией
ПО.
Cредство и соответствующий процесс,
используемый для поддержки исходного
кода и его изменения с течением времени
8. Задачи SCM
● Поддержка файлов в репозитории
● Поддержка проверки файлов в репозитории
● Нахождение конфликтов при изменении исходного
кода и обеспечение синхронизации при работе в
многопользовательской среде разработки
● Отслеживание авторов изменений
● Журналирование изменений
● Возможность управления конфигурацией файлов (в
частности, проверки) для совместимых и
повторяющихся сборок.
9. Язык SCM
Репозиторий (repository) - это центральное место, где
хранятся файлы
Извлечение файлов из репозитория в рабочую
директорию вашей локальной системы называется
выгрузка (check-out).
Синхронизация изменений в локальных копиях с
изменениями в репозитории называется фиксацией
изменений (commit)
Если объединение невозможно из-за конфликтующих
изменений в файле, возникнет конфликт (conflict).
10. Язык SCM
Когда изменения зафиксированы, создается новая
версия (revision) файла
У одного или нескольких разработчиков есть
возможность работать вне главного дерева (текущего
корня репозитория), а именно, в персональной ветке
(branch).
Это позволяет разработчикам испытывать какие-то
процессы в своих ветках, не влияя на главное дерево.
Когда они станут стабильными, их можно соединить
(merge) с главным деревом.
11. Язык SCM
Пометка начала отсчета изменений в дереве (tag)
Группирует несколько файлов в пригодный для
использования блок
Чаще всего используется для обозначения конечной
версии файлов для сборки
15. CVS: недостатки
● 1 коммит/файл
● Невозможно переименовать файл или
директорию
● Нет поддержки юникода
● Неэффективное хранение бинарных
файлов
● Нет ограничения прав доступа
● Публикация изменений не атомарна
● Нет поддержки непубликуемых файлов
● Неэффективная работа с бинарными
файлами
16. Эволюция SCM: SVN
Замена CVS
● Поддерживаются наборы изменений
● Полная история изменений
● Поддержка блокировок
● Фиксация изменения атомарна
● Одинаково эффективная работа как
текстовыми так и с двоичными данными
● При синхронизации передаются только
изменения
18. SVN: Недостатки
● Проблемы при переименовании файлов
● Слабая поддержка слияния ветвей.
Слияние переименованных файлов и
папок не поддерживается
● Невозможность удаления данных из
хранилища (!)
20. Распределенные SCM
● Нет главной копии, все копии рабочии
● Возможно множество центральных
репозиториев
● Локальные изолированные репозитории
для изменений
● Асинхронная работа в p2p-сети (в
централизованной системе star-
архитектура)
● Большинство операций (commit, merge,
diff и.т.п.) производятся без
использования сети
22. Распределеные SCM: недостатки
● Нет блокировок
● Слежение за файлом или группой файлов
проблематично
● Нет единой нумерации версий
● Медленное клонирование репозитария
● Репозиторий занимает много места на
диске пользователя
23.
24. Распределенные SCM: Git
Любой программист вправе продолжить
совершенствование проекта на любом его этапе
● Локальная копия репозитория для каждого
разработчика
● Быстрое разделение и слияние версий
● SHA1-хеш для нумерации версии
29. GIT: недостатки
● Unix-ориентированность
● Коллизии хеширования
● Проблемы при больших репозитариях
● Проблемы на больших проектах
● Написан на C (0_o :))
33. Unit-тестирование
Метод тестирования, в котором отдельные модули
программы проверяются на готовность к
использованию
Модуль (unit) - наименьший участок кода системы,
пригодный к тестированию
В процедурном подходе модуль - процедура/функция
В ООП - класс, интерфейс. Может быть метод.
34. public class TestAdder {
public void testSum() {
Adder adder = new AdderImpl();
// can it add positive numbers?
assert(adder.add(1, 1) == 2);
assert(adder.add(1, 2) == 3);
assert(adder.add(2, 2) == 4);
// is zero neutral?
assert(adder.add(0, 0) == 0);
// can it add negative numbers?
assert(adder.add(-1, -2) == -3);
// can it add a positive and a negative?
assert(adder.add(-1, 1) == 0);
// how about larger numbers?
assert(adder.add(1234, 988) == 2222);
}
}
35. Вариант тестирования (test case)
● Уникальный идентификатор варианта тестирования
● Краткое описание варианта тестирования
● Стадия теста или порядок выполнения
● Требования
● Глубина теста
● Категория теста
● Автор
● Флаг автоматизации теста
● Ожидаемый результат/Реальный результат
● Пройден/Провален
38. Unit-тестирование
● Нет смысла писать тесты на весь код
● Более выгодно писать тесты на
потенциально изменяемый код
● Чтобы реже менять тесты, нужно хорошо
проектировать интерфейсы
39. Unit-тестирование: преимущества
● Легче вносить изменения в структуру
программы
● Упрощение интеграции
● Документирование кода (грязный хак :))
● Отделение интерфейса от реализации
43. CI
На сервере:
● получение исходного кода из репозитория;
● сборка проекта;
● выполнение тестов;
● развёртывание готового проекта;
● отправка отчетов.
Выполняется
● по внешнему запросу;
● по расписанию;
● по факту обновления репозитория или другому
событию
44. CI: преимущества
● проблемы интеграции выявляются и исправляются
быстро, что оказывается дешевле
● немедленный прогон модульных тестов для свежих
изменений
● постоянное наличие текущей стабильной версии
вместе с продуктами сборок — для тестирования,
демонстрации, и т. п.
● немедленный эффект от неполного или
неработающего кода приучает разработчиков к
работе в итеративном режиме с более коротким
циклом
45. CI: недостатки
● Затраты на поддержку работы
● Необходим выделенный сервер под
нужды интеграции
● Немедленный эффект от неработающего
кода демотивирует команду загружать
промежуточные версии кода
○ Ветвление в SCM частично решает проблему