Зачем тестировщику знать французский: что такое MEV и как с ним работать
Путь тестировщика в аутсорсе тернист и полон всевозможных проектов. Некоторые из них хотят его убить, а остальные — тоже хотят убить, но только они интересные. Вот и моя дорога привела N времени назад к тестированию одной зарубежной POS-системы, про которую я и хочу рассказать. Меня зовут Илья Зеленский, я Team Lead QA в MobileUp и я начну.
Что такое 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.
Наша POS-система умеет подключаться к MEV, но для этого нужно:
- Чтобы MEV и POS система находились в одной локальной сети;
- Настроить MEV.
И если с первым пунктом проблем возникнуть не должно, то со вторым дела обстоят интереснее — MEV не локализован ни на один язык, кроме французского, которого я не знаю.
Как настроить MEV
Что нужно для настройки:
- Доступ в интернет;
- Роутер со свободными LAN-портами;
- Розетка 220В (2 штуки);
- USB-накопитель, отформатированный в FAT32;
- Компьютер.
Когда началась пандемия и весь наш офис отправили работать удалённо, было необходимо перевезти мои железяки и перенастроить их дома. На момент переезда у меня была недостаточно подробная инструкция и я столкнулся с проблемой: MEV упорно не хотел принимать новый IP-адрес.
Узким местом оказался не самый очевидный способ перезагрузки. В инструкции было написано «запиши IP на накопитель, вставь в MEV и перезагрузил его». Я так и делал, но не через отдельный пункт меню в MEV, а просто выключал и включал его.
Для настройки двигаемся по этим шагам:
- На USB накопителе в формате FAT32 создаем .txt файл с названием ConfigurationTcpIp_SERP12345678 (где цифры — серийный номер MEV, расположен на его днище и начинается с буквы P);
- В созданный файл записываем две строки : маска подсети и IP адрес самого MEV, после чего сохраняем файл и извлекаем из компьютера;
- Вставляем USB накопитель с файлом конфигурации в USB порт на передней панели MEV;
- Вставляем пульт управления MEV в оставшийся USB порт на передней панели;
- Запускаем MEV удержанием кнопки включения;
- Используем кнопки на пульте управления и идём по адресу: Appuyez sur une touche pour ouvrir une session. > ADMIN > Entrez le mot de passe. > Configuration > Connectivité MEV > TCP/IP-Série > Oui;
- После этой манипуляции MEV перезагрузится и примет настройки из файла конфигурации;
- Идём по адресу Appuyez sur une touche pour ouvrir une session. > ADMIN > Entrez le mot de passe. > Configuration > Voir config. IP > Imprimante и убеждаемся в том, что IP адрес успешно установлен;
- Подключаем MEV через ethernet порт 1 к роутеру;
- Подключаем MEV к принтеру с помощью штатного кабеля;
- Идём по адресу Appuyez sur une touche pour ouvrir une session. > ADMIN > Entrez le mot de passe. > Configuration > Imprimante > Epson и выбираем к какому принтеру хотим подключиться;
- Идём по адресу Appuyez sur une touche pour ouvrir une session. > ADMIN > Entrez le mot de passe. > Configuration > Port d’imprimante > 115200;
- Выключаем MEV;
- Включаем 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. Ты играешь за курьера, который доставляет заказы из пункта А в пункт Б в постапокалиптическом мире.
Препятствием для курьера служит (кроме всевозможных врагов) разнообразный рельеф местности. И, наверное, у каждого кто играл была ситуация, когда ты видишь точку, куда тебе нужно попасть, но под рукой нет одной единственной лестницы, которая отделяет тебя от этой цели. Так вот эта статья — та самая лестница, оставленная в пустоте другим игроком.
Да, маршрут, без сомнений, далеко не популярный. Но если моя лестница будет полезна хотя бы одному человеку, я уже буду доволен, потому что все не зря. На старте моего знакомства с проектом она бы мне очень пригодилась!