Девять кругов автоматизированного тестирования Хабрахабр. Я хочу рассказать о созданной нами системе автоматизированного тестирования. Система в моем понимании это не только код, но еще железо, процессы и люди. Я отвечу на вопросы Что тестируем Кто этим занимается Зачем это все происходит Что у нас есть А затем расскажу как все работает опишу круги тестирования с первого по девятый. European Mobile Media Association EMMA Судейский диск EMMA 2012 SQSPL EMMA Competition Disc 2012 SQ and SPL image. FLAC. Тестовые диски для проверки и настройки аудио и видеотехники. Ссылка на постановку по которой написан тест если ее нет, то кейс лишь игра воспаленного воображения тестировщика, у нас корпоративное ПО, мы не шутки шутим. Сценарий теста на русском, описывающий три фазы теста подготовка, выполнение действия и верификацию. Note Сценарий не перевод с java на русский, напротив, сценарий первичен, причем на написание качественного кейса уходит больше времени, чем на его кодирование. В нашем случае он, как правило, пишется не тем человеком, который кодирует тест. Первая фаза теста подготовка тестирующей системы. Catalog catalog DAOCatalog. Catalog. TITLE, Я хочу чтоб в этом тесте у объекта было такое название. DSLCatalog. addcatalog. Catalog. Item item DAOCatalog. Item. createcatalog. DSLCatalog. Item. Javadoc тестового метода, который мы потом собираем и показываем. Еще у нас есть Emma Plugin и три сборки сборки подсчета. UPD 16. 08. 2011 в тестовом диске поменялся трек. Огромное спасибо. Одна версия с EMMA Competition Disc 20032004, другая с Focal. JMlab. А можно в Минске взять образ диска без инета Диск для оценки качества звучания аудиосистемы автомобиля по правилам ассоциации автозвука EMMA, объединяющей в своих рядах. Концепция есть модель системы, описываемая методами из DAO есть методы с префиксом DSL которые приводят тестируемую систему к состоянию, описываемому моделью. Всю первую фазу теста проводим через API. Note Правило для каждого закодированного тестового действия написать DSL, чтоб в дальнейшем выполнять его через API. Вторая фаза теста тестовое действие с использованием selenium, через браузер. Поэтому наши xpath выглядят так. Хотя бы раз выполняем ее через интерфейс Assert. Equals. Значительно ускоряет процесс тестирования. Note У кого то должна возникнуть мысль а не слишком ли много внимания уделяется тестированию через UI и на поднятом приложении Отвечу особенность нашего ПО высокая сложность не отдельных функций, но бизнес логики. Практически каждый тест требует наличия БД и большого контекста. В таком случае unit тесты не намного выигрывают по времени и значительно проигрывают по сложности написания. Круг второй. Окружение теста. При создании объекты помещаются в очередь и удаляются в обратном порядке. Круг третий иерархия тестов. Один тест одно действие. Исключений не больше 5Тесты объединены в классы по 3 1. Пакет тестирует сущность или аспект работы приложения. Пакетов 1. 5Note Javadoc, собирается командой mvn f sdng inttestpom. Помогает ручным тестировщикам и ПМам узнать, какие есть тесты, позволяет не искать нужное в web интерфейсе git и не устанавливать IDE. Образ Тестового Диска Emma' title='Образ Тестового Диска Emma' />По многочисленным просьбам сделал настроечнотестовые диски для. Архив содержит 2 образа дисков формата. Image Dynamics и 12дюймовым сабвуфером Alto Mobile Falstaff. Правила оформления раздач в разделе Тестовые диски для настройки. Дэдпул англ. Deadpool, настоящее имя Уэйд Уинстон Уилсон Wade Winston Wilson. Икс Начало. Росомаха представлен неканоничный образ Дэдпула. В июле 2014 года тестовый ролик VFX для фильма просочился в. Дэдпул появляется и в 27 серии аниме DISK Wars Avengers, где. Круг четвертый организация проекта тестирующей системы. Note Тестирующая система, живет уже полтора года, пережила переезд из svn в git, 3. Два основных сценария использования запуск из Jenkins и из eclipse. Алгоритм работы с конфигурацией запуска Настройки тестирующей системы переданные из maven самого высокого приоритета. Их пишем в конфиг. Если конфига нет, то создаем. Остальные настройки берем из конфига. Если конфига нет, то по умолчанию. Таким образом разработчики приложения и тестов настраивают свой персональный конфиг, а в CI все нужные параметры передаем через maven. Мой файл конфигурации allowscreenshottrue. Note У ТС все по взрослому есть свои постановки и сценарии использования. Я как автотестировщик хочу иметь возможность запускать тестирующее приложение на локальном компьютере, чтобы произвести определенные тесты на локальном стенде или клиентском, для дальнейшего анализа полученных данных, или для разработки новых тестов. Я как разработчик хочу, чтобы ТС проверяла проект после каждого изменения, для своевременного выявления проблем и ошибок. И так далее. Балансировку тестов для их распараллеливания мы выполняем достаточно некрасивым образом. Профиль запуска в pom. Управление исходным кодом. Таким образом, отцепляя ветку, разработчик отцепляет и код тестов, это обеспечивает синхронизацию тестов и приложения. Даже к этому очевидному решению мы пришли не сразу. Круг шестой. Отдельная сборка в CI Jenkins. Я считаю, что правила должны находиться как можно ближе к месту их применения. Тут же полезные ссылки. Полезные плагины для настройки сборок Clone Workspace, позволяющий избежать рассинхронизации, когда между компилированием кода в родительской сборке и запуском тестов в дочерней кто то сделал коммит. Xvfb виртуальный экран. Запуск тестов export DISPLAYlocalhost DISPLAY. Круг седьмой. Иерархия сборок. Позволяет удостовериться, что пройдут все миграции данных и приложение поднимется на непустой БД. Восьмой круг, уровень системы непрерывной интеграции. Наша CI это 4 ветки, в которых программисты могут прогонять тесты, запуская вручную и указывая свой branch. И одна main ветка, запускающаяся по коммиту в develop, от остальных отличающаяся наличием сборок тестирования на всех поддерживаемых СУБД. Не раньше, чем две недели назад каждая ветка располагалась на отдельном сервере мы выбрали EX4, так как нам не нужна надежность, но критична скорость процессора эксперименты показали что оптимально три ноды Jenkins на сервер. После перенастройки виртуальных экранов, портов и настроек СУБД у нас появилось общее пространство нод. Jenkins promoted builds plugin, позволяющий рисовать красивые звездочки сборкам, все дочки которых прошли без упавших тестов. Он оказался полезней, чем три сотни тестов через интерфейс или тысяча unit тестов. До него отдельные несознательные ПМы выпускали релизы, невзирая на наличие упавших тестов, уговоры и угрозы не помогали. Но как только у каждого билда появились звездочки сработала первая сигнальная система и раз в две недели лейтмотив дня ждем двух звезд. Это вылилось в повышенные требования к скорости исправления ошибок программистами и к качеству кода тестирующей системы случайные срабатывания теперь стоят дороже. Сборка, использующая Performance Plugin отслеживание производительности типовых операций, позволяет достаточно быстро обнаружить самые грубые ошибки связанные с производительностью системы. В разработке сборка, автоматически проводящая полноценное нагрузочное тестирование. Но это тема отдельной статьи. Note Еще несколько полезных штук Девятый круг, люди и процессы. На это уходит до половины времени. Моя Нежная Ведьма. Основной поставщик ручные тестировщики, их кейсы мы съедаем и просим еще, но у них масса другой интересной работы. Поэтому пишем тесты на дефекты, и вообще каждая выполненная таска в JIRA проходит через мой пристальный взгляд можно ли на нее написать тест Еще у нас есть Emma Plugin и три сборки сборки подсчета покрытия для uint тестов, для UI тестов и суммарное. По этим отчетам мы пишем тесты на API системы. Но для остальной функциональности отчет по покрытию ценности не имеет специфика нашего ПО такова, что нужно ориентироваться на покрытие тестами не кода, но требований. Разработка фичи в контексте автоматизированного тестирования выглядит так Отцепить ветку в git. Написать код фичи. Прогнать тесты в ветке. Исправить тесты в ветке. Получить две звезды. Слить с develop. Принцип, замедливший скорость разработки, повысивший готовность кода к релизу и сэкономивший массу времени моей группе Моральным правом на коммит обладает программист, сборка тестирования в ветках которого получила две звезды. Если программист отцепился от коммита, в котором все тесты проходили, то и его коммит должен обладать таким же свойством. На первых порах принцип был подкреплен revertом коммитов и запретом коммитов в develop. Такой процесс разработки наложил ограничение на суммарное время прохождения всех тестов 2 часа. У нас нет ночных тестов и тестов запускающихся на выходных, абсолютно все тесты проходят максимум за 2 часа. Группа автоматизированного тестирования последние полгода работала примерно в таком режиме Написать тестов до 2 часов докупить серверов и распараллелить написать тестов до 2 часов оптимизировать код тестов написать тестов до 2 часов поменять сервера на более быстрые написать тестов. Послесловие. Все, о чем я рассказал не моя заслуга. Мой вклад в код тестов треть строк. В CI четверть конфигов.