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

Какой систематический метод тестирования вы бы применили для ручной проверки динамического модуля финансовой отчетности, который генерирует сложные **Excel** рабочие книги с **VBA** макросами, **PivotTables** и соединениями данных **Power Query** из веб-интерфейса, чтобы обеспечить совместимость с версиями **Microsoft Excel** 2016/2019/**Microsoft 365**, **LibreOffice Calc** и **Google Sheets**, предотвращая атаки на инъекцию **CSV** и проверяя, что международные символы **UTF-8** отображаются корректно на всех целевых платформах?

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

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

Корпоративные системы отчетности часто соединяют устаревшую инфраструктуру и современные облачные платформы, что требует поддержки офисных пакетов, охватывающих более десяти циклов выпусков. Сложность возникает из-за того, что форматы Excel—от устаревшего XLS до современного XLSM с поддержкой макросов—обладают различным поведением в различных версиях Microsoft Excel 2016, 2019 и подписках Microsoft 365, не говоря уже о таких альтернативных решениях, как LibreOffice Calc. Организации часто требуют конкретные версии по причинам соблюдения стандартов, создавая фрагментированную экосистему, где файл, корректно рассчитывающий стоимость доставки в одной среде, может испортить данные Unicode или отключить функции безопасности в другой.

При динамической генерации рабочих книг с VBA макросами для автоматических расчетов тестировщики сталкиваются с риском того, что Excel 2016 заблокирует неподписанный код или отобразит разрушительные желтые предупреждения безопасности, которые полностью предотвратят выполнение макросов. Соединения Power Query с внешними базами данных, хотя и работают гладко в Excel 365, часто отображаются как статические, не обновляемые значения в LibreOffice Calc, что приводит к устаревшим данным, которые пользователи бизнеса могут не сразу обнаружить. Более того, международные символы, закодированные в UTF-8—в частности, письма справа налево или иероглифы CJK—часто отображаются как ASCII mojibake в старых версиях Excel, где отсутствуют заголовки BOM (Byte Order Mark). Самое критическое, атаки инъекции формул остаются возможными, когда значения ячеек начинаются с символов, запускающих формулы, таких как =, +, -, или @, что потенциально приводит к выполнению злонамеренных команд cmd.exe при повторном открытии экспортированного CSV в настольных приложениях.

Систематическая методология требует создания изолированных VM сред или контейнеров Docker, хостингующих разные версии Excel, чтобы предотвратить конфликты лицензирования и обеспечить чистое базовое тестирование. Тестовые данные должны включать злонамеренные полезные нагрузки, такие как "=CMD|' /C calc'!A0" и строки "@HYPERLINK", чтобы проверить, что приложение санирует выходные данные, предваряя их табуляцией или одинарными кавычками для нейтрализации выполнения формул. Для проверки Unicode необходимо сгенерировать файлы с маркерами BOM и сложными сценариями, затем проверить рендеринг на Google Sheets, LibreOffice и устаревших версиях Excel, особенно проверяя на предмет ошибок замены символов. Тестирование VBA макросов должно проверять действительность цифровых подписей в разных зонах безопасности Windows и конфигурациях Group Policy, обеспечивая, чтобы ограничения Mark of the Web (MOTW) не блокировали законные бизнес-макросы. Наконец, внедрите тестирование прогрессивного повышения, когда приложение обнаруживает возможности клиента через заголовки User-Agent, предоставляя XLSX с макросами для способных клиентов и санированные CSV с явными декларациями типа данных для устаревших систем.

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

В многонациональной логистической компании я тестировал функцию экспорта манифеста отправок, которая генерировала Excel файлы с автоматизированными VBA макросами для расчета объемного веса и топливных наценок. Система требовала поддержки полевых агентов, использующих изолированные установки Excel 2016 на защищенных ноутбуках в условиях низкой связности складов, в то время как сотрудники штаб-квартиры использовали Microsoft 365 с облачными соединениями Power Query к живым базам данных SQL Server. Функция экспорта также обслуживала международных клиентов, предпочитающих LibreOffice Calc на системах Linux из-за лицензионных затрат, создавая трижды совместимые требования, которые начальная команда разработки не предвидела. Усложняющим фактором было то, что описания отправлений часто содержали арабские и китайские иероглифы, в то время как номера отслеживания часто начинались с плюсов или знаков равенства, которые напоминали формулы таблиц.

Первоначальное тестирование выявило катастрофические сбои в экосистеме. Установки Excel 2016 с корпоративными настройками Group Policy блокировали все неподписанные VBA макросы, отображая непонятные предупреждения безопасности, которые сотрудники складов интерпретировали как системные ошибки, вызывая задержки в операциях. Пользователи LibreOffice Calc обнаружили, что соединения Power Query отображаются как статические значения без возможности обновления, что приводит к принятию решений на основе недельных расценок на фрахт, когда обменные курсы менялись ежедневно. Более серьезно, арабские описания отправок экспортировались как несоответствующие символы ASCII в Excel 2016 из-за отсутствия заголовков BOM, в то время как номера отслеживания, начинающиеся с "=", интерпретировались как формулы в Google Sheets, отображая ошибки "#NAME?" вместо критически важных идентификаторов отслеживания.

Первый подход заключался в удалении всех расширенных функций и экспортировании простых CSV файлов с запятыми в качестве разделителей и текстовыми полями в кавычках. Эта стратегия гарантировала универсальную совместимость на всех платформах, включая мобильные устройства и устаревшие системы, все еще присутствующие в удаленных складах. Однако она исключила автоматизированные расчеты объемного веса, которые полевые агенты использовали для ценообразования на фрахт, заставляя прибегать к ручной математике, что увеличивало коэффициент ошибок на 15% и значительно замедляло время обработки. Кроме того, CSV файлы не обеспечивали защиты от случайного изменения данных или конфликтов с версиями при отправке по электронной почте между командами.

Второе решение заключалось в поддержании трех отдельных экспортных каналов в кодовой базе: один генерировал устаревший формат XLS для более старого Excel, второй создавал XLSM с полной поддержкой макросов и третий производил ODS (OpenDocument Spreadsheet) для совместимости с LibreOffice. Хотя этот подход обещал оптимальные нативные впечатления для каждого сегмента пользователей, он утроил затраты на обслуживание для команды разработчиков и создал комбинационное множество тестовых случаев. Любое изменение в логике расчета ставки на фрахт требовало синхронных обновлений в трех различных модулях генерации, и команде QA предстояло столкнуться с кошмарами регрессионного тестирования, когда Microsoft выпускал безопасности обновления, затрагивающие выполнение VBA.

Третий подход внедрил динамическую систему обнаружения функций, которая генерировала один файл XLSX с встроенными метаданными XML, указывающими на требования к макросам и инструкции по отсрочке. Веб-приложение обнаруживало строку User-Agent клиента, чтобы предложить соответствующие настройки безопасности, в то время как бэкэнд обеспечивал, чтобы все экспорты в UTF-8 включали маркеры BOM и санитаризованные динамические содержимое, предваряя табуляцией для нейтрализации атак инъекции формулы. Для клиентов, которые не могли выполнить макросы, рабочая книга включала заранее рассчитанные значения в скрытых листах с четкими визуальными индикаторами, показывающими "рассчитанное значение" по сравнению с "живой формулой", гарантируя, что пользователи LibreOffice получали точные данные даже без возможности обновления Power Query.

Мы выбрали решение 3 после пилотного тестирования с полевыми агентами и аналитиками штаб-квартиры, так как оно сбалансировало пользовательский опыт с долгосрочной поддерживаемостью. Обнаружение функций снизило количество заявок службы поддержки на 40% по сравнению с упрощенным подходом, в то время как требование единой кодовой базы избежало технического долга, присущего стратегии трипликации. Меры безопасности, связанные с табуляцией, прошли стороннее тестирование на проникновение, не влияя на удобство использования данных, поскольку и Excel, и LibreOffice игнорируют начальные пробелы в числовых ячейках, но рассматривают приставленные формулы как текст. Кроме того, включение заголовков BOM решило проблемы рендеринга международных символов без нарушения совместимости с другими платформами.

После внедрения функция экспорта достигла 99,2% уровня успешного открытия и рендеринга на всех протестированных платформах. Заявки на техническую поддержку, связанные с "сломаными формулами", упали до нуля в течение первого месяца, а проблемы с отображением арабских символов были полностью разрешены в устаревших установках Excel. Команда безопасности официально одобрила методологию табуляции в качестве достаточной меры по смягчению атак на инъекцию CSV, в то время как полевые агенты сообщили, что плавная деградация соединений Power Query в статические таблицы с отметкой времени предотвратила путаницу относительно свежести данных.

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

Как вы вручную проверяете, чтобы соединения Power Query обрабатывали истечение срока действия токена аутентификации OAuth 2.0 в Excel, особенно когда токен обновления хранится в Credential Store Windows и пользователь офлайн во время запланированной попытки обновления?

Тестирование этого сценария требует манипуляции с системными часами и сетевым состоянием для симуляции реальных условий. Сначала установите соединение Power Query с API, требующим OAuth 2.0, завершите поток аутентификации, включая MFA, и убедитесь, что первоначальная загрузка данных прошла успешно, зафиксировав время истечения Access Token. Затем отключите машину от всех сетей, продвиньте системные часы, чтобы заставить токен истечь, и попытайтесь обновить запрос, чтобы наблюдать, отображается ли в Excel удобный диалог "Требуется аутентификация" или происходит сбой с необработанным исключением HTTP 401. Если в онлайне, протестируйте вращение Refresh Token, наблюдая за записями Windows Credential Store с помощью Credential Manager, чтобы убедиться, что старые токены удалены и новые сохранены с соответствующими признаками шифрования DPAPI. Кроме того, проверьте поведение в Excel для Mac, который использует macOS Keychain вместо Windows Credential Store и часто требует повторной аутентификации, что может прервать автоматизированные рабочие процессы.

Какой систематический подход позволяет удостовериться, что цифровые подписи VBA макросов остаются действительными и надежными, когда Excel файлы загружаются из веб-приложения, передаваемого по HTTPS, учитывая, что Internet Explorer и Edge добавляют Mark of the Web (MOTW) Alternate Data Streams (ADS), которые могут спровоцировать включение Protected View или блокирование Windows Defender Application Control (WDAC), даже при наличии действительных сертификатов?

Ручное тестирование должно включать проверку потоков Zone.Identifier, прикрепленных браузерами к загруженным файлам, которые можно увидеть, проверив свойства файла в Windows Explorer для флажка "Разблокировать" или используя PowerShell Get-Content -Path file.xlsm -Stream Zone.Identifier. Протестируйте открытие файла в Excel с включенными макросами в разных зонах безопасности (Интернет, Доверенные сайты, Локальная интрасеть), чтобы наблюдать, вызывает ли MOTW Protected View, который предотвращает выполнение макросов до тех пор, пока их явным образом не закроют. Если правила WDAC или Attack Surface Reduction (ASR) активны через Group Policy, убедитесь, что подписанные макросы от сертификата кода вашей организации перечислены в магазине сертификатов Trusted Publishers на уровне машины, а не только на уровне пользователя. Проверьте действительность цепочки сертификатов, симулируя скомпрометированный сертификат через проверки CRL (Certificate Revocation List), обеспечивая, чтобы Excel правильно блокировал выполнение с ясным предупреждением о безопасности, а не молча отключал макросы.

Когда тестируется предотвращение инъекции CSV в приложении, которое экспортирует XLSX файлы, позднее преобразуемые в CSV пользователями, как вы проверяете, что методы нейтрализации формул сохраняются правильно, когда файл сохраняется в различных форматах Excel, в частности CSV UTF-8 (разделенный запятыми) против CSV (Macintosh) или CSV (MS-DOS) кодировок?

Это требует тестирования рабочего процесса конвертации по кругу через все доступные форматы "Сохранить как" в Excel, так как различные кодировки по-разному обрабатывают префиксные символы. Сначала создайте XLSX файл, содержащий злонамеренные полезные нагрузки, такие как "=CMD|' /C calc'!A0", предваренные табуляцией, затем сохраните его как CSV UTF-8 и снова откройте в Notepad++ для проверки на наличие табуляции и сохранения файла с BOM маркерами. Затем сохраните тот же файл в формате CSV (MS-DOS), который использует ASCII кодировку, и снова откройте, чтобы проверить, были ли табуляции удалены или преобразованы в пробелы, потенциально активируя уязвимость инъекции формул. Протестируйте импорт в Google Sheets и LibreOffice Calc, чтобы убедиться, что эти приложения уважают нейтрализующие префиксы, а не обрезают пробел или интерпретируют содержимое как формулы. Наконец, проверьте, что когда нейтрализованные CSV файлы повторно импортируются в Excel, ведущие табуляции не отображаются как видимые символы для конечных пользователей, что требует проверки того, что мастер "Текст по столбцам" в Excel правильно обрабатывает табуляцию, не разбивая очищенное содержимое ячейки.