Manual QA (Обеспечение качества)Инженер по ручному тестированию QA

При ручной проверке приложения, преобразующего данные потока **5250** в адаптивные веб-интерфейсы **HTML5** на платформе **IBM i** (AS/400), какую систематическую методологию тестирования вы бы использовали для проверки соответствия валидации на уровне полей, синхронизации переходов экранов во время прокрутки подфайлов и точного обработки кодов **AID** (Attention Identifier), когда множество пользователей одновременно вызывает блокировки записи на общих физических файлах **DB2 for i**?

Проходите собеседования с ИИ помощником Hintsage

Ответ на вопрос

История вопроса

Проекты модернизации мейнфреймов и средних систем часто инкапсулируют логику устаревших зеленых экранов в веб-обертки с использованием таких инструментов, как IBM Rational Host Access Transformation Services (HATS), Rocket LegaSuite или пользовательские шлюзы эмуляции 5250. Тестировщики часто предполагают, что веб-слой действует как простой проход, но преобразование между кодировкой символов EBCDIC, атрибутами полей 5250 и виджетами HTML5 вводит абстракционные уровни, в которых логика валидации, сообщения об ошибках и механизмы управления параллелизмом могут отличаться от исходной системы. Этот вопрос исследует способность кандидата тестировать возникающее поведение на пересечении эмуляции терминалов и современных веб-протоколов.

Проблема

Основной проблемой является состояние сессий терминалов 5250 против безсостояния круга запросов-ответов HTTP. Устаревшие приложения полагаются на поток данных 5250 для обеспечения ограничений на уровне полей (таких как подписанные числовые зоны, обязательные заполнения и проверки выхода из полей) и используют коды AID для сигнализации конкретных действий пользователя, таких как ENTER, CLEAR, ROLL UP или ROLL DOWN. Когда несколько пользователей получают доступ к одной и той же записи DB2 for i через веб-обертку, управление сессиями 5250 должно правильно проксировать ожидания блокировки записи, тайм-ауты взаимной блокировки и сообщения об ошибках CPF (Control Program Facility) обратно в соответствующий экземпляр браузера без перекрестного загрязнения сессий или потери контекста позиционирования курсора.

Решение

Систематическая методология требует трехуровневого подхода: Тестирование строгости протокола, Стресс-тестирование параллелизма и Визуальная проверка паритета.

Сначала захватите сырые потоки данных 5250 с помощью Wireshark или трассировки IBM i Access Client Solutions, чтобы установить базовый уровень атрибутов полей и последовательностей AID. Создайте тестовые случаи, которые обрабатывают каждый тип поля (алфавитный, числовой с подразумеваемой десятичной точкой, поля даты с разделителями MDY) и проверьте, что веб-обертка обеспечивает идентичные ограничения через валидацию на стороне клиента с помощью JavaScript, которая отражает логику EDTCDE и EDTWRD на хосте.

Во-вторых, организуйте многопользовательские сценарии, используя контролируемые терминальные сессии Windows вместе с экземплярами браузеров, нацеливаясь на одну и ту же запись базы данных. Проверьте, что статус MSGWAIT эмулятора 5250 правильно передается на веб-слой как неблокирующее AJAX опрос или уведомления WebSocket, и что блокировки записей DASD освобождаются соответствующим образом, когда сессии браузеров тайм-аутят или покидают страницу.

В-третьих, примените инструменты пиксельного сравнения, такие как Applitools или Sikuli, чтобы убедиться, что рендеринг подфайлов (прокручиваемая сетка) соответствует выравниванию строк/столбцов зеленого экрана. Обратите особое внимание на поведение прокрутки SFLSIZ и SFLPAG, где частичные обновления страниц должны синхронизироваться с виртуальной прокруткой таблицы HTML.

Ситуация из жизни

Описание проблемы

В ходе инициативы по модернизации системы учета запасов на основе IBM i в распределительной компании команда QA обнаружила, что пользователи склада, использующие новый интерфейс HTML5, непреднамеренно переписывают корректировки их запасов. Устаревшее приложение зеленого экрана правильно применяло блокировки записей, показывая «Запись используется пользователем X», когда происходили одновременные изменения. Однако веб-обертка, казалось, позволяла обоим пользователям одновременно входить в режим редактирования, что приводило к ошибкам базы данных «Конфликт обновления», вызванным на уровне ODBC, которые отображались как обычные ошибки HTTP 500 вместо удобных для пользователя предупреждений, что вызывало проблемы с целостностью данных и путаницу у пользователей.

Решение А: Улучшенная очередь состояния сессии

Реализовать очередь на стороне сервера, которая сериализует все запросы к одной и той же записи DB2 через одиночный адаптер, заставляя веб-обертку имитировать блокирующее поведение одной рабочей станции 5250. Этот подход гарантирует целостность данных, предотвращая одновременные изменения полностью и просто реализуется с помощью распределенной блокировки Redis. Однако он создает узкое место, которое ухудшает производительность во время смен на складе с высоким объемом и расходится с современными ожиданиями UX веба, где пользователи ожидают возможности совместного редактирования с разрешением конфликтов, а не жесткими блокировками.

Решение B: Оптимистическая блокировка с версионированием

Использовать версионирование на уровне строк с использованием DB2 RRN (Номер Относительной Записи) или столбцов временных меток, позволяя обоим пользователям извлекать данные, но отклоняя вторую фиксацию с конкретным сообщением о конфликте. Этот метод предотвращает тихие перезаписи и лучше масштабируется для операций с высоким чтением, соответствуя конвенциям REST, чтобы предоставить ясную обратную связь для рабочих потоков разрешения конфликтов. Тем не менее, он требует модификаций схемы для устаревших физических файлов, технически принадлежащих системе учета IBM i, и устаревшие программы могут не обновлять столбцы версий автоматически, что потенциально создает разрывы в синхронизации между пользователями зеленых экранов и веба.

Решение C: Проксирование с прозрачным статусом блокировки

Настроить слой эмуляции 5250 для прозрачного проксирования сообщений о блокировке записей IBM i (например, CPF5027, CPF5074) напрямую в веб-интерфейс как модальные диалоги, сохраняя точное поведение в соответствии с опытом зеленого экрана. Этот подход сохраняет оригинальную бизнес-логику без изменения и гарантирует, что веб-пользователи видят идентичные сообщения и тайминги по сравнению с терминальными пользователями, используя существующую безопасность IBM i и проверки аудита без вмешательства промежуточного ПО. Недостатком является то, что требует глубокого понимания нюансов протокола 5250 для правильного анализа и перевода атрибутов DSPSIZ и INDARA, и управление сессиями становится сложным, когда пользователи обновляют браузеры или теряют подключение, потенциально оставляя «сиэры» 5250, которые удерживают блокировки записей.

Выбранное решение и обоснование

Команда выбрала Решение C, поскольку регулирующая среда (распределение фармацевтических продуктов) требовала абсолютного поведенческого паритета между старыми и новыми интерфейсами для соблюдения требований FDA 21 CFR Part 11. Любое отклонение в том, как обрабатывалось содержание записей, могло бы аннулировать документацию о валидации устаревшей системы. Реализовав основанный на WebSocket мост сессий 5250, который поддерживал постоянную сессию терминала на вкладку браузера, обертка могла точно отражать ожидания блокировки записей и дисплеи MSGID в реальном времени.

Результат

Веб-интерфейс успешно повторил поведение зеленого экрана «Запись в использовании», отображая точные копии сообщений CPF в современных стилизованных модальных окнах. Последующее нагрузочное тестирование показало, что пул сессий 5250 требовал конфигураций автоматического масштабирования для обработки пикового склада, поскольку каждая вкладка браузера потребляла отдельную работу подсистемы QINTER. Проект достиг валидации FDA без переписывания основных программ RPG, хотя были добавлены панели мониторинга для отслеживания сиротских сессий 5250, которые могли указывать на сбои браузера, удерживающие непреднамеренные блокировки.

Что кандидаты часто упускают

Как вы проверяете, что управляющие записи подфайлов (SFLCTL) с ключевыми словами SFLINZ и SFLRNA правильно интерпретируются веб-оберткой, когда базовая программа RPG динамически инициализирует страницы подфайлов?

Кандидаты часто сосредотачиваются только на видимых строках данных, упуская из виду, что подфайлы 5250 полагаются на форматы управляющих записей, которые определяют размер страницы, размер подфайла и индикаторы прокрутки. Когда активна SFLINZ (Инициализация подфайла), хост отправляет пустые записи, которые должны отображаться как пустые редактируемые строки в HTML5, в то время как SFLRNA (Записи подфайла не активны) контролирует, могут ли поля, способные к вводу, принимать данные. Тестировщики должны проверить, что обертка правильно сопоставляет эти индикаторы с атрибутами disabled элементов DOM и присутствием поля input, обеспечивая, чтобы индикаторы SFLROLVAL (Значение прокрутки) вызывали конкретные коды AID (ROLL UP/ROLL DOWN), когда пользователи прокручивают контейнер HTML, чтобы программа RPG получала правильный контрольный поток для извлечения последующих страниц данных.

Какая методология валидирует точность трансляции специальных графических символов EBCDIC (таких как символы рисования рамок кодировки CCSID 37 или валютные символы) при преобразовании потока данных 5250 в UTF-8 для рендеринга в браузере?

Многие тестировщики предполагают, что стандартное преобразование кодировок символов обрабатывает все случаи, но терминалы 5250 поддерживают альтернативные наборы символов и атрибуты полей COLOR/DSPATR, которые сопоставляются с комбинированными символами Unicode. Методология требует создания экранирования ссылок с использованием всех специальных символов CCSID 037 (таких как символы цента, знаки трубки и шестнадцатеричные FF поля) и сравнения выводимого результата в различных браузерах (Chrome, Edge, Safari, Firefox). Особое внимание уделяется символам SO/SI (Переключение-Выход/Переключение-Вход), которые меняют между набором символов с одним байтом и двойным байтом в системах DBCS для поддержки китайского, японского или корейского языка, обеспечивая, что позиция байта FF (Формат Поля) в строках DBCS сохранена, чтобы предотвратить несоответствия вводимых полей, которые могут привести к тому, что программы RPG будут читать обрезанные данные или генерировать ошибки RNX0101.

Как вы тестируете обработку кода AID для сопоставления клавиш COMMAND (таких как F3=Выход, F12=Отмена), когда сочетания клавиш браузера или операционной системы конфликтуют с ожиданиями функций клавиш 5250?

Кандидаты часто упускают из виду, что браузеры резервируют некоторые функциональные клавиши (F1, F3, F5, F12) для собственного использования или что macOS обрабатывает функциональные клавиши по-другому, чем Windows. Систематический подход включает сопоставление каждого кода AID 5250 (F1-F24, CLEAR, HELP, HOME) с тестовыми случаями, проверяющими, что события keydown браузера предотвращают стандартное поведение, чтобы избежать запуска обновления браузера (F5) или инструментов разработчика (F12), коды AID передаются как отдельные параметры POST или сообщения WebSocket, а различия между CA (Обращение к Команде) и CF (Команда Функции) сохраняются, чтобы гарантировать, что клавиши CA вызывают подпрограмму INZSR программы RPG без проверки модифицированных полей, тогда как клавиши CF отправляют данные полей. Кроме того, валидация должна происходить на различных клиентах Windows, macOS и Linux с разными раскладками клавиатуры (US, UK, German), чтобы гарантировать, что комбинации Alt и Ctrl, используемые для эмуляции F13-F24 (обычно Shift+F1 до Shift+F12), не активируют сочетания клавиш на уровне ОС, такие как Alt+F4 или Ctrl+Shift+F.