Automatyczne testowanie (IT)Manual QA Engineer

Jakie systematyczne metody testowania zastosujesz, aby upewnić się, że moduł dynamicznego raportowania finansowego generujący złożone arkusze robocze **Excel** z **VBA** makrami, **Tabela przestawne** i połączeniami danych **Power Query** z interfejsu internetowego, będzie zgodny z różnymi wersjami **Microsoft Excel** 2016/2019/**Microsoft 365**, **LibreOffice Calc** oraz **Google Sheets**, jednocześnie zapobiegając atakom typu **CSV** injection i weryfikując, że międzynarodowe znaki **UTF-8** wyświetlają się prawidłowo na wszystkich docelowych platformach?

Zdaj rozmowy kwalifikacyjne z asystentem AI Hintsage

Odpowiedź na pytanie

Systemy raportowania w przedsiębiorstwach często łączą przestarzałą infrastrukturę z nowoczesnymi platformami chmurowymi, co wymaga wsparcia dla pakietów biurowych z ponad dekady cykli wydania. Złożoność wynika z tego, że formaty plików Excel — od przestarzałego XLS po nowoczesny XLSM z obsługą makr — wykazują różne zachowania w różnych wersjach Microsoft Excel 2016, 2019 i subskrypcji Microsoft 365, nie wspominając o otwartych alternatywach takich jak LibreOffice Calc. Organizacje często wymuszają określone wersje z powodów zgodności, co tworzy rozdrobniony ekosystem, w którym plik, który prawidłowo oblicza koszty wysyłki w jednym środowisku, może uszkodzić dane Unicode lub wyłączyć funkcje zabezpieczeń w innym.

Podczas dynamicznego generowania arkuszy roboczych zawierających makra VBA do automatycznych obliczeń, testerzy stają przed ryzykiem, że Excel 2016 odizoluje niepodpisany kod lub wyświetli uciążliwe żółte wstęgi bezpieczeństwa, które całkowicie uniemożliwiają wykonanie makr. Połączenia Power Query z zewnętrznymi bazami danych, chociaż bezproblemowe w Excel 365, często wyświetlają się jako statyczne, niewodnione wartości w LibreOffice Calc, co prowadzi do stanu danych, którego użytkownicy biznesowi mogą od razu nie zauważyć. Ponadto międzynarodowe znaki kodowane jako UTF-8 — szczególnie skrypty od prawej do lewej lub ideogramy CJK — często wyświetlają się jako ASCII mojibake w starszych wersjach Excel, które nie mają nagłówków BOM (Byte Order Mark). Najważniejsze w tym wszystkim jest to, że ataki wstrzykiwania formuł pozostają możliwe, gdy wartości komórek zaczynają się od znaków uruchamiających formuły, takich jak =, +, -, czy @, co potencjalnie może wykonać złośliwe polecenia cmd.exe, kiedy wyeksportowany plik CSV zostanie ponownie otwarty w aplikacjach desktopowych.

Systematyczna metodologia wymaga ustanowienia wydzielonych środowisk VM lub kontenerów Docker z różnymi wersjami Excel w celu zapobieżenia konfliktom licencyjnym i zapewnienia czystego podstawowego testowania. Dane testowe muszą zawierać złośliwe ładunki, takie jak "=CMD|' /C calc'!A0" oraz ciągi "@HYPERLINK", aby zweryfikować, że aplikacja sanitizuje wyjścia, dodając znaki tabulacji lub pojedyncze apostrofy, aby zneutralizować wykonanie formuły. W celu walidacji znaków Unicode należy generować pliki zawierające znaczniki BOM i złożone skrypty, a następnie weryfikować ich renderowanie w Google Sheets, LibreOffice i starszych wersjach Excel, sprawdzając szczególnie błędy zastępowania znaków. Testowanie makr VBA powinno weryfikować ważność podpisu cyfrowego w różnych strefach bezpieczeństwa Windows i konfiguracjach Group Policy, zapewniając, że ograniczenia Mark of the Web (MOTW) nie blokują legitymnych makr biznesowych. Na koniec wdrożyć testowanie stopniowego udoskonalenia, gdzie aplikacja wykrywa zdolności klienta poprzez nagłówki User-Agent, dostarczając XLSX z makrami dla zdolnych klientów i sanitizowane CSV z wyraźnymi deklaracjami typów danych dla systemów starszej generacji.

Sytuacja z życia

W międzynarodowej firmie logistycznej testowałem funkcję eksportu manifestu wysyłki, która generowała pliki Excel z automatycznymi makrami VBA do obliczania wag dimensionalnych i dopłat za paliwo. System musiał obsługiwać agentów terenowych korzystających z izolowanych instalacji Excel 2016 na wzmocnionych laptopach w warunkach magazynowych z ograniczoną łącznością, podczas gdy personel centrali korzystał z Microsoft 365 z opartymi na chmurze połączeniami Power Query z aktywnymi bazami danych SQL Server. Funkcja eksportu służyła również międzynarodowym klientom, którzy preferowali LibreOffice Calc na systemach Linux ze względu na koszty licencji, co stworzyło wymaganie dotyczące trzystronnej zgodności, którego początkowy zespół programistyczny nie przewidział. W dodatku opisy przesyłek często zawierały znaki arabskie i mandaryńskie, podczas gdy numery śledzenia często zaczynały się od znaków plus lub równości, które przypominały formuły arkuszowe.

Początkowe testy ujawniły katastrofalne awarie w całym ekosystemie. Instalacje Excel 2016 z korporacyjnymi ustawieniami Group Policy zablokowały wszystkie niepodpisane makra VBA, wyświetlając enigmatyczne ostrzeżenia o bezpieczeństwie, które personel magazynu zinterpretował jako błędy systemowe, co spowodowało opóźnienia operacyjne. Użytkownicy LibreOffice Calc odkryli, że połączenia Power Query pojawiały się jako statyczne wartości bez możliwości odświeżenia, co prowadziło do podejmowania decyzji na podstawie tygodniowych stawek frachtowych, gdy kursy wymiany zmieniały się codziennie. Najciężej, opisy przesyłek w języku arabskim eksportowały się jako bezsensowne znaki ASCII w Excel 2016 z powodu brakujących nagłówków BOM, podczas gdy numery śledzenia zaczynające się od "=" były interpretowane jako formuły w Google Sheets, wyświetlając błędy "#NAME?" zamiast istotnych identyfikatorów śledzenia.

Pierwszym rozważanym podejściem było usunięcie wszystkich zaawansowanych funkcji i eksportowanie zwykłych plików CSV z przecinkami i cytowanymi polami tekstowymi. Ta strategia gwarantowała uniwersalną zgodność na wszystkich platformach, w tym urządzeniach mobilnych i starszych systemach wciąż obecnych w odległych magazynach. Niemniej jednak, eliminowała automatyczne obliczenia wag wymiarowych, na których polegali agenci terenowi przy ustalaniu cen frachtu, zmuszając do stosowania matematyki ręcznej, co zwiększało wskaźnik błędów o 15% i znacząco opóźniało czasy przetwarzania. Dodatkowo, pliki CSV nie oferowały żadnej ochrony przed przypadkowym manipulowaniem danymi lub konfliktami wersji, gdy były wysyłane mailem między zespołami.

Drugie rozwiązanie zaproponowane polegało na utrzymaniu trzech osobnych strumieni eksportu w bazie kodowej: jeden generujący format przestarzały XLS dla starszego Excel, jeden tworzący XLSM z pełnym wsparciem makr, i jeden produkujący ODS (OpenDocument Spreadsheet) dla zgodności z LibreOffice. Choć to podejście obiecywało optymalne natywne doświadczenia dla każdego segmentu użytkowników, potroiło obciążenie konserwacyjne dla zespołu deweloperskiego i stworzyło eksplozję kombinacyjną przypadków testowych. Wszelkie modyfikacje w logice obliczeń stawek wysyłkowych wymagały zsynchronizowanych aktualizacji w trzech odmiennych modułach generacyjnych, a zespół QA stawał w obliczu koszmarów testowania regresyjnego za każdym razem, gdy Microsoft wydawał poprawki bezpieczeństwa wpływające na wykonanie VBA.

Trzecie podejście wdrożyło dynamiczny system wykrywania funkcji, który generował jeden plik XLSX z osadzonymi metadanymi XML, wskazującymi wymagania dotyczące makr oraz instrukcje awaryjne. Aplikacja internetowa wykrywała ciąg User-Agent klienta, aby zasugerować odpowiednie ustawienia zabezpieczeń, podczas gdy backend zapewniał, że wszystkie eksporty UTF-8 zawierały znaczniki BOM i sanitizowany dynamiczny kontent, dodając znaki tabulacji, aby zneutralizować ataki wstrzykiwania formuł. Dla klientów, którzy nie mogli wykonać makr, arkusz roboczy zawierał wcześniej obliczone wartości w ukrytych arkuszach z wyraźnymi wskaźnikami wizualnymi pokazującymi "obliczona wartość" w porównaniu do "formuły na żywo", co zapewniało, że użytkownicy LibreOffice otrzymywali dokładne dane, nawet bez możliwości odświeżania Power Query.

Wybraliśmy rozwiązanie 3 po testach pilotażowych z agentami terenowymi i analitykami centrali, ponieważ równoważyło doświadczenie użytkownika z długoterminową możliwością konserwacji. Wykrywanie funkcji zmniejszyło liczba zgłoszeń wsparcia o 40% w porównaniu do podejścia uproszczonego, podczas gdy wymaganie jednego kodu źródłowego unikało długu technicznego inherentnego w strategii potrrójnionej. Środek zabezpieczający z dodawaniem znaku tabulacji przeszedł testy penetracyjne przeprowadzane przez osoby trzecie bez wpływu na użyteczność danych, jako że zarówno Excel, jak i LibreOffice ignorują białe znaki na początku w komórkach numerycznych, ale traktują formuły z prefiksem jako tekst dosłowny. Dodatkowo, włączenie nagłówków BOM rozwiązało problemy związane z renderowaniem międzynarodowych znaków bez łamania zgodności z innymi platformami.

Po wdrożeniu funkcja eksportu osiągnęła 99,2% wskaźnik otwierania i renderowania we wszystkich testowanych platformach. Zgłoszenia dotyczące "uszkodzonych formuł" spadły do zera w ciągu pierwszego miesiąca, a problemy z renderowaniem znaków arabskich zostały całkowicie rozwiązane w starszych instalacjach Excel. Zespół zabezpieczeń formalnie zatwierdził metodologię dodawania znaku tabulacji jako wystarczającą mitigację przed atakami typu CSV injection, podczas gdy agenci terenowi zgłosili, że elegancka degradacja połączeń Power Query do statycznych tabel opatrzonych znacznikami czasowymi zapobiegła nieporozumieniom dotyczących świeżości danych.

Co kandydaci często pomijają

Jak ręcznie weryfikujesz, że połączenia Power Query obsługują wygodnie wygasanie tokenów uwierzytelniających OAuth 2.0 w Excel, szczególnie gdy token odświeżania jest przechowywany w Windows Credential Store i użytkownik jest offline podczas planowanej próby odświeżenia?

Testowanie tego scenariusza wymaga manipulowania zegarem systemowym i stanem sieci, aby symulować warunki rzeczywiste. Po pierwsze, należy ustanowić połączenie Power Query z API wymagającym OAuth 2.0, ukończyć proces uwierzytelniania, w tym MFA, i zweryfikować, że początkowe ładowanie danych się powiodło, jednocześnie rejestrując czas wygaśnięcia Access Token. Następnie odłącz maszynę od wszystkich sieci, przyspiesz zegar systemowy, aby wymusić wygaśnięcie tokena, i spróbuj odświeżyć zapytanie, aby sprawdzić, czy Excel wyświetla przyjazny dla użytkownika dialog „Wymagana autoryzacja” lub zawiesza się z nieobsługiwanym wyjątkiem HTTP 401. Jeśli jesteś online, przetestuj rotację Refresh Token, monitorując wpisy w Windows Credential Store za pomocą Credential Manager, aby upewnić się, że stare tokeny są usuwane, a nowe są przechowywane z odpowiednimi znacznikami szyfrowania DPAPI. Dodatkowo, zweryfikuj zachowanie w Excel for Mac, który używa macOS Keychain zamiast Windows Credential Store i często wymaga ponownego uwierzytelnienia, co może przerwać zautomatyzowane przepływy pracy.

Jak systematyczne podejście weryfikuje, że cyfrowe podpisy makr VBA pozostają ważne i zaufane, gdy pliki Excel są pobierane z aplikacji internetowej serwowanej przez HTTPS, biorąc pod uwagę, że Internet Explorer i Edge dodają Mark of the Web (MOTW) Alternate Data Streams (ADS), co może wywołać Protected View lub blokowanie przez Windows Defender Application Control (WDAC) nawet przy ważnych certyfikatach?

Testy ręczne muszą obejmować weryfikację strumieni Zone.Identifier dołączonych przez przeglądarki do pobranych plików, widoczne przez sprawdzenie właściwości pliku w Windows Explorer w celu zobaczenia okienka „Odblokuj” lub za pomocą PowerShell Get-Content -Path file.xlsm -Stream Zone.Identifier. Testuj otwieranie pliku w Excel z włączonymi makrami w różnych strefach bezpieczeństwa (Internet, Zaufane witryny, Lokalny intranet), aby obserwować, czy MOTW wyzwala Protected View, co uniemożliwia wykonanie makr, aż do wyraźnego wyjścia. Jeżeli zasady WDAC lub Attack Surface Reduction (ASR) są aktywne przez Group Policy, zweryfikuj, czy podpisane makra z certyfikatu podpisywania kodu twojej organizacji są wymienione w magazynie certyfikatów Trusted Publishers na poziomie maszynowym, a nie tylko na poziomie użytkownika. Przetestuj weryfikację łańcucha certyfikatów, symulując skompromitowany certyfikat przez sprawdzenia CRL (Certificate Revocation List), upewniając się, że Excel prawidłowo blokuje wykonanie z wyraźnym ostrzeżeniem o bezpieczeństwie, a nie cichym wyłączaniem makr.

Jak testujesz zapobieganie wstrzyknięciom CSV w aplikacji, która eksportuje pliki XLSX, następnie konwertowane przez użytkowników na CSV, jak weryfikujesz, że techniki neutralizacji formuły trwają prawidłowo, gdy plik jest zapisywany w różnych formatach Excel, szczególnie CSV UTF-8 (Comma delimited) w porównaniu do CSV (Macintosh) lub CSV (MS-DOS)?

Wymaga to przetestowania pełnego procesu konwersji przez wszystkie dostępne formaty „Zapisz jako” w Excel, ponieważ różne kodowania traktują znaki prefiksowe inaczej. Naszej pierwszej należy stworzyć plik XLSX zawierający złośliwe ładunki, takie jak "=CMD|' /C calc'!A0" z prefiksem znaków tabulacji, a następnie zapisać go jako CSV UTF-8 i ponownie otworzyć w Notepad++, aby zweryfikować, że tabulacje pozostają obecne i plik zachowuje znaczniki BOM. Następnie zapisz ten sam plik jako format CSV (MS-DOS) — który używa kodowania ASCII — i otwórz go ponownie, aby sprawdzić, czy znaki tabulacji zostały usunięte lub przekształcone na spacje, potencjalnie reaktywując podatność na wstrzyknięcie formuły. Przetestuj import do Google Sheets i LibreOffice Calc, aby upewnić się, że aplikacje te respektują prefiksy neutralizacji, a nie przycinają białych znaków lub nie interpretują zawartości jako formuł. Na koniec zweryfikuj, że podczas ponownego importowania zneutralizowanych plików CSV do Excel, wiodące tabulatory nie pojawiają się jako widoczne znaki dla użytkowników końcowych, co wymaga sprawdzenia, czy kreator „Tekst na kolumny” w Excel prawidłowo obsługuje dane oddzielone tabulacją bez dzielenia zawartości komórek na sanitarne.