«ПЯТНО НА ВАЗЕ» – мнемоника для тестирования требований

Привет, Хабр! Я являюсь тестировщиком компании TravelLine. Мы разрабатываем единую систему для гостиничного предприятия, которая помогает отелям, санаториям и другим средствам размещения автоматизировать бизнес-процессы.

В тестировании своих продуктов мы придерживаемся подхода «Shift Left» или «Сдвиг влево». Суть этого подхода — смещение фазы тестирования влево в жизненном цикле продукта и проведение тестирования на каждом этапе разработки. Одной из техник, которая помогает смещать тестирование влево является тестирование документации и требований.

Требования являются отправной точкой для определения того, что проектная команда будет проектировать, реализовывать и тестировать. Элементарная логика говорит нам, что если в требованиях что-то «не то», то и реализовано будет «не то», т.е. колоссальная работа множества людей будет выполнена впустую.*

В процессе тестирования требований проверяется их соответствие определенному набору свойств. Куликов выделяет следующие свойства качественных требований:

e23c12bf542fc94e4fc9d169e54ced83.png

Наш чек-лист проверки требований содержит большинство этих свойств, а именно: Атомарность, Единичность, Завершенность, Недвусмысленность, Непротиворечивость, Выполнимость, Тестируемость, Обязательность, Актуальность, Прослеживаемость, Явность. Чтобы проверить, соответствуют ли требования этим свойствам, я придумал мнемонику «ПЯТНО НА ВАЗЕ».

Мнемоника — это тип эвристики, набор правил и приемов, которые помогают эффективно запоминать необходимые сведения (информацию), обычно это слово-аббревиатура или фраза. Например, все помнят детскую мнемонику «каждый охотник желает знать где сидит фазан», в которой по первым буквам каждого слова можно вспомнить порядок цветов радуги.**

c2d77ef58eaa69d8bc388d26cfa1a3de.jpg

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

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

  1. Изобразить один из совершенных Гераклом подвигов и указать номер этого подвига.

  2. Одним из подвигов изображенных на вазе обязательно должен быть тот, где Геракл сражается с Немейским львом.

  3. Чтобы роспись на вазе сохранилась в течение двухсот лет.

    Роспись должна быть красивой.

  4. Чтобы на вазе был меандровый орнамент, но это не обязательно, и еще нужно успеть сделать вазу к предстоящему празднику Гераклеи.

Также он хотел увидеть сходство изображенного на вазе Геракла с собой, но не высказал это вслух, а лишь подумал об этом. Обозначим это пожелание под №5.

Читая пергамент мы пытались представить будущий результат нашей работы, но вместо четкого и ясного изображения на вазе, видели лишь большое неразборчивое пятно. Согласно пожеланию №1 нам необходимо изобразить один из совершенных подвигов, но какой именно? — Нарушено свойство »Завершенность». Также это пожелание можно разделить на два отдельных — 1. Изобразить подвиг и 2. Указать номер подвига. — Нарушено свойство »Атомарность». Далее в пожелании №2 речь вообще идет уже о том, чтобы одним из подвигов изображенных на вазе обязательно был тот, где Геракл сражается с Немейским львом, то есть изобразить мы должны уже не один, а несколько подвигов? Тут пожелание №2 противоречит пожеланию №1 и нарушено свойство »Непротиворечивость». Также мы не можем гарантировать выполнение пожелания №3 потому, что ни один человек не живет столько лет, и мы не можем проверить, что спустя двести лет роспись на вазе будет видна как и прежде. Здесь нарушены свойства »Выполнимость» и »Тестируемость». Далее идет пожелание которое не было пронумеровано, из-за чего оно теряется между третьим и четвертым пожеланиями, и его случайно можно пропустить при изготовлении вазы. — Нарушено свойство »Прослеживаемость». А что значит красивое? — Нарушено свойство »Недвусмысленность». В пожелании №4 говорится, что нужно изобразить орнамент, но это не обязательно, можно этого не делать. — Нарушено свойство »Обязательность». Далее в этом же пожелании следует еще одно, которое не имеет отношения к предыдущему. Его стоило бы описать отдельно, а именно то, что нужно успеть изготовить вазу к предстоящему празднику Гераклеи. — Нарушено свойство »Единичность». А про пожелание №5 мы вообще ничего не знали, так как нам об этом просто не сказали. — Нарушено свойство »Явность».***

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

12225b5dbef4b6a440d2ac18ae2d04e9.png

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

И в завершении напишу пару слов о том, как собственно все это пришло мне в голову. На самом деле тут все довольно просто. Выписав первые буквы каждого из свойства (Атомарность, Единичность, Завершенность, Недвусмысленность, Непротиворечивость, Выполнимость, Тестируемость, Обязательность, Актуальность, Прослеживаемость, Явность) я получил такую коллекцию букв: АЕЗННВТОАПЯ. А дальше обычным перебором этих букв стал придумывать слова и фразы, вычеркивая уже использованные буквы: составил слово «ПЯТНО» — остались буквы АЕЗНВА, составил слово «ВАЗА» — остались буквы НЕ. Здесь мне удачно пригодилось мое небольшое увлечение мифами Древней Греции и нужно лишь было немного проявить фантазию. Так в конечном итоге и получилось «ПЯТНО НА ВАЗЕ».

*Тестирование программного обеспечения. Базовый курс / Святослав Куликов.
**https://vladislaveremeev.gitbook.io/qa_bible/obshee/evristiki-i-mnemoniki
***В своем примере я не упомянул лишь свойство «Актуальность». Оно означает, что требование не устарело. Например, требование должно соответствовать техническим реалиям. Вряд ли сейчас найдется много пользователей Windows 2000.

© Habrahabr.ru