17 октября 2013 г.

Тестер

Есть у нас большой магазин, в котором установлены автоматические шкафы с ящиками для хранения. Алгоритм работы ящиков следующий:
  1. клиент подходит к ящику и нажимает кнопку "сдать на хранение";
  2. шкаф печатает чек со штрих-кодом;
  3. клиент берёт чек
  4. шкаф открывает дверцу свободного ящика;
  5. клиент кладёт вещи в ящик, закрывает дверцу и уходит с чеком;
  6. по возвращении, клиент подносит чек к считывателю штрих-кодов
  7. шкаф открывает его ящик;
  8. забрав вещи, клиент закрывает дверцу и уходит.
Плюс ещё несколько замечаний о том, что не всё можно сдавать на хранение, не класть вещи в открытый кем-то ящик и не терять чек.
Алгоритм прост и понятен, если вы следуете инструкции. Достаточно пройти по алгоритму один-два раза, что бы запомнить его.
Но у настоящего тестера всегда есть желание заранее проверить работоспособность алгортима до "промышленной эксплуатации". :)
Что он делает: сдаёт вещи на хранение (шаги 1 - 5), после чего решает проверить, выдаст ли шкаф его вещи обратно, что тут же и выполняет (шаги 6 - 8). Конечно, весь алгоритм успешно отрабатывает. Текущая мысль тестера: "по возвращении, он повторит шаги 6 - 7 и шкаф откроет мой ящик".
А вот тут и возникает проблема: после выполнения всего алгоритма шкаф начинает думать, что из ящика, который только что открывали, забрали все вещи и он теперь - свободен! :)
В инструкции об этом - ни слова. Но так как я замечаю эти манипуляции тестера, то сообщаю ему, что свои вещи по этому чеку он не получит. :) Тестер возвращается, подносит чек - действительно, шкаф не реагирует.
Чтобы не связываться с администрацией, подсказывают алгоритм: нажимать кнопку "сдать на хранение", пока не откроется нужный ящик, который, якобы, теперь свободен. :) ... Шкаф начал открывать ящики последовательно, начиная со следующего, куда последний раз сдавали вещи, т.е. со следующего после ящика с вещами тестера. :)
Получил ли таким образом тестер свои вещи обратно - не знаю, не досмотрел. Но что вероятно, тестер заблокировал все свободные на тот момент ящики, пытаясь открыть свой. Потому что открывая каждый ящик и получая чек, он не утруждал себя повторным открытием этого ящика для его освобождения, а просто выкидывал чек.
Работает - не тестируй! :)

Комментариев нет:

Описание изменений ТЗ

Каждое ТЗ (фича) всегда описывает не только то, что необходимо сделать в рамках данного ТЗ, но и то, что было сделано ранее. Основной плюс т...