Классификация задач и ролей в тестировании, основанная на
методологии RUP.
Вокруг ролей и задач, связанных с тестированием и обеспечением
качества, сложилось несколько противоположных идейных течений,
которые усердно культивируются носителями этих идей. Точки зрения во
многом противоположны, во многом противоречивы. Тестирование видится
с одной стороны каким-то полумеханическим процессом, который не
требует особенной квалификации: тестировщика видят эдаким
«кликальщиком», который просто гоняет приложение, ждёт пока оно
«упадёт», потом радостно сообщает об ошибке и продолжает в том же
духе. В последнее время, надо отдать должное, появляются материалы о
тестировании и качестве, выходят в свет книги, развиваются сайты
посвящённые этому направлению — это направление
мысли постепенно сходит на «нет». С другой точки зрения, которую,
наверное, культивируют отчасти и сами тестировщики (в самом широком
смысле этого слова), тестирование — это процесс,
покрытый множеством неопределённостей, трудно формализируемый и
поддающийся оценкам. Если же к тестированию добавить автоматизацию,
которая по оценкам тех, кто внедрял инструменты и решения для
тестирования, требует больших (по сравнению с ручным тестированием)
трудозатрат и говорить об оценке качества продукта, направление
тестирования получается совсем непрозрачным для стороннего
наблюдателя, а порой и для самих тестировщиков и QA.
Как мне кажется, связана такая ситуация с тем, что существует
определённое непонимание процессов связанных с тестированием и
обеспечением качества. Между тем, направление тестирования чётко
определено ролями и задачами, которое оно решает. Определившись с
ролями и задачами, можно не только представить себе более-менее
стандартный процесс тестирования, но также понять, что к нему не
относится. Заметим, я не отождествляю процессы тестирования и
обеспечения качества. К задачам обеспечения качества я планирую
вернуться в последующих публикациях. Сейчас я предлагаю
рассматривать тестирование, как часть процесса обеспечения
качества.
Попробуем определиться и понять, какие же роли и задачи решаются
направлением тестирования. Чтобы не изобретать велосипед, я
предлагаю взять за основу существующую методологию RUP (Rational
Unified Process), как наиболее общий и полный вариант.
Аналогии
Есть замечательная реклама: Как делают автомобили SAAB? Берут самолёт
и отсекают всё лишнее, что помогает ему
взлетать.
Попробуем взять шаблон RUP-а для MTP (Master Test Plan) и отсечь
всё лишнее, что не касается темы данной статьи. Самое интересное,
что отсечь пришлось практически весь шаблон, оставив только одно
приложение и табличку, для расчета ресурсов. Добавим перевод,
вырежем лишнее.
Деятельность/Задачи тестирования (Testing Activities)
Рассмотрим более подробно существующие активности/задачи
связанные с тестированием:
- Планирование тестов (Plan Test)
- Определение требований к тестам (identify requirements for
test)
- Оценка рисков (assess risk)
- Разработка стратегии тестирования (develop test strategy)
- Определение ресурсов (identify test resources)
- Создание расписания/последовательностей (create schedule)
- Разработка Плана тестирования (generate Test Plan)
- Дизайн тестов (Design Test)
- Анализ объёма работ (prepare workload analysis)
- Определение и описание тестовых случаев (identify and
describe test cases)
- Определение и структурирование тестовых процедур (identify
and structure test procedures)
- Обзор и оценка тестового покрытия (review and assess test
coverage)
- Разработка тестов (Implement Test)
- Запись или программирование тестовых скриптов (record or
program test scripts)
- Определение тесто-критичной функциональности в Дизайне и
Модели реализации (identify test-specific functionality in the
Design and Implementation Model)
- Создание/подготовка внешних наборов данных (establish
external data sets)
- Выполнение тестов (Execute Test)
- Выполнение тестовых процедур (execute Test procedures)
- Оценка выполнения тестов (evaluate execution of Test)
- Восстановление после сбойных тестов (recover from halted
Test)
- Проверка результатов (verify the results)
- Исследование неожиданных результатов (investigate unexpected
results)
- Запись ошибок (log defects)
- Оценка тестов (Evaluate Test)
- Оценка покрытия тестовыми случаями (evaluate Test-case
coverage)
- Оценка покрытия кода (evaluate code coverage)
- Анализ дефектов (analyze defects)
- Определение критериев завершения и успешности тестирования
(determine if Test Completion Criteria and Success Criteria have
been achieved
Роли в тестировании (roles)
Роль |
Описание |
Тест-менеджер, менеджер проекта по тестированию
(Test Manager, Test Project Manager) |
Производит управленческий контроль (management
oversight) Ответственность:
- Обеспечивает техническое направление
- Получает необходимые ресурсы
- Обеспечивает управленческую отчётность
|
Тест дизайнер
(Test Designer) |
Определяет, приоритизирует и обеспечивает разработку
тестовых случаев Ответственность:
- Разрабатывает план тестирования
- Разрабатывает модель тестирования
- Оценивает эффективность тестирования
|
Тестировщик, Инженер по тестированию
(Tester) |
Выполняет тесты Ответственность:
- Выполняет тесты
- Фиксирует результаты
- Восстанавливает тесты и систему после сбоев
- Документирует запросы на изменение
|
Администратор тестовой системы, приложений поддерживающих
жизненный цикл тестирования
(Test System Administrator) |
Обеспечивает управление и поддержку тестовых окружений и
данных Ответственность:
- Администрирует систему управления тестированием
- Инсталлирует и управляет доступом к тестовым системам
|
Администратор баз данных, менеджер баз данных
(Database Administrator, Database Manager) |
Обеспечивает управление и поддержку тестовых данных (баз
данных) Ответственность:
- Администрирует тестовые данные (базы данных)
|
Тест-дизайнер
(Designer) |
Устанавливает и определяет операции, атрибуты и связи
тестовых классов Ответственность:
- Устанавливает и определяет тестовые классы
- Устанавливает и определяет тестовые наборы (пакеты)
|
Разработчик тестов
(Implementer) |
Разрабатывает юнит тесты (unit tests), тестовые классы и
тестовые наборы (пакеты) Ответственность:
- Создаёт тестовые классы, собирает тестовые пакеты и
интегрирует их с тестовую модел
|
Как видите, при ближайшем рассмотрении, оказывается, что
тестирование — вполне определённый процесс с
выделенными ролями и зоной ответственности для различных игроков
проекта. Порядок перечисления задачи определяет обычный (полный)
цикл проведения тестирования. Такой цикл может применятся, как для
проектов ориентированных на длительные итерации, так и для «быстрых»
проектов ведущихся по эволюционным методикам (evolutionary) или
согласно набирающему обороты XP.
Надеюсь, после небольшого экскурса во внутренний мир задач и
ролей в тестировании, неразберихи станет меньше.