390 likes | 482 Views
рактика организации тестирования при хаотичной разработке приложений. П. Е лена Цыганова. В 2004 г. с отличием окончила Омский государственный университет путей сообщения по специальности «Информационные системы».
E N D
рактика организации тестирования прихаотичной разработке приложений П
Елена Цыганова В 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 и CSoftDevelopment (НОУ ДПО "Магма"); • внедрение системы управления проектами на базе TDMS; • разработка библиотек стандартных компонентов; • техническая поддержка САПР.
…о продуктах... • Пересекающийся функционал • Часть продуктов выходит в виде надстроек к другим платформам • Сборки одновременные, но не всегда и не ежедневно
…и о команде На данный момент штат компании составляет 40 человек, из них 29 активно участвуют в разработке программного обеспечения. Сегодня наша команда это: 18 разработчиков; 5 тестировщиков; 3 менеджера проекта; 2 человека, которые пишут справку, руководства пользователя и прочую документацию; 1 системный администратор. Из 18 разработчиков 10 работают в компании более 5 лет, многие из них – с момента появления отдела разработки. Команда самоорганизованная, профессиональная, между членами команды существуют доверительные отношения.
Как все начиналось • Багтрекер для разработчиков • Молчаливые сборки • Отсутствие документирования в принципе • Команда тестирования из одного человека • Отсутствие взаимодействия в распределенных командах • Результаты тестирования не учитываются ни командой, ни заказчиком
Нет команды тестирования Решение: создать команду тестирования • Автоматизировать «нечего» • Нужны специалисты в предметной области • При желании можно найти хороших специалистов со сложным сочетанием навыков и знаний • Необходимость повышения уровня компьютерной грамотности • В дальнейшем – поиск «автоматизаторов» «машино строитель» знает работу БТИ «строитель» «аналитик» начальник Хорошее знание предметной области Более охотное согласие руководства на прием сотрудника
Нет документированных требований Решение: составлять «карандашные» требования на новый функционал; создать и регулярно обновлять в svnбазу спецификаций; формат спекцификации – документ Word • Существующие инструменты довольно сложные • Требования есть в головах у членов команды • Большой объем «старого» функционала при недостатке времени • Мы знаем «как сделано», но теряем «как надо было сделать» (что для старого функционала не очень актуально – он обкатан как пользователями, там и командой). • В Word удобно ставить пометки на полях. • «Привычный» редактор и отдельная ветка уже существующего хранилища – не требуют освоения новых систем и дополнительных расходов на покупку софта.
В svnесть механизм одновременной работы и версионность. При желании можно дополнить информацию любыми видами документов – таблицами, ГОСТами в любом формате, электронными письмами. Ветка svn, посвященная ТЗ и спецификациям
Фрагмент спецификации «в работе»
Требования обсуждаются без привлечения тестировщиков Решение: привлекать тестировщиков к обсуждению ТЗ фичи на старте; создавать и поддерживать спецификации совместно с тестировщиками • По итогам обсуждения ТЗ составляется спецификация, параллельно с кодированием фичи • ТЗ хранится, но, как правило, в дальнейшем не меняется • Когда изменять спецификацию? - Об этом может сказать рассылка изменений в сборке • Тестировщики в курсе изменений в функциональности. • Тестировщики участвуют в анализе функциональности.
Тестировщики не информируются об изменениях в функциональности Решение: создавать в базе ошибок задания на тестирование; рассылка списков изменений, сформированных по комментариям разработчиков в svn • Разработчик, заливая код в хранилище, оставляет комментарий • Комментарии по изменениям, вошедшим в сборку, собираются и рассылаются в виде анонса • Тестировщики по этому анонсу составляют список задач на итерацию • Разработчик или начальник отдела тестирования может дать развернутые указания по работе с функциональностью в виде задания на тестирование • Тестировщики в курсе изменений в функциональности. • Тестировщики получают дополнительную информацию о важности изменений и методах тестирования (чему и как уделить особое внимание).
Задание на тестирование (база ошибок)
Нет цели тестирования в итерации. Невозможно отследить, что именно протестировано Решение: работа по чек-листу с приоритетами; цели тестирования в итерации – результат анализа списка изменений и чек-листа • Вместо тест-плана – приоритезированный чек-лист. Отказ от «тяжелых», трудно поддерживаемых документов • Приоритеты выставляет менеджер проекта • Задача в итерации – протестировать изменения в сборке и очередную часть нетестированного функционала с наивысшим приоритетом из оставшихся • Неизвестно, какие именно тесты выполнял тестировщик в рамках тестирования чека (здесь мы теряем контроль, но полагаемся на профессиональность). • Больше вариантов тестов за счет отсутствия перечисленных шагов – творческий поиск багов. • Более гибкое определение приоритета тестов в пределах одного набора – с учетом масштабности изменений.
Нет тест-кейсов Решение: тестировать по спецификации • Каждый пункт спецификации содержит исходные данные и ожидаемый результат • Тестировщик сам выбирает наиболее важные в текущей итерации пункты • Нельзя сказать, какие именно тесты проводятся в итерации, за исключением тех, которые приводят к нахождению ошибок. • Требуется высокий профессиональный уровень тестировщика, хорошее понимание предметной области. • Творческий поиск ошибок – за счет отсутствия шагов. • «Живая» спецификация – благодаря постоянной работе с документом он всегда находится в актуальном состоянии.
Живая спецификация. Мое виденье фичи после исследования и мастер-класса разработчика
Живая спецификация. Дополнения менеджера
Живая спецификация. Изменения разработчика
Не проводится системное тестирование Решение: постепенно «обходить» все функции по чек-листу • Помимо изменений в задачи на итерацию входит тестирование нетестированных ранее фич из чек-листа • Список задач пополняется исходя из имеющегося времени на тестирование – до следующей сборки • Когда заканчиваются задания, полученные на основе списка изменений, а время еще остается, тестировщик выбирает из нетестированных ранее функций функции с наивысшим приоритетом • В ранее протестированном функционале могут возникать новые ошибки, например ошибки интеграции. • Что-то мы можем не протестировать вообще. • У нас есть информация о том, какую функцию и в какой сборке мы смотрели. Если все функции протестированы, круг открывается заново. • Мы можем точно сказать, на что именно нам необходимо дополнительное время.
Тестирование не укладывается в сроки Решение: приоретизировать задачи; анализировать результаты тестирования по чек-листу; сообщать о выполненных и невыполненных задачах (в качестве аргумента для увеличения сроков тестирования) • Приоритет расставляет менеджер проекта • Тестировщик тестирует наиболее приоритетные задачи из имеющихся в итерации • Если тестировщик не выполняет все задания – разбираться: возможно, сборку пересобрали тут же; однократная нехватка времени – задействовать свободного специалиста; непонятность функционала – привлечь разработчика и / или менеджера; стабильное «неуспевание» – дробить зоны ответственности (или другое) • Чек-лист с результатами тестирования прикладывается в базу ошибок и доступен для всех пользователей
Самые важные функции тестируются в первую очередь. Анализ результатов дает возможность подтянуть слабые места. Мы можем сказать, сделали ли мы все, от нас зависящее, чтобы уложиться в сроки. «Покрытие» тестирования – отношение количества выполненных заданий к общему количеству заданий в итерации. В идеале равно 1
Неполноценная среда тестирования Решение: использовать виртуальные машины • Есть все базовые комбинации ОС и платформы • Снапшоты позволяют быстро и просто сделать много вариаций среды • В снапшотах хранятся все сборки, отданные пользователям • Задел для автоматизации и ночных тестов • Решаем проблему конфигурационного тестирования. • Можно проверить ошибку именно в той сборке и той среде, в которой она проявляется у пользователя (по крайней мере максимально приблизить условия).
Одна и та же среда тестирования для нескольких проектов Решение: виртуальные машины, механизм снапшотов • Есть все базовые комбинации ОС и платформы • Снапшоты позволяют быстро и просто сделать много вариаций среды • Решаем проблему влияния продуктов друг на друга.
Тестирование выполняется в среде разработки Решение: соглашение с разработчиками – тестировать только на собранном продукте, но иногда не выполняется; решение разработчика «у меня не повторяется» принимать только после повтора на собранном продукте; на чистой виртуальной машине Дополнительный плюс: разработчики «примеряют» роль тестировщиков на себя. Идея «отдать что-нибудь и пусть смотрят» перестает работать.
Не принимается во внимание мнение тестировщиков о стабильности продукта Решение: сообщать о стабильности продукта команде; составлять списки неисправленных ошибок и рассылать их; напоминать разработчикам об ошибках в их функциональности • У объекта «сборка» в базе ошибок есть атрибут – решение тестировщика • Вместе со сборкой заказчику отсылаются списки неисправленных и исправленных ошибок и решение тестировщиков о стабильности продукта • Работают ежемесячные напоминания – списки неисправленных ошибок разработчика • Предоставляем информацию о стабильности продукта команде. • Предоставляем информацию о стабильности продукта заказчику.
Замечания по сборке Решение тестировщика
Напоминания и тестирование «в контексте» имеют свои плоды
Что изменилось Сегодня: Отдел тестирования принимает активное участие в разработке технического задания и создании спецификаций. В любой момент мы можем сказать, что именно протестировано, какие найдены проблемы. Мы можем анализировать ресурсы и результаты тестирования. Команда заинтересована в развитии отдела тестирования, так как он приносит видимый результат, он полезен. Заказчик заинтересован в отделе тестирования, так как получает объективную картину о состоянии продукта.