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

advertisement
Практика организации
тестирования при
хаотичной разработке
приложений
Елена Цыганова
В 2004 г. с отличием окончила
Омский государственный
университет путей сообщения по
специальности «Информационные
системы».
С 2005 года занималась
тестированием СПДС GraphiCS 3.0,
MechaniCS 4.5 и 5.0, Genius
MechaniCS 2006, TDMS 3.0 (всего
более 10 проектов) в ООО «МагмаКомпьютер» (ЗАО «СиСофт Омск), по
сути, начиная тестирование в
компании (в команде тестировщиков
тогда было два человека).
С конца 2005 года являюсь
руководителем отдела тестирования
этой компании.
Что такое хаотичная разработка?
Нет:





Четких сроков сдачи продукта заказчику
Требований заказчика
Документированного плана разработки продукта
Спецификаций
Определенной методологии
Но есть:
 Примерная оценка длительности проекта от опытных
разработчиков
 Недокументированные требования – в головах у членов
команды и заказчика
 Документированные, хотя и запутанные требования –
ГОСТы по строительству и машиностроению
 Итеративная разработка продукта, svn, база ошибок,..
О чем это выступление
Думаю, есть много компаний, не придерживающихся
определенной методологии и на начальном этапе
нанимающих тестировщиков с мыслью «Пусть они что-то
посмотрят». Даже в такой ситуации возможно
систематизировать тестирование, сделать его важным
звеном в создании продукта. В моем докладе собраны
практические решения, которые помогли мне в этом.
Немного о компании,..
Компания «Магма-Компьютер» создана в 1994 году. В
1996 г. в ней появился отдел разработки ПО. В 1998 году
был
выпущен
первый
программный
продукт
–
ShapeSearch. В 2007 году компания вошла в группу
компаний CSoft, в связи с чем стала называться «СSoft
Омск».
На сегодняшний день у компании следующие сферы
деятельности:
 продажа и внедрение программного обеспечения для
САПР;
 разработка программного обеспечения;
 курсы по работе с программными продуктами Autodesk и
CSoft Development (НОУ ДПО "Магма");
 внедрение системы управления проектами на базе
TDMS;
 разработка библиотек стандартных компонентов;
 техническая поддержка САПР.
…о продуктах...
 Пересекающийся
функционал
 Часть продуктов
выходит в виде
надстроек к
другим
платформам
 Сборки
одновременные,
но не всегда и не
ежедневно
…и о команде
На данный момент штат компании составляет 40
человек, из них 29 активно участвуют в разработке
программного обеспечения. Сегодня наша команда это:
18 разработчиков;
5 тестировщиков;
3 менеджера проекта;
2 человека, которые пишут справку, руководства
пользователя и прочую документацию;
1 системный администратор.
Из 18 разработчиков 10 работают в компании более 5
лет, многие из них – с момента появления отдела
разработки. Команда самоорганизованная,
профессиональная, между членами команды существуют
доверительные отношения.
Как все начиналось
 Багтрекер для разработчиков
 Молчаливые сборки
 Отсутствие документирования в принципе
 Команда тестирования из одного человека
 Отсутствие взаимодействия в распределенных командах
 Результаты тестирования не учитываются
ни командой, ни заказчиком
Выявление проблем.
Пути решения
Нет команды тестирования
Решение: создать команду тестирования
 Автоматизировать
«нечего»
 Нужны специалисты в
предметной области
 При желании можно найти
хороших специалистов со
сложным сочетанием
навыков и знаний
Необходимость повышения
уровня компьютерной
грамотности
знает работу
БТИ
«машино
строитель»
«строитель»
В дальнейшем – поиск
«автоматизаторов»
«аналитик»
начальник
Хорошее знание предметной области
Более охотное согласие руководства на прием
сотрудника
Нет документированных требований
Решение:
составлять «карандашные» требования на новый
функционал;
создать и регулярно обновлять в svn базу спецификаций;
формат спекцификации – документ Word
 Существующие инструменты довольно сложные
 Требования есть в головах у членов команды
 Большой объем «старого» функционала при недостатке
времени
Мы знаем «как сделано», но теряем «как надо было сделать»
(что для старого функционала не очень актуально – он
обкатан как пользователями, там и командой).
В Word удобно ставить пометки на полях.
«Привычный» редактор и отдельная ветка уже
существующего хранилища – не требуют освоения
новых систем и дополнительных расходов на покупку
софта.
В svn есть механизм одновременной работы и
версионность.
При желании можно дополнить информацию любыми
видами документов – таблицами, ГОСТами в любом
формате, электронными письмами.
Ветка svn, посвященная ТЗ и спецификациям
Пример ТЗ (менеджер чертежей)
«Карандашное» ТЗ
Фрагмент спецификации «в работе»
Требования обсуждаются без привлечения
тестировщиков
Решение:
привлекать тестировщиков к обсуждению ТЗ фичи на
старте;
создавать и поддерживать спецификации совместно с
тестировщиками
 По итогам обсуждения ТЗ составляется спецификация,
параллельно с кодированием фичи
 ТЗ хранится, но, как правило, в дальнейшем не меняется
 Когда изменять спецификацию? - Об этом может сказать
рассылка изменений в сборке
Тестировщики в курсе изменений в
функциональности.
Тестировщики участвуют в анализе
функциональности.
Тестировщики не информируются об изменениях в
функциональности
Решение:
создавать в базе ошибок задания на тестирование;
рассылка списков изменений, сформированных по
комментариям разработчиков в svn
 Разработчик, заливая код в хранилище, оставляет
комментарий
 Комментарии по изменениям, вошедшим в сборку,
собираются и рассылаются в виде анонса
 Тестировщики по этому анонсу составляют список задач на
итерацию
 Разработчик или начальник отдела тестирования может
дать развернутые указания по работе с
функциональностью в виде задания на тестирование
Тестировщики в курсе изменений в
функциональности.
Тестировщики получают дополнительную
информацию о важности изменений и методах
тестирования (чему и как уделить особое внимание).
Задание на тестирование (база ошибок)
Рассылка – анонс сборки
Нет цели тестирования в итерации. Невозможно
отследить, что именно протестировано
Решение:
работа по чек-листу с приоритетами;
цели тестирования в итерации – результат анализа
списка изменений и чек-листа
 Вместо тест-плана – приоритезированный чек-лист. Отказ
от «тяжелых», трудно поддерживаемых документов
 Приоритеты выставляет менеджер проекта
 Задача в итерации – протестировать изменения в сборке и
очередную часть нетестированного функционала с
наивысшим приоритетом из оставшихся
Неизвестно, какие именно тесты выполнял тестировщик в
рамках тестирования чека (здесь мы теряем контроль, но
полагаемся на профессиональность).
Больше вариантов тестов за счет отсутствия
перечисленных шагов – творческий поиск багов.
Более гибкое определение приоритета тестов в
пределах одного набора – с учетом масштабности
изменений.
Фрагмент чек-листа
Отчет по сборке в чек-листе
Нет тест-кейсов
Решение: тестировать по спецификации
 Каждый пункт спецификации содержит исходные данные и
ожидаемый результат
 Тестировщик сам выбирает наиболее важные в текущей
итерации пункты
Нельзя сказать, какие именно тесты проводятся в итерации,
за исключением тех, которые приводят к нахождению
ошибок.
Требуется высокий профессиональный уровень
тестировщика, хорошее понимание предметной области.
Творческий поиск ошибок – за счет отсутствия шагов.
«Живая» спецификация – благодаря постоянной
работе с документом он всегда находится в актуальном
состоянии.
Живая спецификация. Мое виденье фичи
после исследования и мастер-класса
разработчика
Живая спецификация. Дополнения
менеджера
Живая спецификация. Изменения
разработчика
Не проводится системное тестирование
Решение: постепенно «обходить» все функции по чеклисту
 Помимо изменений в задачи на итерацию входит
тестирование нетестированных ранее фич из чек-листа
 Список задач пополняется исходя из имеющегося времени
на тестирование – до следующей сборки
 Когда заканчиваются задания, полученные на основе
списка изменений, а время еще остается, тестировщик
выбирает из нетестированных ранее функций функции с
наивысшим приоритетом
В ранее протестированном функционале могут возникать
новые ошибки, например ошибки интеграции.
Что-то мы можем не протестировать вообще.
У нас есть информация о том, какую функцию и в
какой сборке мы смотрели. Если все функции
протестированы, круг открывается заново.
Мы можем точно сказать, на что именно нам
необходимо дополнительное время.
Тестирование не укладывается в сроки
Решение:
приоретизировать задачи;
анализировать результаты тестирования по чек-листу;
сообщать о выполненных и невыполненных задачах (в
качестве аргумента для увеличения сроков
тестирования)
 Приоритет расставляет менеджер проекта
 Тестировщик тестирует наиболее приоритетные задачи из
имеющихся в итерации
 Если тестировщик не выполняет все задания –
разбираться: возможно, сборку пересобрали тут же;
однократная нехватка времени – задействовать
свободного специалиста; непонятность функционала –
привлечь разработчика и / или менеджера; стабильное
«неуспевание» – дробить зоны ответственности (или
другое)
 Чек-лист с результатами тестирования прикладывается в
базу ошибок и доступен для всех пользователей
Самые важные функции тестируются в первую
очередь.
Анализ результатов дает возможность подтянуть
слабые места.
Мы можем сказать, сделали ли мы все, от нас
зависящее, чтобы уложиться в сроки.
«Покрытие» тестирования – отношение
количества выполненных заданий к
общему количеству заданий в итерации.
В идеале равно 1
Неполноценная среда тестирования
Решение: использовать виртуальные машины
 Есть все базовые комбинации ОС и платформы
 Снапшоты позволяют быстро и просто сделать много
вариаций среды
 В снапшотах хранятся все сборки, отданные
пользователям
 Задел для автоматизации и ночных тестов
Решаем проблему конфигурационного тестирования.
Можно проверить ошибку именно в той сборке и той
среде, в которой она проявляется у пользователя (по
крайней мере максимально приблизить условия).
Изначальный список виртуалок
Одна и та же среда тестирования для нескольких
проектов
Решение: виртуальные машины, механизм снапшотов
 Есть все базовые комбинации ОС и платформы
 Снапшоты позволяют быстро и просто сделать много
вариаций среды
Решаем проблему влияния продуктов друг на друга.
Тестирование выполняется в среде разработки
Решение:
соглашение с разработчиками – тестировать только на
собранном продукте, но иногда не выполняется;
решение разработчика «у меня не повторяется»
принимать только после повтора на собранном продукте;
на чистой виртуальной машине
Дополнительный плюс: разработчики «примеряют»
роль тестировщиков на себя. Идея «отдать что-нибудь
и пусть смотрят» перестает работать.
Не принимается во внимание мнение тестировщиков о
стабильности продукта
Решение:
сообщать о стабильности продукта команде;
составлять списки неисправленных ошибок и рассылать
их;
напоминать разработчикам об ошибках в их
функциональности
 У объекта «сборка» в базе ошибок есть атрибут – решение
тестировщика
 Вместе со сборкой заказчику отсылаются списки
неисправленных и исправленных ошибок и решение
тестировщиков о стабильности продукта
 Работают ежемесячные напоминания – списки
неисправленных ошибок разработчика
Предоставляем информацию о стабильности продукта
команде.
Предоставляем информацию о стабильности продукта
заказчику.
Замечания по сборке
Решение тестировщика
Список неисправленных
Напоминания и тестирование
«в контексте» имеют свои
плоды
Что изменилось
Сегодня:
Отдел тестирования принимает активное участие в
разработке технического задания и создании
спецификаций.
В любой момент мы можем сказать, что именно
протестировано, какие найдены проблемы.
Мы можем анализировать ресурсы и результаты
тестирования.
Команда заинтересована в развитии отдела
тестирования, так как он приносит видимый результат, он
полезен.
Заказчик заинтересован в отделе тестирования, так как
получает объективную картину о состоянии продукта.
Спасибо за внимание!
Вопросы?
Download