Jak testować tłumaczenia na platformach wielojęzycznych

Październik 9, 2018 Rafał Kubik

Na czym polega problem?

Podczas testowania funkcjonalnego i niefunkcjonalnego tester może zetknąć się z wieloma różnymi problemami. Nieokreślone wymagania, kwestie wydajności czy użyteczności to typowe przykłady takich problemów. Każdy chce, aby strony internetowe lub aplikacje były „przyjazne dla użytkownika”, czyli łatwe w użyciu oraz w utrzymaniu. Pytanie brzmi, jak osiągnąć ten cel, gdy trzeba sprawdzić wiele stron oraz aplikację mobilną dla różnych wersji językowych.

To był zasadniczy problem w przypadku naszego projektu dla linii lotniczej. Musieliśmy sprawdzić siedem różnych języków: angielski, hiszpański, niemiecki, grecki, włoski, francuski i portugalski. Wyobraźcie sobie, że musicie przejrzeć setki stron i przeklikać setki przycisków, przetestować je na urządzeniach o różnych rozdzielczościach (strony są responsywne) i uwzględnić wszystkie błędy oraz walidacje. Nie zapominajmy o aplikacji mobilnej i wielu różnych urządzeniach, na których użytkownicy mogą ją zainstalować. A wciąż mówimy tylko o językach!

Zdefiniuj kłopotliwy obszar

Na początku musieliśmy wybrać jakąś taktykę, ponieważ przetestowanie wszystkich języków na każdej podstronie byłoby niemożliwe. Kiedy zespół QA dołączył do projektu, witryna internetowa była już wdrożona i obsługiwała wszystkie wymienione języki. Programiści dodali tylko kilka dodatkowych funkcji, więc testerzy mogli w łatwy sposób ręcznie sprawdzić te funkcje oraz wszystkie wersje językowe. Koniec końców, chodziło o kilka stron, a nie kilkaset. Klient dostarczył tłumaczenia w arkuszu kalkulacyjnym Excel, a programiści ręcznie skopiowali treści do pliku XML.

Na podstawie tych informacji, po sesji szybkich testów, doszliśmy do kilku wniosków:

  • wszystkie tłumaczenia są kopiowane ręcznie przez programistów, istnieje więc ryzyko, że jakieś treści „zgubią się”;
  • wszystkie tłumaczenia należy porównać z oryginalnym arkuszem kalkulacyjnym;
  • najbardziej problematyczne języki to niemiecki (bardzo długie słowa) i grecki (alfabet);
  • na małych ekranach przetłumaczone wyrażenia zazwyczaj nie mieszczą się na przyciskach i w ramkach;
  • niekiedy, mimo że w tłumaczeniu zastosowano małe litery, projekt wymagał, aby treści na stronie internetowej były zapisane dużymi. To był prawdziwy problem w przypadku języka greckiego, w którym duże i małe litery wyglądają zupełnie inaczej

Testujmy!

Podczas testów skupialiśmy się głównie na małych rozdzielczościach (iPhone SE itp.). Dużo uwagi poświęciliśmy niemieckiej i greckiej wersji językowej.
Jednym z wyzwań było porównanie zdań greckich, ponieważ dla osoby, która nie posługuje się tym językiem, wszystkie greckie litery wyglądają niemal identycznie. Rozwiązaniem był edytor tekstowy Notepad++. Jest wyposażony w funkcję porównywania, która pozwoliła nam bardzo szybko i łatwo dostrzec różnice. Pobraliśmy tekst z aplikacji internetowej i arkusza kalkulacyjnego, a następnie użyliśmy funkcji „Porównaj”, aby upewnić się, że ciągi są takie same.

Najczęściej spotykane błędy, oprócz literówek, to bardzo długi tekst, który zachodził na pozostałe elementy na stronie, słowa wyświetlane w niewłaściwym języku i brakujące tłumaczenie.

Nowa platforma

Życie toczyło się dalej, ale pewnego dnia klient zdecydował się całkowicie przebudować front-end i back-end strony internetowej. Poprosił także o nową aplikację mobilną. Projekty graficzne były gotowe kilka tygodni później, więc programiści zabrali się do pracy. Strona powstała przy wykorzystaniu platformy Angular, a do opracowania aplikacji mobilnej posłużyło rozwiązanie Xamarin.
Tym razem musieliśmy zmierzyć się z problemem tłumaczeń w przypadku produktu, który był wciąż w fazie tworzenia. Wiedzieliśmy, że ostateczna wersja powinna obsługiwać wszystkie siedem języków. Na początku musieliśmy opracować wersję w jednym języku. I wiecie co? Tym językiem wcale nie był angielski.
Zadania nie ułatwia fakt, gdy klient mówi, że na stronie X dwudzieste słowo to nazwisko pasażera. Dlatego zamiast statycznego tekstu należało zastosować zmienną, która wyświetlałaby dane użytkownika. Prawdziwy problem stanowiły jednak tłumaczenia. Gdyby były dostarczone w arkuszach kalkulacyjnych, jak na starej platformie, musielibyśmy znów zmierzyć się z tymi samymi problemami, tyle że na znacznie większą skalę.

Nowe problemy, nowe rozwiązania

Na szczęście, klient zdecydował się na Oneskyapp zamiast Excela. Jest to platforma do zarządzania tłumaczeniami, która obsługuje 19 formatów plików.
Krótko mówiąc, programiści zebrali wszystkie zestawy kluczy i tłumaczenia dla jednego języka, a zespół ds. zapewniania jakości utworzył na tej podstawie arkusz kalkulacyjny, który przekazaliśmy agencji tłumaczeń. Tłumacze widzieli całą listę i mogli wypełnić brakujące fragmenty. Dostarczyli pozostałe tłumaczenia, ale tym razem bezpośrednio na platformę Oneskyapp. W końcu programiści mogli pobrać plik w formacie json/xml/resx wygenerowany przez program. Pliki były pobierane bezpośrednio z aplikacji, więc żadne dodatkowe działania typu „kopiuj-wklej” nie były potrzebne.
Na tym etapie zauważyliśmy kilka istotnych cech, które mają znaczenie dla przyszłych testów:

  • zakładaliśmy, że wszystkie teksty w aplikacjach są poprawne (nie brakuje żadnych znaków, dużych liter, przecinków itp.), ponieważ zostały dostarczone przez biuro tłumaczeń i nie musiały być wprowadzane ręcznie;
  • małe ekrany nadal stanowiły problem (nakładające się treści i problemy z dopasowaniem tekstu);
  • ręczne sprawdzenie wszystkich stron byłoby niemożliwe, dlatego należy zautomatyzować proces;
  • język niemiecki oraz grecki nadal będą najbardziej problematyczne.

Na tej podstawie przygotowaliśmy automatyczne testy. W przypadku strony internetowej użyliśmy narzędzia Selenium, a do aplikacji mobilnej – Calabash. Celem tych testów było przejrzenie wszystkich stron i wykonanie zrzutów ekranu każdej z nich. Wykonując to zadanie, natknęliśmy się na typowe problemy z automatyzacją (nieosiągalne lokalizatory, kłopoty związane z emulatorem systemu Android lub wiele uszkodzonych kompilacji w TeamCity). Mieliśmy także problem z narzędziem Calabash: okazało się, że gdy robiliśmy zrzuty ekranów przy użyciu Selenium, cała strona, nie tylko jej widoczna część, została zapisana, natomiast w przypadku narzędzia Calabash było odwrotnie. Dlatego musieliśmy zastosować rozwiązanie, które pozwalałoby na przewijanie w dół i wykonanie zrzutów ekranu na końcu strony. Po wielu godzinach pracy testy automatyczne były gotowe. Po niewielkich modyfikacjach użyliśmy ich również do testów regresji. Sięgnęliśmy po kilka najbardziej popularnych urządzeń mobilnych i przeprowadziliśmy testy na każdym z nich.
Ponieważ zautomatyzowanie wszystkich stron i błędów było niemożliwe, wiele zadań wykonaliśmy ręcznie. Na szczęście, zautomatyzowane testy sprawiły, że robiło się to o wiele łatwiej. Musieliśmy tylko pamiętać, aby każdy zrzut ekranu miał poprawną nazwę, aby łatwo można je było rozróżnić.

Czy to koniec?

Co byście powiedzieli, gdyby okazało się, że oprócz siedmiu języków, musicie również sprawdzić cztery różne waluty?

  • EUR
  • USD
  • GBP
  • AUD

W niektórych regionach używa się kropki jako separatora dziesiętnego, w innych – przecinka. Który zapis jest poprawny: 25,98 USD czy 25.98 USD? €18,49 czy 18,49€? A co z separatorem tysięcznym? Czy w ogóle należy go używać? Pamiętajcie, aby uzgodnić tego rodzaju szczegóły z klientem i analitykiem biznesowym przed testowaniem. W naszym świecie przecinki i kropki mają znaczenie.

Co należy zrobić?

  • Uzgodnijcie wszystkie symbole i znaki interpunkcyjne (kropki, przecinki, symbole waluty itp.) używane w danym obszarze geograficznym i kręgu kulturowym.
  • Skoncentrujcie się na małych rozdzielczościach i „egzotycznych” językach.
  • Automatyzacja może pomóc przy testowaniu efektów tłumaczenia.
  • Arkusz kalkulacyjny Excel nie jest najlepszym narzędziem w przypadku tłumaczeń, ponieważ utrudnia pracę zarówno programistom, jak i testerom.
  • W przypadku długich i skomplikowanych fraz korzystajcie z możliwości porównania treści.
  • Testowanie gruntowne jest niemożliwe, więc mądrze wybierzcie podejście.

Najnowsze wpisy