Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Путь тестировщика в аутсорсе тернист и полон всевозможных проектов. Некоторые из них хотят его убить, а остальные – тоже хотят убить, но только они интересные. Вот и моя дорога тимлида 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.
Наша POS-система умеет подключаться к MEV, но для этого нужно:
1) Чтобы MEV и POS система находились в одной локальной сети;
2) Настроить 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. Ты играешь за курьера, который доставляет заказы из пункта А в пункт Б в постапокалиптическом мире.
Препятствием для курьера служит (кроме всевозможных врагов) разнообразный рельеф местности. И, наверное, у каждого, кто играл в эту игру, была ситуация, когда ты видишь точку, куда тебе нужно попасть, но под рукой нет одной единственной лестницы, которая отделяет тебя от этой цели. Так вот эта статья – та самая лестница, оставленная в пустоте другим игроком.
Да, маршрут, без сомнений, далеко не популярный. Но если моя лестница будет полезна хотя бы одному человеку, я уже буду доволен, потому что все не зря. На старте моего знакомства с проектом она бы мне очень пригодилась!