39
рактика организации тестирования при хаотичной разработке приложений П

рактика организации тестирования при хаотичной разработке приложений

Embed Size (px)

DESCRIPTION

рактика организации тестирования при хаотичной разработке приложений. П. Е лена Цыганова. В 2004 г. с отличием окончила Омский государственный университет путей сообщения по специальности «Информационные системы». - PowerPoint PPT Presentation

Citation preview

Page 1: рактика организации тестирования при хаотичной разработке приложений

рактика организации тестирования при хаотичной разработке приложений

П

Page 2: рактика организации тестирования при хаотичной разработке приложений

Елена Цыганова В 2004 г. с отличием окончила Омский государственный университет путей сообщения по специальности «Информационные системы». С 2005 года занималась тестированием СПДС GraphiCS 3.0, MechaniCS 4.5 и 5.0, Genius MechaniCS 2006, TDMS 3.0 (всего более 10 проектов) в ООО «Магма-Компьютер» (ЗАО «СиСофт Омск), по сути, начиная тестирование в компании (в команде тестировщиков тогда было два человека). С конца 2005 года являюсь руководителем отдела тестирования этой компании.

Page 3: рактика организации тестирования при хаотичной разработке приложений

Что такое хаотичная разработка?Нет:

Четких сроков сдачи продукта заказчику Требований заказчика Документированного плана разработки продукта Спецификаций Определенной методологии

Но есть:

Примерная оценка длительности проекта от опытных разработчиков

Недокументированные требования – в головах у членов команды и заказчика

Документированные, хотя и запутанные требования – ГОСТы по строительству и машиностроению

Итеративная разработка продукта, svn, база ошибок,..

Page 4: рактика организации тестирования при хаотичной разработке приложений

О чем это выступлениеДумаю, есть много компаний, не придерживающихся

определенной методологии и на начальном этапе нанимающих тестировщиков с мыслью «Пусть они что-то посмотрят». Даже в такой ситуации возможно систематизировать тестирование, сделать его важным звеном в создании продукта. В моем докладе собраны практические решения, которые помогли мне в этом.

Page 5: рактика организации тестирования при хаотичной разработке приложений

Компания «Магма-Компьютер» создана в 1994 году. В 1996 г. в ней появился отдел разработки ПО. В 1998 году был выпущен первый программный продукт – ShapeSearch. В 2007 году компания вошла в группу компаний CSoft, в связи с чем стала называться «СSoft Омск».

На сегодняшний день у компании следующие сферы деятельности: продажа и внедрение программного обеспечения для

САПР; разработка программного обеспечения; курсы по работе с программными продуктами Autodesk

и CSoft Development (НОУ ДПО "Магма"); внедрение системы управления проектами на базе

TDMS; разработка библиотек стандартных компонентов; техническая поддержка САПР.

Немного о компании,..

Page 6: рактика организации тестирования при хаотичной разработке приложений

…о продуктах...

Пересекающийся функционал

Часть продуктов выходит в виде надстроек к другим платформам

Сборки одновременные, но не всегда и не ежедневно

Page 7: рактика организации тестирования при хаотичной разработке приложений

…и о команде На данный момент штат компании составляет 40

человек, из них 29 активно участвуют в разработке программного обеспечения. Сегодня наша команда это:

18 разработчиков;5 тестировщиков;3 менеджера проекта;2 человека, которые пишут справку, руководства

пользователя и прочую документацию;1 системный администратор.

Из 18 разработчиков 10 работают в компании более 5 лет, многие из них – с момента появления отдела разработки. Команда самоорганизованная, профессиональная, между членами команды существуют доверительные отношения.

Page 8: рактика организации тестирования при хаотичной разработке приложений

Как все начиналось Багтрекер для разработчиков Молчаливые сборки Отсутствие документирования в принципе Команда тестирования из одного человека Отсутствие взаимодействия в распределенных

командах

Результаты тестирования не учитываются ни командой, ни заказчиком

Page 9: рактика организации тестирования при хаотичной разработке приложений

Выявление проблем.

Пути решения

Page 10: рактика организации тестирования при хаотичной разработке приложений

Автоматизировать «нечего»

Нужны специалисты в предметной области

При желании можно найти хороших специалистов со сложным сочетанием навыков и знаний

Необходимость повышения уровня компьютерной грамотности

В дальнейшем – поиск «автоматизаторов»

Нет команды тестированияРешение: создать команду тестирования

знает работу БТИ

«машиностроитель»

начальник

«строитель» «аналитик»

Хорошее знание предметной области

Более охотное согласие руководства на прием сотрудника

Page 11: рактика организации тестирования при хаотичной разработке приложений

Нет документированных требованийРешение:составлять «карандашные» требования на новый функционал;создать и регулярно обновлять в svn базу спецификаций;формат спекцификации – документ Word

Существующие инструменты довольно сложные Требования есть в головах у членов команды Большой объем «старого» функционала при недостатке

времени

Мы знаем «как сделано», но теряем «как надо было сделать» (что для старого функционала не очень актуально – он обкатан как пользователями, там и командой).

В Word удобно ставить пометки на полях.

«Привычный» редактор и отдельная ветка уже существующего хранилища – не требуют освоения новых систем и дополнительных расходов на покупку софта.

Page 12: рактика организации тестирования при хаотичной разработке приложений

В svn есть механизм одновременной работы и версионность.

При желании можно дополнить информацию любыми видами документов – таблицами, ГОСТами в любом формате, электронными письмами.

Ветка svn, посвященная ТЗ и спецификациям

Page 13: рактика организации тестирования при хаотичной разработке приложений

Пример ТЗ (менеджер чертежей)

Page 14: рактика организации тестирования при хаотичной разработке приложений

«Карандашное» ТЗ

Page 15: рактика организации тестирования при хаотичной разработке приложений

Фрагмент спецификации «в работе»

Page 16: рактика организации тестирования при хаотичной разработке приложений

Требования обсуждаются без привлечения тестировщиковРешение:привлекать тестировщиков к обсуждению ТЗ фичи на старте;создавать и поддерживать спецификации совместно с тестировщиками

По итогам обсуждения ТЗ составляется спецификация, параллельно с кодированием фичи

ТЗ хранится, но, как правило, в дальнейшем не меняется Когда изменять спецификацию? - Об этом может сказать

рассылка изменений в сборке

Тестировщики в курсе изменений в функциональности.

Тестировщики участвуют в анализе функциональности.

Page 17: рактика организации тестирования при хаотичной разработке приложений

Тестировщики не информируются об изменениях в функциональностиРешение:создавать в базе ошибок задания на тестирование;рассылка списков изменений, сформированных по комментариям разработчиков в svn

Разработчик, заливая код в хранилище, оставляет комментарий

Комментарии по изменениям, вошедшим в сборку, собираются и рассылаются в виде анонса

Тестировщики по этому анонсу составляют список задач на итерацию

Разработчик или начальник отдела тестирования может дать развернутые указания по работе с функциональностью в виде задания на тестирование

Тестировщики в курсе изменений в функциональности.

Тестировщики получают дополнительную информацию о важности изменений и методах тестирования (чему и как уделить особое внимание).

Page 18: рактика организации тестирования при хаотичной разработке приложений

Задание на тестирование (база ошибок)

Page 19: рактика организации тестирования при хаотичной разработке приложений

Рассылка – анонс сборки

Page 20: рактика организации тестирования при хаотичной разработке приложений

Нет цели тестирования в итерации. Невозможно отследить, что именно протестированоРешение:работа по чек-листу с приоритетами;цели тестирования в итерации – результат анализа списка изменений и чек-листа

Вместо тест-плана – приоритезированный чек-лист. Отказ от «тяжелых», трудно поддерживаемых документов

Приоритеты выставляет менеджер проекта Задача в итерации – протестировать изменения в сборке

и очередную часть нетестированного функционала с наивысшим приоритетом из оставшихся

Неизвестно, какие именно тесты выполнял тестировщик в рамках тестирования чека (здесь мы теряем контроль, но полагаемся на профессиональность).

Больше вариантов тестов за счет отсутствия перечисленных шагов – творческий поиск багов.

Более гибкое определение приоритета тестов в пределах одного набора – с учетом масштабности изменений.

Page 21: рактика организации тестирования при хаотичной разработке приложений

Фрагмент чек-листа

Page 22: рактика организации тестирования при хаотичной разработке приложений

Отчет по сборке в чек-листе

Page 23: рактика организации тестирования при хаотичной разработке приложений

Нет тест-кейсовРешение: тестировать по спецификации

Каждый пункт спецификации содержит исходные данные и ожидаемый результат

Тестировщик сам выбирает наиболее важные в текущей итерации пункты

Нельзя сказать, какие именно тесты проводятся в итерации, за исключением тех, которые приводят к нахождению ошибок.

Требуется высокий профессиональный уровень тестировщика, хорошее понимание предметной области.

Творческий поиск ошибок – за счет отсутствия шагов.

«Живая» спецификация – благодаря постоянной работе с документом он всегда находится в актуальном состоянии.

Page 24: рактика организации тестирования при хаотичной разработке приложений

Живая спецификация. Мое виденье фичи после исследования и мастер-класса

разработчика

Page 25: рактика организации тестирования при хаотичной разработке приложений

Живая спецификация. Дополнения менеджера

Page 26: рактика организации тестирования при хаотичной разработке приложений

Живая спецификация. Изменения разработчика

Page 27: рактика организации тестирования при хаотичной разработке приложений

Не проводится системное тестированиеРешение: постепенно «обходить» все функции по чек-листу

Помимо изменений в задачи на итерацию входит тестирование нетестированных ранее фич из чек-листа

Список задач пополняется исходя из имеющегося времени на тестирование – до следующей сборки

Когда заканчиваются задания, полученные на основе списка изменений, а время еще остается, тестировщик выбирает из нетестированных ранее функций функции с наивысшим приоритетом

В ранее протестированном функционале могут возникать новые ошибки, например ошибки интеграции.

Что-то мы можем не протестировать вообще.

У нас есть информация о том, какую функцию и в какой сборке мы смотрели. Если все функции протестированы, круг открывается заново.

Мы можем точно сказать, на что именно нам необходимо дополнительное время.

Page 28: рактика организации тестирования при хаотичной разработке приложений

Тестирование не укладывается в срокиРешение:приоретизировать задачи;анализировать результаты тестирования по чек-листу;сообщать о выполненных и невыполненных задачах (в качестве аргумента для увеличения сроков тестирования)

Приоритет расставляет менеджер проекта Тестировщик тестирует наиболее приоритетные задачи

из имеющихся в итерации Если тестировщик не выполняет все задания –

разбираться: возможно, сборку пересобрали тут же; однократная нехватка времени – задействовать свободного специалиста; непонятность функционала – привлечь разработчика и / или менеджера; стабильное «неуспевание» – дробить зоны ответственности (или другое)

Чек-лист с результатами тестирования прикладывается в базу ошибок и доступен для всех пользователей

Page 29: рактика организации тестирования при хаотичной разработке приложений

«Покрытие» тестирования – отношение количества выполненных заданий к

общему количеству заданий в итерации. В идеале равно 1

Самые важные функции тестируются в первую очередь.

Анализ результатов дает возможность подтянуть слабые места.

Мы можем сказать, сделали ли мы все, от нас зависящее, чтобы уложиться в сроки.

Page 30: рактика организации тестирования при хаотичной разработке приложений

Неполноценная среда тестированияРешение: использовать виртуальные машины

Есть все базовые комбинации ОС и платформы Снапшоты позволяют быстро и просто сделать много

вариаций среды В снапшотах хранятся все сборки, отданные

пользователям Задел для автоматизации и ночных тестов

Решаем проблему конфигурационного тестирования.

Можно проверить ошибку именно в той сборке и той среде, в которой она проявляется у пользователя (по крайней мере максимально приблизить условия).

Page 31: рактика организации тестирования при хаотичной разработке приложений

Изначальный список виртуалок

Page 32: рактика организации тестирования при хаотичной разработке приложений

Одна и та же среда тестирования для нескольких проектовРешение: виртуальные машины, механизм снапшотов

Есть все базовые комбинации ОС и платформы Снапшоты позволяют быстро и просто сделать много

вариаций среды

Решаем проблему влияния продуктов друг на друга.

Page 33: рактика организации тестирования при хаотичной разработке приложений

Тестирование выполняется в среде разработкиРешение:соглашение с разработчиками – тестировать только на собранном продукте, но иногда не выполняется;решение разработчика «у меня не повторяется» принимать только после повтора на собранном продукте; на чистой виртуальной машине

Дополнительный плюс: разработчики «примеряют» роль тестировщиков на себя. Идея «отдать что-нибудь и пусть смотрят» перестает работать.

Page 34: рактика организации тестирования при хаотичной разработке приложений

Не принимается во внимание мнение тестировщиков о стабильности продуктаРешение:сообщать о стабильности продукта команде;составлять списки неисправленных ошибок и рассылать их;напоминать разработчикам об ошибках в их функциональности

У объекта «сборка» в базе ошибок есть атрибут – решение тестировщика

Вместе со сборкой заказчику отсылаются списки неисправленных и исправленных ошибок и решение тестировщиков о стабильности продукта

Работают ежемесячные напоминания – списки неисправленных ошибок разработчика

Предоставляем информацию о стабильности продукта команде.

Предоставляем информацию о стабильности продукта заказчику.

Page 35: рактика организации тестирования при хаотичной разработке приложений

Решение тестировщика

Замечания по сборке

Page 36: рактика организации тестирования при хаотичной разработке приложений

Список неисправленных

Page 37: рактика организации тестирования при хаотичной разработке приложений

Напоминания и тестирование «в контексте» имеют свои

плоды

Page 38: рактика организации тестирования при хаотичной разработке приложений

Что изменилось Сегодня:

Отдел тестирования принимает активное участие в разработке технического задания и создании спецификаций.

В любой момент мы можем сказать, что именно протестировано, какие найдены проблемы.

Мы можем анализировать ресурсы и результаты тестирования.

Команда заинтересована в развитии отдела тестирования, так как он приносит видимый результат, он полезен.

Заказчик заинтересован в отделе тестирования, так как получает объективную картину о состоянии продукта.

Page 39: рактика организации тестирования при хаотичной разработке приложений

Спасибо за внимание!

Вопросы?