Najnowsze wpisy, strona 17


rozdział 10
08 września 2019, 22:02

Rozdział 10 Testowanie różnych wersji językowych
W TYM ROZDZIALE Aby słowa i rysunki miały sens Kwestie tłumaczenia Kwestie ulokalnienia Zagadnienia konfiguracji i kompatybilności Jak wiele trzeba testować?
Si tu eres fluente en mas de un idioma y competente en provando programas de computadora, tu tienes una habilidad muy decenda en el mercado.
Wenn Się eine zuverläßig Software Prüferin sind, und fließend eine fremdsprache, ausser English, sprechen können, dann können Się gut verdienen.
Przetłumaczone z grubsza z hiszpńskiego i niemiećkiego, powyższe zdania znaczą: Ten kto jest doświadczonym testerem oprogramowania i zna dobrze inny język oprócz angielskiego, może się spodziewać wysokich zarobków1.
Wiele programów wypuszcza się dzisiaj na cały świat, nie tylko na rynek jednego kraju albo tylko w jednym języku. Micorsoft dostarczał Windows 98 z obsługą dla 73 różnych języków, od Afrikaans przez węgierski do wietnamskiego. Większość innych firm produkujących oprogramowanie postępuje podobnie, zdając sobie sprawę, że angielskojęzyczny rynek amerykański to ledwo połowa potencjalnych klientów. Projektowanie i testowanie oprogramowania pod kątem sprzedaży na całym świecie przynosi konkretne zyski.
W tym rozdziale poznamy wymagania wobec testowania programów pisanych dla wileu krajów i języków. Na pierwszy rzut oka wydaje się to nieskomplikowane, ale rzeczywistość jest inna i dowiemy się, dlaczego.
Główne punkty tego rodziału to: 50.Czemu samo tłumaczenie nie wystarcza 51.Jak zmiana języka wpływa na słowa i na cały tekst 52.Czemu piłka nożna i telefon są ważne 53.Zagadnienia konfiguracji i kompatybilności
1 To zdanie, jak i cały rozdział, napisany jest z wyraźnie amerykańskiej perspektywy. W niczym nie zmienia to jego aktualności, choć oczywiśćie polscy producenci oprogramowania rzadziej niż amerykańscy wytwarzają programy przenaczone do użytku wielojęzycznego (przyp. tłumacza).
54.Jak wiele pracy wymaga testowanie pod kątem innego języka Aby słowa i rysunki miały sens
Każdy pewnie kiedyś czytał instrukcję obsługi zabawki albo urządzenia, źle – dosłownie – przetłumaczoną z innego języka. „Przełóż trzpień numer pięć przez zieloną kratkę i dokręć nie luźno żadną nakrętke.” Jasne?
To jest przykład złego tłumaczenia, i tak właśnie oprogramowanie może wyglądać, kiedy nie dość wysiłku włożyło się w przygotowanie wersji innych niż oryginalna. Łatwo jest przetłumaczyć tekst słowo po słowie, ale zachowanie znaczenia wymaga więcej pracy i uwagi.
Dobry tłumacz potrafi to właśnie osiągnąć. Kto mówi płynnie w obu językach, potrafi sporządzić tłumaczenie równie poprawne i zrozumiałe jak oryginał. Niestety, w przemyśle informatycznym samo dobre tłumaczenie nie zawsze wystarcza.
Weźmy jako przykład język hiszpański. To chyba prosta sprawa przetłumaczyć tekst angielski na hiszpański, prawda? Dobrze, ale który hiszpański? Hiszpański z Hiszpanii? A co z hiszpańskim z Kostaryki, z Peru, z Dominikany? Wszędzie tam mówi się po hiszpańsku, ale są to odmiany na tyle różne, że program napisany pod kątem jednego może być źle przyjęty przez inne. Nawet angielski ma podobne kłopoty. Istniej nie tylko angielski amerykański, ale kanadyjski, australijski i brytyjski. W oczach amerykańskiego użytkownika słowa colour albo neighbour wyglądają dziwacznie1.
Trzeba wziąć pod uwagę, oprócz samego języka, również tak zwaną specyfikę regionalną: kraj albo region, z którego pochodzi użytkownik. Proces ten naywa się ulokalnieniem: dostosowywanie oprogramowania do lokalnej specyfiki, dialektu, obyczajów i kultury. Testowanie tak przetworzonego oprogramowania nazywa się testowaniem ulokalnienia. Kwestie tłumaczenia
Chociaż tłumaczenie jest tyko częścią całego procesu ulokalniania, jest szczeglnie ważne z punktu widzenia testowania. Najprostszym problemem jest – jak można przetestować coś posługującego się innym językiem? Cóż, któryś z testerów musi w tym celu mieć choćiaż średnią znajomość tego języka aby móc przemieszczać się w programie, czytać i rozumieć wyświetlane przez program teksty infromacyjne  i pisać komnedy niezbędne do uruchomienia programu. Może jest wobec tego czas najwyższy, aby zapisać się na kurs języka słoweńskiego, o którym się od dawna marzyło?
1 Brytyjska i amerykańska ortografia różnią się w tym miejscu: brytyjskiemu colour i neighbour odpowiada amerykańskie color i neighbor (przyp. tłumacza).
Ważne by choć jedna osoba w zespole testującym znała choć trochę język, który się testuje1. Oczywiście, jeśli program będzie mógł obsługiwać 32 różne języki, może to być trudno osiągnąć. Rozwiązaniem jest przekazanie tego zadania firmie specjalizującej się w testowaniu ulokalnienia. Liczne takie firmy na całym świecie są w stanie podjąć się testowania niemal we wszystkicj językach. Aby znaleźć więcej wiadomości na ten temat, wystarczy przeszukiwać zwrotu „localization testing”2 na Internecie.
Nie musi się wymagać, aby każdy w zespole znał język, na który dokonuje się ulokalniania. Przypuszcalnie wystarczy jedna tylko osoba. Wiele rzeczy można sprawdzić nie znając znaczenia słów. Na pewno pomocna jest pewna znajomość, ale daje się sporo przetestować nie mówiąc płynnie w danym języku.
Rozszerzanie tekstu
Najprostszym przykładem kłopotu z tłumaczeniami jest tak zwane rozszerzanie tekstu. Chociaż język angielski może się czasem wydawać rozwlekły, okazuje się, że tłumacząc angielski na inne języki zwykle potrzeba więcej liter dla wyrażenia tej samej rzeczy. Rysunek 10.1 pokazuje jak wielkość przycisku rośnie, aby zmieścił się na nim tekst dwóch często spotykanych określeń komputerowych. Dobrym oszacowaniem jest spodziewać się do 100-procentowego wzrostu wielkości poszczególnych słów – na przykład na przycisku. Można się spodziewać 50-procentowego wzrostu rozmiarów zdań i krótkich akapitów – typowych zwrotów, jakie znajdują się w oknach dialogowych i w komunikatach o awariach.
Rysunek 10.1 Słowa Minimize (minimalizuj) i Maximize (maksymalizuj) mogą mieć różną wielkość w różnych językach, co może zmusić do przekonstruowania interfejsu użytkownika, aby stworzyć dla nich miejsce.
1 Najlepiej, oczywiście, aby wszyscy znali ten język doskonale. Istotne dla krajów, które więcej oprogramowania importują niż eksportują… (przyp. tłumacza).
2 W wersji brytyjskiej będzie to “localisation”, nie “localization” (przyp. tłumacza).
Z powodu zjawiska rozszerzenia, należy szczególnie staranie przetestować te części programu, które mogą ulec zmianie z powodu rozszerzonego tekstu. Warto zwrócić uwagę na tekst, gdzie słowa nie są przenoszone poprawnie do następnej linijki, skracane lub nieprawidłowo dzielone. Może się to zdarzyć gdziekolwiek – w każdym punkcie ekranu, w oknach, na przyciskach itp. Szuka się też sytuacji, gdzie tekst wprawdzie znalazł miejsce do rozszerzenia się, ale przy okazji usunął z ekranu coś innego.
Może się też zdarzyć, że dłuższy tekst spowoduje poważną awarię programu albo nawet awarię całego systemu. Programista mógł był przydzielić dość wewnętrznej pamięci na komunikaty angielskie, ale nie na dłuższe, przetłumaczone ciągi znaków. Wersja angielska będzie działać poprawnie, ale niemiećka ulegnie awarii, kiedy pojawi się jakiś komunikat. Tester stosujący metody szklanej skrzynki może znaleźć ten błąd nie znając ani słowa po niemiećku.
ASCII, DBCS i Unicode
W rozdziale 5-ym „Testowanie oprogramowania z klapkami na oczach” krótko został omówiony zbiór znaków ASCII. ASCII zawiera tylko 256 znaków – zbyt mało, aby zmieścić wszelkie możliwe znaki we wszystkich językach. Kiedy zaczęto wytwarzać oprogramowanie w wielu różnych językach, pojawiła się potrzeba nowych rozwiązań, aby ominąć to ograniczenie. Metoda popularna w czasach MS DOS-u, ale wciąż jeszcze stosowana, nazywana była techniką stron kodowych. Strona kodowa to jakby zastępcza tabela ASCII, z różnymi kodami dla różnych języków. Program wykonywany w Quebec`u na francuskim PC mógł załadować i używać stronę zawierającą francuskie znaki. Rosyjski używa innej strony kodowej dla znaków cyrylicy i tak dalej.
Takie rozwiązanie działa, choć dość niezdarnie, dla języków mających mniej niż 256 znaków. Jednak japoński, chiński i inne języki mające tysiące znaków stwarzają nowe kłopoty. System zwany DBCS (Double-Byte Character Set – zbiór znaków dwubajtowych) stosowany jest przez niektóre programy. Użycie dwóch zamiast jednego bajtu umożliwia zdefiniowanie do 65356 różnych znaków.
Strony kodowe i DBCS często wystarczają, ale jest z nimi kilka problemów. Najważniejszy to kwestia kompatybilności. Jeśli załadować hebrajski dokument na niemiećki komputer z angielskim programem do przetwarzania tekstu, wynika z tego groch z kapustą. Jeśli nie ma się właściwych stron kodowych ani przekładu z jednych na drugie, znaków nie daje się odtworzyć poprawnie.
Wyjściem z tego całego bałaganu jest standard Unicode.
Unicode przypisuje jedną, niepowtarzalną liczbę każdemu znakowi, niezależnie od plaformy, niezależnie od programu,
niezależnie od języka.
„Co to jest Unicode?” z witryny Konsorcjum Unicode www.unicode.org
Unicode jest międzynarodowym standardem, popieranym przez większe firmy produkujące oprogramowanie, przez producentów sprzętu i przez inne organizacje zajmujące się standaryzacją, dzięki czemu stale się rozpowszechnia. Stosuje go większość popularnych aplikacji. Rysunek 10.2 pokazuje jeden z wielu dostępnych zestawów znaków. Jeśli oczekuje się, że program – choćby w przyszłości – będzie ulokalniony, projekt powiniem natychmiast rozstać się ze „starym, dobrym ASCII” i przestawić na Unicode - i w ten sposób oszczędzić sobie czasu, pracy i awarii.
Rysunek 10.2 Okno dialogowe w programie Windows Word 2000 pokazuje wykorzystanie standardu Unicode.
Gorące klawisze i skróty
Po angielsku, nazwa brzmi Search. Po polsku, Szukaj. Po francusku, Réchercher. Jeśli gorący klawisz wybierający funkcję Szukaj w wersji angielskiej jest Alt-S, to w wersji francuskiej należałoby go zmienić na Alt +R.
W ulokalnionych wersjach oprogramowania trzeba przetestować czy wszystkie gorące klawisze i skróty działają prawidłowo i czy nie są zbyt trudne – na przykład wymagają naciśnięcia trzeciego klawisza. I trzeba pamiętać, by sprawdzić, czy angielskie gorące klawisze zostały poprawnie wyłączone.
Rozszerzone znaki
Często spotykanym problemem w ulokalnionych – i nie tylko – wersjach oprogramowania, jest użycie rozszerzonych znaków. W odniesięniu do starożytnej tabeli ASCII, rozszerzone znaki to te, które są poza zwykłymi literami angielskigo alfabetu A-Z i a-z, na przkład é w José albo ñ w el Niño. Jeśli program jest napisany prawidłowo i posługuje się Unicodem albo jeśli poprawnie zarządza stronami kodowymi lub DBCS, nie powinno być kłopotu, ale tester nigdy niczego nie powiniem zakładać, więc warto sprawdzić.
Błędów naeży przede wszystkim szukać wszędzie tam, gdzie program przyjmuje znaki albo produkuje dane wyjściowe. W tych miejscach trzeba użyć rozszerzonych znaków i sprawdzić, czy funkcjonują równie dobrze jak zwykłe znaki. Okna dialogowe, dialogi do wlogowania się i wszelkie inne pola tekstowe powinny być sprawdzone. Czy da się wysyłać i przyjmować rozszerzone znaki przez modem? Czy można je stosować w nazwach plików lub mieć je w plikach? czy zostaną poprawnie wydrukowane? Co się stanie jeśli je wycinać, kopiować i wklejać między testowanym  programem i innymi aplikacjami?
Najprostszy sposób, żeby nie zapomnieć o przetestowaniu rozszerzonych znaków, to doadać je do używanej klasy równoważności zawierającej wszystkie używane przy testowaniu, zwykłe znaki. Oprócz tych często powodujących awarie znaków na krańcach tabeli ASCII, warto dorzucić Æ, Ø, ß, Ę, Ź…
Obliczenia na znakach
Dodatkowy kłopot z rozszerzonymi znakami powstaje wtedy, kiedy oprogramowanie używa znaków do obliczeń. Dwa przykłady to sortowanie teksów i przekształcanie na małe lub na duże litery.
Czy nasze oprogramowanie potrafi wytwarzać posortowane listy wyrazów? Na przykład w liście dających się wybierać pozycji takich jak nazwy plików lub adresy Internetowe? Jeśli tak, to jak należałoby posortować następującą listę słów?
Kopiëren Reiste Ärmlich Arg Reiskorn résumé Reißaus kopieën reiten Reisschnaps reißen resume
Testując oprogramowanie przeznaczone do sprzedzży na rynki azjatyckie, trzeba sobie zdawać sprawę, że kierunek sortowania opiera się na kolejności ruchów pędzla. Niniejsza lista miałoby przypuszczalnie zupełnie inna kolejność, gdyby była napisana po chińsku. Należy sprawdzić, jakie reguły sortowania obowiązują w języku, który się testuje, i skonstruować testy specjalnie nastawione na kontrolę porządku sortowania.
Drugi rejon, gdzie załamują się obliczenia dokonywane na rozszerzonych znakach, to przekształcanie na małe i na duże litery. Problem bierze się stąd, że „sztuczką”, której wielu programistów uczy się jeszcze w szkole, to dodanie lub odjęcie wartości 32 do wartości ASCII danego znaku, by przekształcić go w małą lub dużą literę. Dodając np. 32 do wartości ASCII A otrzymuje się wartość ASCII a. Niestety, ta reguła nie działa dla rozszerzonych znaków. Stosując tę technikę wobec rozszerzonego zbioru znaków Apple Macintosha, przeksztalciłoby się np. Ñ (ASCII 132) w § (ASCII 164), zamiast w ñ (ASCII 150) – nie to o co chodziło.
Sortowanie i przekształcanie znaków w duże i małe to tylko jeden z wielu przykładów. Warto przyjrzeć się uważnie oprogramowniu, którym się posługujemy, aby zidentyfikowć inne sytuacje, gdzie obliczenia wykonywane były wprost na słowach albo na literach. Może programy kontrolujące pisownię?
Czytanie z lewa na prawo i z prawa na lewo
Trudnym orzechem do zgryzienia jest to, że wiele języków, np. hebrajski i arabski, czytają od prawej do lewej, nie zaś od lewej do prawej. Oznacza to, że cały interfejs użytkownika trzeba przerobić w jego lustrzane odbicie.
Na szczęście, większość systemów operacyjnych zawiera wspomaganie dla tych języków. Bez tego, byłoby to zadanie niemal niewykonalne. Tak czy owak, nie jest to już samo proste tłumaczenie. Wkorzystanie funkcji systemowych do wykonania tego przekształcenia wymaga sporej ilości programownaia. Z punktu widzenia testowania, bezpieczniej będzie potraktować to jako zupełnie nowy produkt, nie tylko jako ulokalnianie.
Teksty w grafice
Kolejne problemy pojawiają się, kiedy teksty używane są w grafice. Na rysunku 10.3 znajduje się kilka przykładów.
Rysunek 10.3 Word 2000 zawiera przykłady trudnego do przytłumaczenia tekstu w formie map bitowych.
Ikony na rysunku 10.3 są standardowe dla wybrania Tłustego druku, Kursywy, Podkreśleń oraz Koloru czcionki. Ponieważ te ikony zawierają litery B, I, U i A, nie znaczą nic dla kogoś z Japonii, kto nie zna angielskiego. Można domyślić się znaczenia na podstawie wyglądu – B jest trochę grubsze, I – pochylone, U – podskreślone, ale oprogramowanie nie powinno być zagadką.
Skutkiem tego, ulokalnienie oprogramowania często oznacza, że trzeba wymienić wszystkie ikony. Kidy ikon jest dużo, ulokalnienie może się stać zbyt kosztowne. Należy szukać tych błędów wcześnie w procesię wytwarzania i nie pozwolić, by prześlizgnęły się aż do końca.
Tekst należy przechowywać z dala od kodu
Ostatnim z zagadnień związanych z problemtyką tłumaczeń to kwestia „szklanoskrzynkowa” – trzymanie tekstów w innym mijescu niż kod. Oznacza to, że wszelkie ciągi znaków, komunikaty o błędach, dosłownie wszytko co powinno być tłumaczone, należy przechowywać w osobnych plikach niezależnych od kodu źródłowego. Nie powinno się nigdy znaleźć linijki kodu jak ta: Print „Hello World” Większość osoób zajmujących się lokalizacją nie jest programistami – i nie potrzebuje. Zmuszanie ich do modyfikowania – w ramach tłumaczenia – kodu źródłowego  jest ryzykowne i mało wydajne. To, co powinno zostać przez nich zmienione, to zwykły plik tekstowy, zwany plikiem zasobów, zawierający wszystkie komunikaty wyświetlane przez oprogramownanie. Kiedy oprogramowanie działa, wskazuje teksty z pliku, nie wiedząc ani nie dbając o ich treść. Komunikat po angielsku czy po holendersku zostana tak samo wyświetlone.
Tak więc jest ważnym zadaniem testerów wykonujących testy metodami szklanej skrzynki, by przeszukali kod źródłowy, żeby znaleźć ukryte wbudowane ciągi znaków, których zapomniano umieścić na  pliku zasobów. Mogłoby to spowodować spore zamieszanie, gdyby ważny komunikat a hiszpańskim programie pojawił się nagle po angielsku.
Innym objawem tego problemu są teksty komunikatów dynamicznie generowane przez kod. Na przykład, kawałki tekstu mogą być połączone w dłuższy komunikat. Kod mógłby na przykład mieć trzy ciągi znaków: 1.„Nacisnąłeś klawisz „ 2.zmienna typu  ciąg znaków zawierająca nazwę wlaśnie nacisniętego klawisza, 3.„ w ostatniej chwili!”.
łączone potem w całość, aby stworzyć komunikat. Jeśli zmienny ciąg znaków będzie miał wartość „zatrzymać reaktor atomowy”, komunikat będzie brzmiał:
Nacisnąłeś klawisz zatrzymać reaktor atomowy w ostatniej chwili!
Trudność polega na tym, że nie wszystkie języki mają tę samą kolejność wyrazów w zdaniu. Chociaż ten tekst złożył się ładnie w całość po polsku, byłby bez sensu gdyby go dosłownie przetłumaczyć na chiński albo nawet niemiećki. Nie wolno pozwolić na ciągi znaków w kodzie i nie wolno, by program automatycznie łączył ciągi znaków w dłuższe komunikaty. Kwestie ulokalnienia
Jak już zostało powiedziane, trodności tłumaczenia to dopiero połowa kłopotu. Teksty daję się zwykle łatwo przetłumaczyć, nawet uwzględniając różne znaki i długości ciągów znaków. Dodatkowe trudności pojawiają się, kiedy chce się całe oprogramowanie dostosować do zagranicznego rynku.
Przypomnienie pojęć z rozdziału 3-ego: precyzja, trafność, niezawodność i jakość.
Oprogramowanie dobrze porzetłumaczone i dobrze przetestowane będzie precyzyjne i niezawodne, ale zapewne nietrafne i nie mające wysokiej jakości. Może wyglądać i działać świetnie, dać się łatwo odczytywać i nigdy nie ulegać awarii, ale dla użytkownika z innego kręgu kulturowego może po prostu wydawać się jakieś nie na miejscu. Dopiero dokonanie ulokalnienia produktu pozwoli na osiągnięcie pełnego dostosowania.
Zawartość
Co można by pomyśleć o nowej encyklopedii wydanej na amerykański rynek, gdyby miała zawartość pokazaną na rysunku 10.4?
Piłka nożna Nasza królowa
Budka telefoniczna
Jeździmy zawsze po lewej stronie
Rysunek 10.4 Te przykłady wyglądałyby dziwnie w encyklopedii na rynek amerykański.
W Stanach Zjednoczonych, piłka nożna to nie to samo co futbol!1 Nie jeździ się po lewej stronie. To, co nie obowiązuje w jednym kraju, obowiązuje w drugim! Testując produkt podlegający ulokalnieniu, trzeba starannie przejrzeć jego zawartość, aby upewnić się, że pasuje do obszaru kulturowego, gdzie ma być stosowany.
1 Football to w USA “futbol amerykański”, a soccer to nasza europejska piłka nożna (przyp. tłumacza).
Dotyczy to również wszystkich innych – oprócz kodu – składników produktu informatycznego (zob. rozdział 2-i „Proces wytwarzania oprogramowania”). Poniższa lista zawiera różne elementy produktu, które należy dokładnie zbadać opd kątem ulokalnienia. To nie jest lista wyczerpująca – składniki zależą od rodzaju produktu. Warto pomyśleć, jakie jeszcze inne składniki mogą sprawiać kłopoty, jeśli wysłać je do innego kraju.
Przykłady dokumentacji Ikony Obrazki Dźwięki Wideo Pliki pomocnicze Mapy z kontrowersyjnymi granicami Materiały marketingowe Opakowanie Połączenia internetowe
Za długi nos
W 1993 roku Microsoft wypuścił dwa produkty dla dzieci, zwane Pomysłowy Pisarz i Wspaniały Artysta1. W tych programach występowała postać imieniem McZee, mająca dzieciom pomagać w posługiwaniu się nimi. Wiele trudu włożono w zaprojektowanie McZee, w wybór jego wyglądu, koloru, manieryzmów, osobowości i tak dalej. Wyszedł z tego dość dziwnie wyglądający facet z wystającymi zębami, ciemnopurpurową skórą i dużym nosem.
Kiedy sporo pracy włożono już w animację postaci McZee, telefon zadzwonił w jednym z zagranicznych biur Microsoftu. Otrzymano tam właśnie wstępną wersję programu i po analizie uznano, że była nie do przyjęcia. Powód: McZee miał za długi nos. W tamtejszej kulturze, ludzie z długimi nosami byli rzadkością i – słusznie czy nie – długi nos kojarzył się z mnoóstwem negatywnych stereotypów. Stwierdzono, że produkt nie będzie się w tej postaci sprzedawał.
Storzenie dwóch różnych postaci McZee, każdej na inny rynek, byłoby zbyt kosztowne, więc wyrzucono całą pracę dotąd włożoną, a McZee rozbił sobie nos o pierwszą poważną przeszkodę.
Wypływa stąd nauka, że to treść oprogramowania – czy będzie nią tekst, grafika, dźwięki czy coś innego – ma kluczowe znaczenie dla ulokalniania. Pod tym właśnie kątem należy analizować zawartość programu, a tester – o ile nie ma doświadczenia z lokalnym kręgiem kulturowym – musi mieć do dyspozycji eksperta, który się na niej dobrze zna.
Formaty danych
1 Creative Writer i Fine Artist (przyp. tłumacza).
Różne kraje stosuja różne formaty zapisywania jednostek waluty, czasu i innych wymiarów. Tak jak i z zawartością, nie chodzi tu o samo tłumaczenie, lecz o ulokalnienie. Amerykański program do składu komputerowego, posługujący się calami, nie wystarczy tylko prztłumaczyć na centymetry. Trzeba dokonać zmian w programie we wzorach obliczeń, siatce współrzędnych i tak dalej.
Tabela 10.1 Formaty danych dla różnych krajów Jednostka Możliwe wartości Miary Metryczne lub angielskie Liczby Przecinek lub kropka dziesięta; sposoby umieszczania znaku ujemnego; użycie znaku # na oznaczenie liczby Waluta Różne symbole i gdzie je się umieszcza Data Klejność dnia, miesiąca, roku; znaki oddzielające; zera na początku; długi i krótki format daty Godzina 12-godzinny lub 24-godzinny, znaki oddzielające Kalendarz Różne kalendarze i dni początkowe (miesiąca, tygodnia itp) Adresowanie Kolejność pozycji; użycie kodu pocztowego Numery telefonów Nawiasy, myślniki lub inne znaki oddzielające części numeru od siebie Formaty papieru Różne formaty papieru i kopert
Na szczęście, większość systemów operacyjnych przeznaczonych do użytku w rożnych krajach zawiera gotowe formaty tych rodzajów danych dostosowane do różnych krajów. Rysunek 10.5 pokazuje przykład z Windows 98. Korzystanie z tego wbudowanego wspomnagania ułatwia programistom ulokalnianie programów, ale nie zastępuje myślenia.
Sposób wyświetlania daty nie wpływa na to, jaki format ma data wewnątrz w programie. Na przykład, data może mieć krótki format ddmm-rr. Nie oznacza to, że wewnętrzna reprezentacja daty jest tylko dwucyfrowa (i zawiea w sobie błąd roku dwutysięcznego). W tym wypadku ustawienie oznacza jedynie, że 2 cyfry są wyświetlane. System operacyjny posługuje się czterema cyframi dziesiętnymi do wykonywania obliczeń, o czym warto dodatkowo pamiętać przy testowaniu.

Rysunek 10.5 W Windows 98, opcje Ustawień Lokalnych pozwalają użytkownikom wybrać sposób wyświetlania liczb, waluty, godzin i dat.
Testując oprogramowanie dostosowane do danego kraju, trzeba dobrze znać jednostki miar, których się w nim używa. Aby właściwie przetestować oprogramowanie, trzeba będzie skonstruować nowe klasy równoważności, dostosowane do nowego rodzaju danych. Zagadnienia konfiguracji i kompatybilności
Kwiestie testowania konfiguracji i kompatybilności, omówione w rozdziałach 8-ym i 9-ym, stosują się w pełni do testowania ulokalnionych wersji oprogramowania. Problemy, które pojawiają się, gdy oprogramowanie współdziała z różnym sprzętem i z innymi programami, mogą nasilić się w nowych kombinacjach. Testowanie tego nie będzie koniecznie trudniejsze, może tylko trochę bardziej pracochłonne. Dodatkowym kłopotem może być dostęp do zagranicznych weresji sprzętu i programów, z którymi testowanie trzeba przeprowadzić.
Międzynarodowe konfiguracje platform
Windows 98 obsługije 73 różne języki i 66 różnych układów klawiatury. Realizuje się to poprzez dialog Właściwości Klawiatury w Panelu Sterującym. Rozwijana lista języków zaczyna się od Afrikaans, a konczy na ukraińskim i zawiera dziewięć różnych wersji angielskigo: amerykańską, australijską, brytyjską, kanadyjską, karaibską, irlandzką, z Jamajki, nowozelandzką i południowoafrykańską. Jest tam też pięć różńych dialektów niemieckich i dwadziścia hiszpańskich.

Rysunek 10.6 Windows 98 obsługuje użycie rożnych układów klawiatury i rożnych języków poprzez okno dialogowe Właściwości Klawiatury.
Rysunek 10.7 pokazuje przykłady trzech różnych układów klawiatury przeznaczonych dla różnych krajów. Zauważmy, że każda klawiatura ma klawisze ze znakami danego języka, ale również znaki angielskie. Jest to ddość powszechne, gdyż angielski jest powszechnie znany w wielu krajach, a taki układ pozwala na używanie zarówno oprogramowania lokalnego jak i angielskigo.
Klawiatury to sprzęt najbardziej zależny od języka, ale zaleznie od tego, co się testuje, inne elementy sprzętu też mogą być zależne. Na przykład drukarki muszą poprawnie drukować wszystkie znaki, które oprogramowanie im wysyła, i umieć sformatować dane wyjściowe do różnych formatów papieru w różnych krajach. Jeśli oprogramowanie używa modemu, mogą pojawić się zagadnienia związane z jakością linii telefonicznych lub z różnicami w protokołach telekomunikacyjnych. Każde urządzenie peryfyeryjne pracujące z testowanym oprogramowaniem trzeba wziąć pod uwagę, planując ewentualne zależności od języka i kraju zastosowania.
Konstruując klasy równoważności, trzeba pamiętać, żeby wziąć pod uwagę różne kombinację oprogramowania i sprzętu, które wchodzą w skład platformy. Dotyczy to zarówno sprzętu, programów obsługi i systemu operacyjnego. Posługiwanie się francuską drukarką na Macintosh‘u, z brytyjskim systemem operacyjnym i niemiecką wersją językową testowanego programu może być jak najbardzij dozwoloną konfiguracją!

Rysunek 10.7 Arabska, francuska i rosyjska klawiatura zawiera znaki specyficzne dla danego języka. Za zezwoleniem Fingertip Software, Inc. (www.fingertip.com).
Kompatybilność danych
Tak samo jak testowanie konfiguracji, również testowanie kompatybilności nabiera nowego sensu, kiedy wziąć pod uwagę potrzeby ulokalniania. Rysunek 10.8 pokazuje, jak bardzo złożone może zrobić się przeniesienie danych z jednej aplikacji do innej. Na przykład, nimiecka aplikacja stosująca metryczne jednostki miary i rozszerzony zbiór znaków, może przenieść dane do innej, francuskiej aplikacji zapisując i następnie łądując z dysku, albo posługując się funkcjami wytnij-wklej. Aplikacja francuska może z kolei wyeksportować dane, które jakaś angielska aplikacja może importować. Program angielski, posługujący się brytyjskimi jednostkami miary i nierozszerzonym zestawem znaków, może to wszystko z powrotem przenieść do niemieckiego programu.
Rysunek 10.8 Testowanie kompatybilności danych różnych ulokalnionych wersji programu może być mocno skomplikowane.
W czasie tego przesyłania danych w kółko, przy przekładaniu jednostek miar i rozszerzonych znaków, jest wiele miejsc, gdzie mogą ukrywać się błędy. Niektóre z nich mogły powstać w wyniku błędnych decyzji konstrukcyjnych. Na przykład, co ma się stać z danymi przenoszonymi z jednego do drugiego programu, jeśli musi zostać przy tym zmieniony format? Czy należy zmianę przeprowadzić automatycznie, czy powinno się zapytać użytkownika? Czy należy wyświetlić komunikat o błędzie, czy też tylko przenieść dane i zmienić jednostki miary?
Zanim można zacząć testować kompatybilność ulokalnionego oprogramowania, trzeba mieć odpowiedzi na powyższe pytania. Kiedy już ma się te odpowiedzi, testuje się tak samo jak dawniej – tyle tylko że w klasach równoważności będzie więcej elementów. Jak wiele trzeba testować?
Ważną decyzją, jaką trzeba podjąć przed przystąpieniem do testowania wersji lokalnych programu, jest ile trzeba będzie testować? Jeśli testowanie oryginalnej wersji amerykańskiej zajęło sześć miesięcy, czy testowanie ulokalnionej wersji francuskiej też powinno zająć sześć miesięcy? Czy może jeszcze dłużej, skoro pojawiły się nowe zagadnienia dotyczące konfiguracji i kompatybilności?1
Tę niełatwą decyzję można uprościć do dwóch podstawowych pytań: 55.Czy od początku planowano dokonanie ulokalnienia oprogramowania? 56.Czy w celu dokonania ulokalnienia trzeba było dokonywać zmian w kodzie programu?
Jeśli dostosowanie programu do różnych wersji lokalnych i językowych było planowane od początku, ryzyko pojawienia się wielu błędów i potrzeba rozbudowanego testowania są znacznie mniejsze. Jeśli jednak program był napisany z początku specjalnie po  angielsku pod kątem rynku amerykańskiego, a decyzję o dostosowaniu do innego języka podjęto dopiero poźniej, będzie chyba najlepiej potraktować to oprogramowanie jak zupełnie nową wersję wymagającą pełnego testowania.
Drugie pytanie dotyvczy tego, jakich zmian trzeba było dokonać w całym produkcie. Jeżeli ulokalnianie polega tylko na zmianach w zawartości grafiki i tekstów – to testowanie można ograniczyć do powierzchownej walidacji. Jeśli jednak – z powodu złej architektury systemu albo innych problemów – kod musiał także ulec zmianie, testowanie musi to wziąć pod uwage i skontrolować zarówno treść jak i działanie funkcji.
1 To samo pytanie pojawia się przy każdym testowaniu konfiguracji, a jeszcze ogólniej – przy każdym testowaniu regresywnym, niezależnie od jego przyczyn (przyp. tłumacza).
Decyzja, jaka jest wymagana ilość testowania ulokalnienia, jest decyzją ryzykowną – jak zresztą całe testowanie. Nabierając doświadczenia w testowaniu, uczymy się, co brać pod uwagę w procesie podejmowania decyzji.
Meteodą niekiedy stosowaną przez zespoły testujące, jest testowanie na ile produkt – mający w przyszłości podegać ulokalnieniu – nadaje się do ulokalnienia. Testuje się już pierwszą wersję produktu, zakładając że ulokalnienia zostanie wykonane poźniej. Testerzy stosujący metody szklanej skrzynki badają kod w poszukiwaniu ciągów znaków, właściwego przetwarzania jednostek miar, rozszerzonych znaków i innych zagadnień widocznych na poziomie kodu źródłowego. Czasem nawet robi się własną, „lipną” ulokalnioną wersję. Testerzy stosujący metody czarnej skrzynki starannie badają specyfikacje i sam produkt pod kątem takich problemów jak teksty w grafice albo kwestie konfiguracji. Można treż użyć „lipnej” wersji w celu przetestowania kompatybilności.
W ten sposób, zanim prawdziwe ulokalnienie zostanie dokonane, kłopoty które pojawiłyby się później zostały już wcześniej usunięte, dzięki czemu uloklanienie przebiega później łatwiej i taniej. Podsumowanie
Ha Ön egy rátermett és képzett softver ismerő, és folyékonyan egy nyelvet aż Angolon kívul, Ön egy nagyon piacképes szakképzett személy.
To jest znane już zdanie cytowane na początku tego rozdziału, tym razem napisane po węgiersku. Jeśli nie umie się go przeczytać, nie ma zmartwienia. Dowiedzieliśmy się przecież, że znajomość języka to tylko jedna z wielu umięjętności potrzebnych, by testować produkt poddany ulokalnieniu. Znaczną część pracy wykonuje się kontrolując, na ile produkt nadaje się do ulokalnienia oraz testując sprawy niezależne od języka.
Znając inne języki oprócz angielskiego, i czytając tę książkę aż do końca, żeby nauczyć się jak najwięcej na temat testowania oprogramowania, będzie się miało – jak to przeczytaliśmy przed chwilą po węgiersku – „zespół bardzo dobrze się sprzedających umiejętności”.
Więcej wiadoamości na teamt programowania ulokalnienia i testowania dla Windowsów można znaleźć w www.microsoft.com/globaldev. Dla Macintosha, wiadomości można znaleźć w książce Guide to Macintosh Software Localization, opublikowanej przez Addison-Wesley. Pytania
Pytania mają na celu ułatwienie zrozumienia. W aneksie A „Odpowiedzi na pytania” znajdują się prawidłowe rozwiązania – ale nie należy ściągać! 1.Jaka jest różnica między tłumaczeniem a ulokalnieniem?
2.Czy musi się znać język, aby móc testować produkt poddany ulokalnieniu? 3.Co to jest rozszerzanie tekstu i jakie błedy powoduje? 4.Podaj kilka dziedzin, w których rozszerzony zbór znaków może spowodować kłopoty. 5.Dlaczego tekstowe ciągi znaków należy trzymać poza kodem? 6.Wymień kilka rodzajów formatów danych, które mogą się różnić w różnych ulokalnionych wersjach programu.

rozdział 9
08 września 2019, 21:59

Rozdział 9 Testowanie kompatybilności
W TYM ROZDZIALE  Przegląd testowania kompatybilności  Różne platformy i wersje aplikacji  Standardy i normy  Kompatybilność wspólnych danych
W rozdziale ósmym poznaliśmy testowanie konfiguracji sprzętu i to, w jaki sposób można upewnić się, że oprogramowanie działa poprawnie ze sprzętem, dla którego zostało zaprojektowane. Obecny rozdział zajmuje się pokrewnym obszarem testowania interakcji – sprawdzaniem, czy oprogramowanie współpracuje poprawnie z innymi programami.
Testowanie czy program współgra z innymi programami zyskało na znaczeniu, odkąd konsumenci domagają się możliwości posługiwania się jednym zestawem danych przez programy różnych rodzajów od różnych dostawców, a także jednoczesnego posługiwania się kilkoma programami.
Dawniej każdy program działał jako oddzielna aplikacja. Wykonywało się go w znanym, zrozumiałym i życzliwym otoczeniu, z dala od wszelkich zagrażających oddziaływań. Dzisiaj program prawdopodobnie importuje i eksportuje dane z różnych innych programów, jest wykonywany na różnych systemach operacyjnych i na różnych przeglądarkach i musi współpracować z innymi programami wykonywanymi jednocześnie na tym samym komputerze. Zadaniem testowania kompatybilności oprogramowania jest sprawdzenie, czy to wszystko działa tak, jak oczekują użytkownicy.
Najważniejsze punkty tego rozdziału  to: 23.Co to znaczy, że oprogramowanie jest kompatybilne 24.Jak kompatybilność definiowana jest przez standardy 25.Co to są platformy i jakie mają znaczenie dla kompatybilności 26.Czemu możność przesyłania danych między różnymi aplikacjami jest kluczem do kompatybilności Przegląd testowania kompatybilności
Testowanie kompatybilności oprogramowania oznacza kontrolę, czy badany program współpracuje poprawnie z innymi programami i czy przepływ danych odbywa się prawidłowo. Takie współdziałanie zwykle ma miejsce między programami wykonywanymi na tym samym komputerze, albo nawet na różnych komputerach, połączonych przez Internet i odleglych od siebie o tysiące kilometrów. Współdziałanie może być też zupełnie proste – jak zapisanie danych na dyskietce i przeniesienie jej w ręku do innego komputera w tym samym pokoju.
Oto różne przykłady kompatybilności oprogramowania: 27.Wycięcie tekstu ze strony internetowej i wklejenie go do dokumentu otwartego w programie do przetwarzania tekstu 28.Zapisanie danych finansowych z jednego arkusza kalkulacyjnego i załadowanie ich do zupełnie innego arkusza kalkulacyjnego 29.Program do przetwarzania fotografii działający poprawnie na różnych wersjach tego samego systemu operacyjnego 30.Załadowanie nazwisk i adresów z elektronicznego kalendarza do programu do przetwarzania danych i wydrukowanie z niego serii imiennych zaproszeń i adresów na koperty 31.Uaktualnienie programu obsługi bazy danych i niezmieniony dostęp do danych ze starej bazy danych
Kompatybilność oznacza coś innego dla różnych programów, zależnie od poziomu kompatybilności opisanego w specyfikacji wymagań i od tego, jakie są wymagania systemu, na którym program będzie wykonywany. Zagadnienie kompatybilności nie istnieje dla oprogramowania urządzenia medycznego, mającego własny system operacyjny, zapisującego dane na własnych typach pamięci i niepodłączonego do żadnego innego urządzenia. Natomiast któraś z kolei wersja programu do przetwarzania tekstu (zob. rysunek 9.1), czytającego i piszącego różne pliki z innych programów przetwarzających tekst, pozwalającego na korzystanie za pośrednictwem Internetu przez wielu użytkowników jednocześnie, umożliwiającego włączanie wbudowanej grafiki lub arkuszy kalkulacyjnych z różnego rodzaju aplikacji - uwikładna jest w wielką ilość zagadnień kompatybilności.

Wycinanie, kopiowanie, wklejanie
Zapis/ładowanie plików
Import/eksport plików
Program do przetwarzania tekstu z firmy U, działający na systemie operacyjnym W
Program do przetwarzania tekstu z firmy C, działający na systemie operacyjnym L
Import/eksport za pośrednictwem sieci
Arkusz kalkulacyjny z firmy L, działający na systemie operacyjnym N
Kopia zapasowa
Rysunek 9.1 Kopmatybilność wiążąca razem kilka różnych typów aplikacji szybko staje się bardzo skomplikowana.
Wykonując testowanie kompatybilności nowego oprogramowania, trzeba będzie sobie umieć odpowiedzieć na klika pytań: 32.Z jakimi innymi platformami (systemy operacyjne, przeglądarki internetowe i inne elementy środowiska) system został zaprojektowany jako kompatybilny? Jeśli testowane oprogramowanie samo jest platformą, jakie inne programy mają na nim być wykonywane? 33.Jakie standardy albo reguły kompatybilności muszą być przestrzegane? 34.Jakie rodzaje danych testowane oprogramowanie będzie używać do komunikowania się i posługiwania wspólnymi danymi z innymi programami?
Odpowiedzi na te pytania uzyskuje się przy pomocy zwykłego testowania statycznego – zarówno metodami czarnej jak i szklanej skrzynki. Analizuje się starannie specyfikację produktu i wszelką dodatkową dokumentację. Warto też wziąć pod uwagę rozmowy z programistami i analizę kodu, aby odkryć wszelkie połączenia od i do testowanego oprogramowania. W pozostałej części tego rozdziału przyjrzymy się tym zagadnieniom bliżej. Różne platformy i wersje aplikacji
 Wybór platformy dla aplikacji oraz programów z którymi ma być kompatybilna jest w gruncie rzeczy zadaniem dla marketingu. Ktoś dobrze znający klientów powinien podjąć decyzję, czy oprogramowanie jest przeznaczone dla określonego systemu operacyjnego, przeglądarki internetowej czy dla innej platformy. Ta sama osoba powinna podjąć decyzję, z jakimi wersjami dany produkt ma być kompatybilny. Na przykład, często widuje się takie opisy na opakowaniach albo na pierwszym wyświetlanym przez program ekranie:
Działa najlepiej z Netscape 4.0
Wymaga Windows 95 albo wyżej
Do użytku z jądrem Linuxa 2.2.16
Te informacje należą do specyfikacji i informują zespoły wytwarzający i testujący o tym, jakie są wymagania dotyczące kompatybilności. Każda platforma narzuca szczególne wymagania i z punktu widzenia kierownictwa projektu ważne jest, by ta lista była jak najkrótsza, ale nadal wystarczająca z punktu widzenia potrzeb klientów.
Kompatybilność wprzód i wstecz
Dwa powszechnie stosowane terminy to kompatybilność wstecz (z poprzednimi wersjami) oraz kompatybilność wprzód (z następnymi wersjami). Program kompatybilny wstecz działa z poprzednimi wersjami. Program kompatybilny wprzód działa z przyszłymi wersjami. Najprostszą ilustracją kompatybilności wstecz i wprzód są pliki typu .txt, czyli tekstowe. Rysunek 9.2 pokazuje, jak plik tekstowy zrobiony przy pomocy Notpad 98 w systemie Windows 98 jest kompatybilny wstecz aż do MS-DOS 1.0. Jest również kopmatybilny wprzód do Windows 2000 i prawdopodobnie pozostaniem takim również w kolejnych wersjach.

Editexe na MSDOS 1.0
NotePad na Windows 3.1
??? na OS ???
WordPad na Windows 2000
NotePad na Windows 95
NotePad 98 na Windows 98
Kompatybilność wstecz
Kompatybilność wprzód
Rysunek 9.2 Kompatybilność wstecz i wprzód określają, które wersje będą działać z programem lub plikami aktualnego programu.
Nie jest konieczne, by każde oprogramowanie i wszelkie pliki były kompatybilne wstecz i wprzód. Jest to decyzja do podjęcia dla projektu. Tester musi jednak wiedzieć, jak wiele pracy wymagać będzie przetestowanie kompatybilności wstecz i wprzód dla danego programu.
Skutki testowania różnych wersji
Testowanie, że rozmaite platformy i oprogramowania działaja razem prawidłowo może być dużym przedsięwzięciem. Weźmy pod uwagę test kompatybilności dla nowej wersji popularnego systemu operacyjnego. Programiści naprawili wiele błędów, podnieśli osiągi i dodali do kodu wiele nowych funkcji. Mogą istnieć dziesiątki albo nawet setki tysięcy programów dla aktualnej wersji systemu operacyjnego. Celem projektu jest zachowanie 100-procentowej kompatybilności ze wszystkimi. Spójrzmy na rysunek 9.3.
Jest to wielka praca, ale zarazem kolejny przykład, jak podział na klasy równoważności może pomóc zredukować ilość pracy.
 Programy do przetwarzania tekstu
Bazy danych
Programy edukacyjne
Gry
Programy do malowania i pisania
Arkusze kalkulacyjne
Nowa platforma komputerowa 2004
Rysunek 9.3 Testując kompatybilność nowej platformy, musi się skontrolować, że wszystkie istniejące aplikacje dziłają na niej prawidłowo.
Zaczynając testowanie kompatybilności, trzeba dokonać podziału wszelkich możliwych kombinacji oprogramowania na klasy równoważności, będące najmniejszymi, skutecznymi zbiorami weryfikującymi poprawną interakcję testowanego programu z programami należącymi do danej klasy.
Krótko mówiąc, skoro nie da się przetestować tysięcy różnych programów na nowej wersji systemu operacyjnego, trzeba zdecydować, które są najważniejsze. Kryteria kwalifikacji mogą być następujące: 35.Popularność. Trzeba użyć statysktyki sprzedaży i wybrać 100 do 1000 najważniejszych programów. 36.Wiek. Na przykład wybierze się tylko programy i wersje nie starsze niż trzyletnie. 37.Typ. Dzieli się programy na typy takie jak malowanie, pisanie, księgowość, bazy danych, komunikacja itd. Z każdej kategorii wybiera się program do przetestowania. 38.Wytwórca. Innym kryterium jest wybór programów na podstawie firmy, która je wyprodukowała.
Tak samo jak w testowaniu konfiguracji sprzętu, nie istnieje jedyna poprawna „podręcznikowa” odpowiedź. Zespół projektowy powinien podjąć decyzję, co jest najważniejsze i przy pomocy tego kryterium dokonać podziału na klasy równoważności.
Poprzedni przykład przedstawił testowanie kompatybilności nowego systemu operacyjnegop. Te same kwestie odnoszą się do testowania nowej aplikacji (rysunek 9.4). Trzeba podjąć decyzje, na jakich wersjach platformy i z jakimi innymi programami trzeba przetestwować aplikację.

Aplikacja #2
Aplikacja #1 Aplikacja #5
Apllikacja #4
Platforma 1.0
Aplikacja #3
Nowa aplikacja
Platforma 2.1Platforma 2.0 Rysunek 9.4 Testowanie kompatybilności nowej aplikacji może wymagać testowania na wielu platformach i z wieloma innymi aplikacjami. Standardy i normy
Dotąd w tym rozdziale uczyliśmy się, jak wybrać programy, które będzie się testować pod względem kompatybilności z własnym oprogramowaniem. Teraz przyjrzymy się, jak przystąpić do właściwego testowania. Pierwszym krokiem będzie zbadanie standardów i innych norm, które stosują się do testowanego oprogramowania lub platformy.
Te wymagania można w zasadzie podzielić na dwa rodzaje: wysokiego i niskiego poziomu. Standardy dotyczące wysokiego poziomu to te, które określają ogólną zgodność programu z obowiązującymi normami: wygląd jego interfejsu użytkownika, rodzaj funkcji itp. Standardy niskiego poziomu to szczegóły takie jak format plików albo protokoły komunikacyjne. Oba typy są istotne i muszą być przetestowane, aby zapewnić kompatybilność.
Standardy i normy wysokiego poziomu
Na jakim systemie operacyjnym oprogramowanie ma działać – na Windowsach, Macintosh‘u czy Linuxie? Czy to jest aplikacja Internetowa? Jeśli tak, na jakich przeglądarkach ma działać? Każda z tych platform ma swój własny zestaw standardów i norm, które muszą być przestrzegane, jeśli chce się móc twierdzić, że oprogramowanie jest kompatybilne z platformą.
Przykładem może być znak „Cerytfikowany dla Microsoft Windows” (rysunek 9.5). Aby otrzymać ten znak, oprogramowanie musi zaliczyć testy kompatybilności przeprowadzone przez niezależne laboratorium testujące. Celem jest sprawdzenie, że dane oprogramowanie funkcjonuje stabilnie i niezawodnie na tym systemie operacyjnym.

Rysunek 9.5 Znak „Cerytfikowany dla Microsoft Windows” oznacza, że oprogramowanie spełnia wszystkie kryteria zdefiniowane przez zbiór norm.
Kilka przykładów wymagań dla otrzymania tego znaku: 39.Oprogramowanie funkcjonuje z myszą mającą więcej niż trzy przyciski 40.Oprogramowanie można zainstalować na stacjach dysków innych niż C: i D: 41.Oprogramowanie działa z długimi nazwami plików 42.Oprogramowanie nie czyta, nie pisze ani w żaden inny sposób nie używa starych plików systemowcyh win.ini, system.ini, autoexec.bat ani config.sys.
Te wymagania mogą się wydawać proste i oczywiste, ale to tylko cztery pozycje z dokumentu obejmującego 77 stron. Zajmuje sporo czasu upewnić się, czy oprogramowanie spełnia wszelkie wymagania dla otrzymania znaku, ale spełnienie ich jest gwarancją, że oprogramowanie jest o wiele bardziej kompatybilne.
Szczegóły na temat znaku Windows można znaleźć na http://msdn.microsoft.com/certification/. Szczegóły na temat uzyskania prawa użytkowania znaku dla Apple Macintosh`a znajdują się w http://developer.apple.com/mkt/maclogo.html.
Standardy i normy niskiego poziomu
Standardy niskiego poziomu są w pewnym sensię ważniejsze niż standardy wysokiego poziomu. Można na przykład stworzyć program działający na platformie Windows, ale nie mający wyglądu i sposobu działania innych programów w Windowsach. Taki program nie otrzyma znaku „Certyfikowany dla Microsoft Wiondows”. Użytkowanicy mogą nie być zachwyceni róznicami w porónaniu z innymi aplikacjami, ale produkt dałby się używać.
 Jeśli jednak produkt  jest programem graficznym, który zapisuje pliki na dysku jako pliki .pict (standardowy format Macintosha dla grafiki), ale nie spełnia wymagań standardu dla plików .pict, jego użytkownicy nie będa w stanie oglądać grafiki w żadnym innym programie. Taki program nie jest kompatybilny ze standardem i przypuszczalnie będzie miał krótki żywot.
Podobnie, protokoły komunikacyjne, składnia języków programowania i inne metody używane przez programy aby dzielić się informacją, muszą stosować się do powszechnie dostępnych standardów i norm.
Standardy niskiego poziomu często traktuje się jako oczywiste, ale z punktu widzenia testrów muszą być zdefiniowane. Standardy kompatybilności na niskim poziomie należy traktować jak przedłużenie specyfikacji wymagań. Jeśli według specyfikacji „oprogramowanie będzie zapisywać i ładować pliki graficzne w formatach .bmp, .jpg i .gif”, to trzeba będzie znaleźć standardy tych formatów i skonstruować testy, które potwierdzą, że oprogramowanie istotnie spełnia te wymagania. Kompatybilność wspólnych danych
Wspólne używanie danych przez rozmaite aplikacje jest tym, co naprawdę daje oprogramownaiu siłę. Dobrze napisany program, spełnijący opublikowane standardy i pozwalający użytkownikom łatwo przenosić dane do i z innych programów, jest wspaniałym, kompatybilym produktem.
Najpowszechniejsza metodą przenoszenia danych z jednego programu do drugiego jest zapisywanie i ładowanie plików. Jak zostało powiedziane w poprzednim akapicie, przestrzeganie standardów niskiego poziomu wobec dysków i formatów plików jest tym, co umożliwia taki podział. Inne metody również są traktowane jako oczywiste, ale też muszą być przetestowane pod względem kompatybilności. Oto kilka przykładów: 43.Zapis pliku i ładowanie pliku to najbardziej znany sposób wspólnego korzystania z danych. Dane zapisuje się na dyskietce (albo innym rodzaju pamięci sieciowej, magnetycznej czy optycznej), a następnie przenosi na inny komputer z innym oprogramowaniem. Format danych na pliku musi być zgodny ze standardem, aby funkcjonowły na obu komputerach. 44.Eksport i import plików to sposób stosowany przez wiele programów, aby zachować kompatybilność ze starszymi wersjami samych siębie i z innymi programami. Rysunek 9.6 pokazuje okno dialogowe Otworzyć Plik w programie Word Microsoftu – i kilka spośród 23 różnych formatów plików, które można importować do tego programu.

Rysunek 9.6 Word Microsoftu może importować 23 rożne formaty plików.
Aby przetestować funkcje importowania, należałoby stworzyć dokumenty we wszystkich kompatybilnych formatach – przypuszczalnie przy użyciu oryginalnego programu, który zapisuje dane w tym formacie. Te dokumenty muszą mieć próbki – wybrame przy pomocy podziału na klasy rownoważności – tekstu i formatowania, aby móc sprawdzić, czy importowanme dane są poprawnie porzełożone na nowy format. 45.Wycinanie, kopiowanie i wklejanie są nabardziej znanymi sposobami wspólnego korzystania z danych przez różne programy bez potrzeby zapisywania danych na dysku. W tym wypadku, transfer danych dokonuje się w pamięci przez pośredniczący program zwany Schowkiem. Rysunek 9.7 pokazuje, jak taki transfer się odbywa.
Rysunek 9.7 Schowek Systemowy służy do tymczasowego przechowywania różnych typów danych, które kopiuje się z jednego programu do drugiego.
Schowek jest zaprojektowany tak, by móc przechowywać kilka różnych rodzajów danych. Częst spotykane w Windowsach typy danych to teksty, grafika i dźwięk. Te typy danych też mogą występować w różnych formatach – na przykład tekst może być zwykłym tekstem ASCII, HTML, albo tekstem wzbogaconym. Grafika może być w formie map bitowych, metaplików albo plików .tif.
Gdy użytkownik wykonuje wycinanie albo kopiowanie, wybrane dane umieszczane są w Schowku. Kiedy wykonuje się wklejanie, dane są kopiowane ze schowka do programu docelowego.
 Testując kompatybilność programu, trzeba się również upewnić, czy jego dane są prawidłowo kopiowane poprzez Schowek do innych programów. Tej funkcji uzywa się tak często, że łatwo zapomnieć, że kryje się za nią wiele kodu potrzebnego, by wszystko to działało i było kompatybilne z wieloma różnymi programami. 46.DDE (wymawia się „didi-i”) i OLE (wymawia się oł-lej) to metody, których Windows używa w celu przekazywania danych między dwiema aplikacjami. DDE oznacza Dynamiczna Wymianę Danych (Dynamic Data Exchange), a OLE – Łączenie i Wbudowywanie Obiektów (Object Linking and Embedding). Na innych platformach znajdują się podobne metody.
W tej książce nie musimy wchodzić w szczegóły tych technik, ale główną różnicą między nimi a użyciem Schowka jest to, że przy pomocy DDE i OLE dane przepływają z jednego programu do drugiego w czasie rzeczywistym. Wycinanie i kopiowanie to operacja ręczna. Przy użyciu DDE i OLE, transfer dokonywany jest automatycznie.
Przykładem zastosowania może być pisemny raport wykonany w programie do przetwarzania tekstu, zawierający wykres wykonany przez arkusz kalkulacyjny. Gdyby autor dokumentu skopiował i wkleił wykres do raportu, byłby on statycznym zrzutem migawkowym danych. Jeśli jednak włączyć wykres do raportu jako obiekt, zmieni się on automatycznie jeśli zmienią się liczby, które ilustruje.
To wszystko jest pomysłowe, to prawda, ale rownież stanowi wyzwanie dla testera, jak upewnić się, że łączenie i wbudowywanie obiektów funkcjonuje poprawnie. Podsumowanie
Ten rozdział był wstępem do testowania kompatybilności. Tak naprawde można by na ten temat napisać osobną książkę, i jeden rozdział nie jest w stanie oddać całości tematyki. Każda platforma i każda aplikacja jest szczególna, a zagadnienie kompatybilności na jednym systemie może być zupełnie odmienne niż na innym systemie.
Początkujący tester oprogramowania może często otrzymać zadanie przetestowania kompatybilności programu. Może się to wydać dziwne, zważywszy złożoność i wielkość zadania, ale też zwykle pojedynczy tester otrzymuje tylko fragment całej pracy do wykonania. Jeśli projekt wytwarza nową wersję systemu operacyjnego, pojedynczy tester może na przykład otrzymać zadanie testowania kompatybilności tylko programów do przetwarzania tekstu albo graficznych. Jeśli projekt wytwarza jakąś aplikację, tester może otrzymać zadanie przetestowania jej kompatybilności na kilku różnych platformach.
 Z każdym z tych zadań można sobie poradzić, jeśli przystąpić do nich pamiętając o trzech rzeczach: 47.Należy podzielić zbiór wszystkich możliwych typów oprogramowania na dającą się zastosować w praktyce ilość klas równowazności. Oczywiście, kierownik projektu powinien zaakceptować dokonaną selekcję i zdawać sobie sprawe z ryzyka związanego z tym, że nie testuje się wszystkiego. 48.Należy zbadać standady i normy, zarówno na wysokim jak i na niskim poziomie, i potrakotować je jako przedłużenie specyfikacji wymagań. 49.Trzeba przetestować rożne drogi, jakimi dane przepływają między testowanymi programami. Taka funkcjonująca wymiana danych stanowi o kompatybilności programów. Pytania
Pytania mają na celu ułatwienie zrozumienia. W aneksie A „Odpowiedzi na pytania” znajdują się prawidłowe rozwiązania – ale nie należy ściągać! 1.Prawda czy fałsz: każde oprogramowanie musi być w jakimś stopniu poddane testownaiu kompatybilności. 2.Prawda czy fałsz: Kompatybilność jest cechą produktu, która może być spełniona w różnym stopniu 3.Jak należy podejśc do zadania przetestowania kompatybilności wszystkich formatów plików dla danego produktu? 4.W jaki sposób testuje się kompatybilność wprzód (z kolejnymi, następnymi wersjami programu)?