Оракулы в тестировании

Оракулы в тестировании

t.me/qa_chillout

Оракул (лат. oraculum, от oro — «говорю, прошу») — наиболее распространённая в античности форма прорицания, состоявшая в том, что предсказание от имени божества по запросу верующих оглашал специальный жрец, который и именовался оракулом. Наиболее знаменитый и авторитетный оракул античного мира находился ...

Стоп. Так бы начиналась глава в какой-либо книги по истории античности. Но где же тут тестирование? Все просто. Любое прорицание можно использовать как на благо себе, так и во вред. Оракулом в тестировании называется прорицание, которое несет нам важную информацию, чтобы мы смогли принять какое-либо решение. Какое решение мы примем — все зависит от нас самих.


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

Оракул — это эвристический механизм, который помогает нам определить результат выполнения теста.

Пример:

У нас имеется приложение — предсказатель, оно имеет только одну кнопку и в рандомном порядке нам показывает только два предложения: «сегодня твой день!» и «сегодня не твой день =(» .

Наш тест будет заключаться в следующем: нажать на кнопку, получить первый результат, затем получить второй результат. Кажется, что тут нет оракула. Нет того механизма, который бы нам помог определить тест пройден успешно или упал. Все ли кейсы мы учли. Предположим, что учтено все, релизим! Прибегает на следующее утро поддержка и говорит, что у пользователей оно долго выполняется. Мы добавляем проверку на время выполнения, проверяем, что получаем предсказание, предположим, за 10 секунд. Выкатываем в релиз, снова видим саппорт и множество жалоб пользователей. Теперь приложение все кеширует и у нас забивается память. Добавляем проверку на очищение кэша. Снова проверяем, релизим и т.д.

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


Оракул тестирования программного обеспечения — это инструмент, который помогает вам решить, прошла ли программа ваш тест. С этой точки зрения оракулы относятся к эвристикам тестирования, т.к это полезные инструменты, которые помогают нам принимать решения, но иногда они указывают нам и на неправильные решения.

Выделяют полный оракул — механизм, который на 100% может достоверно определить результат теста. И частичный оракул — механизм, который не может со 100% достоверностью определить результат теста.


Среда обитания

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


Популярные классификации оракулов

На текущий момент можно встретить две классификации оракулов. Первая — FEW HICCUPPS Майкла Болтона и Джеймса Баха. Вторая — Дуга Хоффмана.

В 1998 году Дуг Хоффман выделил два ключевых момента:

  • все оракулы эвристические;
  • доступно множество неполных оракулов. Учитывая, что нам приходится полагаться на неполные оракулы (потому что нет полных оракулов), мы должны подумать о том, какие комбинации оракулов мы можем использовать, чтобы узнать интересные вещи о программном обеспечении.


FEW HICCUPPS

FEW HICCUPPS – это оракул, который стоит использовать, когда мы размышляем, являет ли багом данное поведение или нет.

Расшифруем данный оракул:

Familiarity — родственность, осведомленность. Продукт не содержит известных багов, которые можно встретить в других схожих ПО.

Explainability — объяснимость. Программное обеспечение понятно пользователю.

World — мир. Продукт соответствует тому, что мы знаем или можем наблюдать в мире.


History — история. Текущая версия системы соответствует ее предыдущим версиям.

Image — имидж. Репутация и имидж компании.

Comparable product — конкуренты. Программное обеспечение не хуже, чем аналогичные продукты.

Claims — требования. Продукт соответствует тому, что указано в требованиях заказчика.

User Expectations — потребности пользователя. Программное обеспечение соответствует потребностям конечных пользователей.

Product — продукт. Каждый элемент продукта будет соответствовать сопоставимым элементам в той же системе.

Purpose — цель. Система соответствует ожиданиям пользователей.

Standards — стандарты. Программное обеспечение соответствует законам или постановлениям, относящимся к продукту или его использованию.


Резюме

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

Полагаясь только на оракулы, вы можете прийти к неверному выводу. К примеру, ошибочно решить, что программа не прошла тест, потому что ее выходные данные не соответствовали ожидаемым результатам но при более внимательном рассмотрении мы могли бы понять, что она отработала правильно. Например, представьте себе тестирование сетевого принтера с ожиданием, что принтер распечатает определенную страницу в течение 1 минуты, но во время выполнения теста другой компьютер отправил на принтер длинный документ, и поэтому он фактически не дошел до тестового документа. Это может быть совершенно правильным поведением в данных обстоятельствах, но оно не соответствует ожиданиям.

Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».

Report Page