Путь тестировщика в аутсорсе тернист и полон всевозможных проектов. Некоторые из них хотят его убить, а остальные – тоже хотят убить, но только они интересные. Вот и моя дорога тимлида QA в MobileUp привела N времени назад к тестированию одной зарубежной POS-системы, про которую я и хочу рассказать. Я не знаю кто ты, путник, читающий эти строки, но на всякий случай поясню, что POS = Point of Sale и если не вдаваться в подробности, то это инструмент, с помощью которого клиент некоего заведения (ресторана, бара и пр.) обменивает свои деньги на услуги этого заведения. У нас в Питере (по крайней мере, в тех барах, где я имел честь побывать) всюду стоит одна из самых популярных систем – R_Keeper. Но я немного отошёл от темы. Эта зарубежная POS-система кроме всего прочего имеет на своём борту возможность работы с MEV, так как область применения этой POS-системы законодательно требует применения MEV в общественных заведениях. MEV – это аббревиатура французского термина Module d’Enregistrement des Ventes, то есть модуль для регистрации продаж. Это устройство, подключенное к торговой точке, которое записывает каждую совершенную продажу и передает необходимую информацию в Revenue Quebec, местный налоговый орган, а распечатанный чек, содержащий уникальный штрих-код удостоверяет точность и сохранность деловых записей. В Квебеке его обязательно использовать для любого типа ресторана, кейтеринга или бара. Вокруг MEV в белом танце кружатся три стороны: Хозяева заведения очень хотят, чтобы клиенты исправно платили деньги, и очень не хотят ошибок во всех расчётах; Налоговая очень хочет, чтобы деньги из кармана посетителя исправно попадали в отчеты, а налоги с транзакций исправно приходили туда, куда нужно, и очень не хотят, чтобы хозяева присваивали себе больше денег, чем положено; Посетители очень хотят получать подробные и точные чеки, и очень не хотят переплачивать за услуги из-за сбоев в работе. Поэтому взаимодействие MEV и POS-системы нужно тестировать, и тщательно. Визуально MEV представляет из себя компьютер AEC-6822 с прикрученным к нему принтером Epson. Наша POS-система умеет подключаться к MEV, но для этого нужно: 1) Чтобы MEV и POS система находились в одной локальной сети; 2) Настроить 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. Ты играешь за курьера, который доставляет заказы из пункта А в пункт Б в постапокалиптическом мире. Препятствием для курьера служит (кроме всевозможных врагов) разнообразный рельеф местности. И, наверное, у каждого, кто играл в эту игру, была ситуация, когда ты видишь точку, куда тебе нужно попасть, но под рукой нет одной единственной лестницы, которая отделяет тебя от этой цели. Так вот эта статья – та самая лестница, оставленная в пустоте другим игроком. Да, маршрут, без сомнений, далеко не популярный. Но если моя лестница будет полезна хотя бы одному человеку, я уже буду доволен, потому что все не зря. На старте моего знакомства с проектом она бы мне очень пригодилась! QA Team Lead, MobileUp