Главная » 2012 » Март » 5 » Поговорим о тест-дизайне?
13:04
Поговорим о тест-дизайне?

Еще давно пришла мне в голову интересная аналогия тест-дизайна. Но, поскольку блога у меня тогда не было, эта аналогия так и осталась в голове. Теперь блог есть, буду делиться :)

Лично мне это помогло разложить по полочкам некоторые вещи, которые висели в голове без четкой структуры.

Итак, «Тест дизайн»

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

ИМХО, хорошее определение, и очень хорошо подходит для того, чтобы понять, что такое тест дизайн.

Давайте проведем аналогию со строительством:

  1. Тест кейс = кирпич
  2. Тест свит (test suite) = стена
  3. Тест план = дом

Задача: построить дом. Что нам для этого нужно (упрощенно): выбрать кирпичи, из кирпичей сделать стены, из стен сделать дом (предположим, что дом собирается как конструктор для лучшей аналогии).

Как бы вы выбирали кирпичи? Я думаю, был бы список вопросов перед тем, как делать выбор:

  • Для чего мне нужны кирпичи?
  • Из какого материала мне нужны кирпичи?
  • Какая длина/ширина/глубина мне нужна?
  • Какая прочность меня устроит?
  • И т.п.

Соответственно, основываясь на ответах на эти вопросы вы бы для себя решили, хороший это кирпич или нет. Притом хороший или нет — это зависит не от каких-то абсолютных величин и стандартов (хотя и от них тоже), а прежде всего от того, насколько конкретный кирпич подходит именно вам. По цене, по цвету, по прочности…

Мы выбираем кирпич, и делаем это тщательно, потому что из этого кирпича мы будем делать стены. Если кирпичи кривые и битые — то нормальную стену из них не построишь. Будем считать, что кирпич — атомарная единица строительства нашего дома.

Купили множество кирпичей. Что у нас в итоге есть? Дом? Нифига… У нас есть куча кирпичей, никак не связанных друг с другом. В них, конечно, можно жить, но радости будет мало… Хотя сам кирпич уже имеет дизайн: у него есть форма, вес, цвет, другие характеристики, которые как-то и кем-то подбирались. Это и есть дизайн кирпича.

Отступление в тестирование:

В тестировании атомарной единицей могут быть тест кейсы. Сами по себе тест кейсы ничего не дают, каждый из них может что-то проверить в приложении, но это нам ничего не даст, мы не будем знать, достаточно этого или нет, зачем они нужны, что кроме них еще нужно (у нас пока нет матрицы трассируемости и прочих документов).

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

  • Должен быть идентификатор
  • Должны быть пред. условия для того, чтобы тест кейс можно было выполнить
  • Должны быть шаги
  • Должны быть точки проверок с ожидаемым результатом
  • Должны ли данные, вводимые в приложение, быть однозначными или рандомными
  • И прочее

Это и есть дизайн тест кейса. Но этот дизайн не говорит нам, как эти тест кейсы собирать в кучу и что с ними глобально дальше делать.

Вернемся к кирпичам. Что нам нужно сделать, с помощью кирпичей приблизиться к готовому дому? Нам нужно построить стены. Согласитесь, при строительстве дома вы бы не захотели такой вариант стены, даже если бы там были идеальные кирпичи, подходящие вам по всем параметрам:

По какому принципу формируется стена из кирпичей? Можно выделить несколько:

  • Все кирпичи кладутся одной и той же стороной друг возле друга (а не хаотично)
  • Все кирпичи кладутся друг на друга с перехлестом в пол-кирпича
  • Количество цемента между кирпичами одинаковое
  • После укладки определенного количества слоев нужно дать застыть цементу

Очевидно? Аналогичная очевидность есть и в тестировании:

При составлении тест свитов нужно распределять тест кейсы логично:

  • Связывать логически наборы тест кейсов для формирования тест свитов (по используемым модулям, по разделам требований, по типам тестов и т.п.). Хаотичные связки редко хорошо работают, и в них потом тяжело разобраться, если вдруг придется что-то менять или сводить метрики
  • Делать тесты не зависимыми друг от друга (если повредился один кирпич — стена не рухнет. Если зафейлится один тест кейс — продолжит ли выполнение ваш тест свит?)
  • Формировать тест свиты по определенным принципам (один тест может относиться к разным свитам. Например, функциональный тест по удалению пользователя из системы может быть в свите для smoke тестов, в свите для функциональных тестов, в свите для нагрузочных тестов и т.п. В таком случае можно использовать keyword-driven подход)

Если мы хотим получить хорошие тест свиты, которые будет легко поддерживать, переформировывать (менять тест кейсы или составлять другие наборы тест свитов на общей базе тест кейсов), нам нужно иметь хорошо задизайненные тест кейсы и четкие правила по составлению свитов из этих тест кейсов, которые будут едины для всех составителей таких свитов. Когда на входе тест кейсы, а на выходе — тест свиты, то все, что происходит между входом и выходом — это и есть дизайн тест свитов.

Переключимся снова на строительство :)

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

То есть, чтобы собирать стены, нам нужен проект дома, как архитектурного сооружения. И с этим проектом должны уметь работать те строители, которые строят дом из стен. Его могут не полностью понимать те, кто кладет кирпич или производит кирпичи на заводе, ну да это и не особо нужно, у каждого документа есть своя целевая аудитория.

В тестировании проект дома — это тест план. Это тот документ, который является основополагающим каркасом для всего тестирования. Он описывает, что и как мы будем тестировать (описывает на высоком уровне, без объяснения, как разводить раствор для кладки кирпичей), какая будет структура команды, какие будут роли, сроки, критерий успешности тестов, конфигурацию тест-окружения и прочее. Он описывает то, без чего невозможно составить полную картину о тестировании. Он нужен для того, чтобы из красивых кирпичей и ровных стен не построить кривой дом, который будет никому не нужен.

Тест план — это основа дизайна всего тестирования на проекте.

Естественно, как при строительстве мы сначала делаем проект дома (глобальный — метраж, количество этажей, форма и т.п.) затем добавляем детали (комнаты, окна и т.п.), затем выбираем материалы (в том числе и кирпичи), так и в тестировании:

  1. Составляется тест план (на основании требований, плана проекта и других документов, которые есть в наличии), утверждается с заказчиком
  2. Продумывается стратегия и подход, который поможет сделать то, что написано в тест плане. Это может быть, например, документ по тест дизайну или тест архитектуре.
  3. Составляются тест кейсы и тест свиты

Вывод:

Тест дизайн — это проектирование, создание архитектуры тестов, которое участвует на всех стадиях тестирования (от составления тест плана до разработки тест кейсов).

В дополнение:

Почему разработчики чаще тестировщиков используют паттерны, coding guidelines, стили?

Не забывайте, что дизайн бывает разным. И если он не такой, к какому мы привыкли — это еще не значит, что он плохой


http://testingforall.com/blog/?p=20

Просмотров: 447 | Добавил: admin | Теги: тест дизайн, test case, тест свит, test suit, test plan, тест план, тест кейс | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: