Путь тестировщика в аутсорсе тернист и полон всевозможных проектов. Некоторые из них хотят его убить, а остальные – тоже хотят убить, но только они интересные. Вот и моя дорога тимлида QA в MobileUp привела N времени назад к тестированию одной зарубежной POS-системы, про которую я и хочу рассказать.

Что такое POS

Я не знаю кто ты, путник, читающий эти строки, но на всякий случай поясню, что POS = Point of Sale и если не вдаваться в подробности, то это инструмент, с помощью которого клиент некоего заведения (ресторана, бара и пр.) обменивает свои деньги на услуги этого заведения. У нас в Питере (по крайней мере, в тех барах, где я имел честь побывать) всюду стоит одна из самых популярных систем – R_Keeper. Но я немного отошёл от темы.

Эта зарубежная POS-система кроме всего прочего имеет на своём борту возможность работы с MEV, так как область применения этой POS-системы законодательно требует применения MEV в общественных заведениях.

Что такое MEV

MEV – это аббревиатура французского термина Module d’Enregistrement des Ventes, то есть модуль для регистрации продаж. Это устройство, подключенное к торговой точке, которое записывает каждую совершенную продажу и передает необходимую информацию в Revenue Quebec, местный налоговый орган, а распечатанный чек, содержащий уникальный штрих-код удостоверяет точность и сохранность деловых записей. В Квебеке его обязательно использовать для любого типа ресторана, кейтеринга или бара.

Меня твои новые фичи доканали уже! Одна фича офигительнее другой!
Меня твои новые фичи доканали уже! Одна фича офигительнее другой!

Вокруг MEV в белом танце кружатся три стороны:

  • Хозяева заведения очень хотят, чтобы клиенты исправно платили деньги, и очень не хотят ошибок во всех расчётах;

  • Налоговая очень хочет, чтобы деньги из кармана посетителя исправно попадали в отчеты, а налоги с транзакций исправно приходили туда, куда нужно, и очень не хотят, чтобы хозяева присваивали себе больше денег, чем положено;

  • Посетители очень хотят получать подробные и точные чеки, и очень не хотят переплачивать за услуги из-за сбоев в работе.

Поэтому взаимодействие MEV и POS-системы нужно тестировать, и тщательно.

Как выглядит MEV

Визуально MEV представляет из себя компьютер AEC-6822 с прикрученным к нему принтером Epson.

Принтер слева, MEV справа
Принтер слева, MEV справа

Наша POS-система умеет подключаться к MEV, но для этого нужно:

1) Чтобы MEV и POS система находились в одной локальной сети;

2) Настроить MEV.

И если с первым пунктом проблем возникнуть не должно, то со вторым дела обстоят интереснее – MEV не локализован ни на один язык, кроме французского, которого я не знаю.

Как настроить MEV

Что нужно для настройки: 

– Доступ в интернет- Роутер со свободными LAN-портами- Розетка 220в (2 штуки)- USB накопитель, отформатированный в FAT32;

– Компьютер.

Когда началась пандемия и весь наш офис отправили работать удалённо, было необходимо перевезти мои железяки и перенастроить их дома. На момент переезда у меня была недостаточно подробная инструкция и я столкнулся с проблемой: MEV упорно не хотел принимать новый IP-адрес. Узким местом оказался не самый очевидный способ перезагрузки. В инструкции было написано «запиши IP на накопитель, вставь в MEV и перезагрузи его». Я так и делал, но не через отдельный пункт меню в MEV, а просто выключал и включал его.

Для настройки двигаемся по этим шагам:

  1. На USB накопителе в формате FAT32 создаем .txt файл с названием ConfigurationTcpIp_SERP12345678 (где цифры - серийный номер MEV, расположен на его днище и начинается с буквы P)

  2. В созданный файл записываем две строки : маска подсети и IP адрес самого MEV, после чего сохраняем файл и извлекаем из компьютера

  3. Вставляем USB накопитель с файлом конфигурации в USB порт на передней панели MEV

  4. Вставляем пульт управления MEV в оставшийся USB порт на передней панели

  5. Запускаем MEV удержанием кнопки включения

  6. Используем кнопки на пульте управления и идём по адресу: Appuyez sur une touche pour ouvrir une session. > ADMIN > Entrez le mot de passe. > Configuration > Connectivité MEV > TCP/IP-Série > Oui

  7. После этой манипуляции MEV перезагрузится и примет настройки из файла конфигурации

  8. Идём по адресу Appuyez sur une touche pour ouvrir une session. > ADMIN > Entrez le mot de passe. > Configuration > Voir config. IP > Imprimante и убеждаемся в том, что IP адрес успешно установлен

  9. Подключаем MEV через ethernet порт 1 к роутеру

  10. Подключаем MEV к принтеру с помощью штатного кабеля

  11. Идём по адресу Appuyez sur une touche pour ouvrir une session. > ADMIN > Entrez le mot de passe. > Configuration > Imprimante > Epson и выбираем к какому принтеру хотим подключиться

  12. Идём по адресу Appuyez sur une touche pour ouvrir une session. > ADMIN > Entrez le mot de passe. > Configuration > Port d’imprimante > 115200

  13. Выключаем MEV

  14. Включаем MEV

После этого MEV готов к работе. В нашем случае в POS-системе мы вводим IP-адрес MEV, после чего подключение происходит автоматически и вы чувствуете себя великолепно. Железная штуковина подмигивает зелёной лампочкой, а принтер выплюнул тестовый чек – это значит, что самое время сходить выпить чашечку кофе.

А теперь – тестирование

Ладно, надо теперь это всё как-то тестировать, так что давай уже приступим.

В нашей POS системе все транзакции делятся на два типа: ADDI и RFER.

ADDI – это когда для заказа, проходящего через нашу систему, был распечатан Sales чек до фактической оплаты заказа (т.е. мы получаем чек о выполнении заказа, но на нём не содержится указание способа оплаты этого заказа). Такие заказы получаются, когда пользователь делает онлайн заказ, но выбирает способ оплаты при получении заказа, а не заранее. RFER – это когда заказ уже получил способ оплаты.

Терминал для оплаты и планшет для заказов
Терминал для оплаты и планшет для заказов

Узкое место здесь в том, что заказ, получивший тип ADDI, переходит в тип RFER, как только получает способ оплаты. То, как заказы распределяются между типами и как переходят из одного типа в другой, одно из важнейших мест, которое тестировать нужно обязательно, иначе у клиента начинают расходиться отчеты (ADDI транзакции не учитываются в отчетах MEV).

Как это тестировать? Да всё просто. На Пульте управления MEV идём по пути rapports – detail des ventes, и печатаем этот отчёт.

Тестирование MEV всегда влечёт за собой повышенный расход бумаги для принтеров. Если ты тоже имеешь дело с принтерами, пожалуйста, расходуй бумагу только на необходимые распечатки!

Делаем онлайн-заказ без оплаты, печатаем отчет, оплачиваем заказ, печатаем отчет снова. На первом отчете надо найти 1 ADDI транзакцию и 0 RFER, а на втором - 0 ADDI и 1 RFER.

Также стоит обращать особое внимание на заказы с несколькими типами оплаты (нашу POS-систему можно один общий заказ оплатить по частям и разными способами). Необходимо проверять отчеты в POS-системе, и смотреть, чтобы все типы оплат были правильно привязаны ко всем заказам.

Проверяем отчеты и чеки

Ну и, собственно, проверка самих отчетов. У каждой транзакции в системе есть куча параметров: 

  • ID заказа;

  • ID каждого блюда и опции в заказе;

  • названия всех блюд и опций;

  • цены всех блюд и опций;

  • налоговый расчет для заказа;

  • тип заказа (здесь или с собой);

  • тип оплаты;

  • тип и количество чаевых;

  • устройство, с которого был создан заказ;

  • время создания заказа;

  • время закрытия заказа;

  • время готовки заказа;

  • если заказ был сделан online, то в отчете должны содержаться данные пользователя;

  • комментарии для каждого заказа (если есть).

Все эти параметры проходят через MEV, сохраняются в отчете, и мне как тестировщику необходимо убедиться в том, что все эти данные достоверны.

Так выглядит наш чек
Так выглядит наш чек

Про что забыли? Конечно про Sales чеки, ведь они тоже печатаются через MEV. Кроме стандартных проверок а-ля «текст на чеке печатается по центру, цена блюда должна быть расположена прямо напротив названия этого блюда, переносы строк должны выполняться в соответствии с ТЗ, цены на блюда должны совпадать с заданными в админке и отображающимися в POS-системе» приходится учитывать небольшую особенность.

Как я уже говорил, MEV полностью на французском и Sales чеки он печатает тоже на французском, даже если POS-система работает на английском (а она может работать на обоих языках). Поэтому на первых порах я находил в чеке нужные для проверок строки только по цифрам, ну и с помощью гугл-переводчика. Но со временем, конечно, запоминаешь, что как пишется и где должно располагаться – и всё становится легко. Всё же французский не китайский и не арабский (а в моей практике был опыт проверки локализации одной мобильной игры на эти языки). Жить можно!

Вместо заключения

Ты сейчас читаешь эту статью и думаешь: «Зачем, а главное для кого она написана?» Отвечу так – не так давно Хидео Кодзима выпустил в свет свой проект под названием Death Stranding. Ты играешь за курьера, который доставляет заказы из пункта А в пункт Б в постапокалиптическом мире.

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

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

Комментарии (2)


  1. BM_MacGregor
    28.10.2021 13:26

    Спасибо за статью! Было интересно.

    Вопрос возник. MEV только в Квебеке используется?


    1. Salcard Автор
      28.10.2021 14:12

      Рад что понравилось! MEV используется в Quebec province (т.е. в самом Квебеке, и в довольно большой области вокруг него).