2009-04-28 12 views
28

Podczas nauki o testowaniu kodu natknąłem się na słowo "The Turkey Test". Nie wiem naprawdę, co to znaczy.Co to jest test z Turcji?

Co to jest test z Turcji? Dlaczego tak się nazywa?

+3

Myślę, że najlepszym wytłumaczeniem testu z Turcji nie jest post Jeffa, ale dwa pierwsze komentarze pod postem: http://www.codinghorror.com/blog/archives/001075.html#comments –

Odpowiedz

16

Problem z Turcją związany jest z internacjonalizacją oprogramowania lub po prostu z jego niewłaściwym zachowaniem w różnych kulturach językowych.

W różnych krajach obowiązują różne standardy sporządzania dat (14.04.2008 w Turcji i 4/14/2008 w USA), liczby (tj. 123,45 w Polsce i 123,45 w USA) oraz zasady dotyczące wyższych poziomów znaków (np. w Turcji z literami I, I i ı).

Jako wskazany poniżej problem został nazwany przez użytkownika tureckiego, który pierwszy znalazł błąd w funkcji ToUpper(). Więcej informacji w komentarzach poniżej.

Jednak problem nie ogranicza się do Turcji i do konwersji ciągów znaków.

W Polsce i wielu innych krajach, dat i liczb są także pisane z różnych sposobów i problemów związanych z interpretacją data lub numery są również nazywane Turcja problemem.

Linki z Google poszukiwaniu Turcja Problem ze szczegółami są już podane:

+6

Nazwałem to "Test Turcji", ponieważ użytkownik w Turcji jako pierwszy wykrył błąd w naszym kodzie, który został wywołany przez błąd ToUpper(), który opisałem w poście. –

+4

"Nie mam pojęcia, dlaczego problem został nazwany problemem Turcji, ponieważ w Polsce i wielu innych krajach europejskich daty i liczby również są pisane z różnymi sposobami." Dotyczy to głównie wielkich i małych liter "İ". Na przykład narzędzie Microsoft Service Trace Viewer cierpi z powodu tego problemu. Gdy chcesz otworzyć plik dziennika w folderze Inetpub, pojawia się komunikat o błędzie "nie można otworzyć" c: \ ınetpub \ ... " – idursun

+3

To dlatego, że reguły dotyczące liter tureckich dla litery i/I są takie same. z garści znanych przykładów tego, gdzie właściwa międzynarodowa obsługa ciągów ma drobną subtelność, której nikt się nie spodziewa, a zatem ma tendencję do łamania kodu w bardzo bolesny sposób. Litera i jest bardzo powszechna zarówno po angielsku, jak i po turecku, ale musisz wiedzieć, którego języka używasz, aby poprawnie go ulepszyć. Jest to szczególnie bolesne, gdy masz dość często spotykany scenariusz użycia nie tureckich słów w kontekście tureckim - musisz mieć ustawienia języka na ciąg! Formatowanie daty przez kontrast jest dziecinnie proste. – gtd

15

Here is described the turkey test

Zapomnij o Turcji, to nie będzie nawet przechodzić w USA. Potrzebujesz porównania niewrażliwe na wielkość liter. Więc spróbuj:

String.Compare(string,string,bool ignoreCase): 

....

Czy którykolwiek z tych przełęczy "The Turcja test?"

Nie ma szans!

Powód: Zostałeś dotknięty problemem "Turcji I".

Jak mówi wiele osób, "ja" w języku tureckim zachowuje się inaczej niż w większości języków. Zgodnie ze standardem Unicode, nasze małe litery "i" stają się "İ" (U + 0130 "Łacińska litera I z kropką nad"), gdy przenoszą się one do wielkich liter. Podobnie, nasza wielka litera "I" staje się "ı" (U + 0131 "Łacińska mała litera bez końca I"), gdy porusza się na małe litery.

2

Łącze dostarczone przez @Luixv zawiera szczegółowy opis problemu.

Podsumowanie jest takie, że jeśli zamierzasz przetestować swój kod tylko na jednym języku innym niż angielski, przetestuj go na tureckim.

Dzieje się tak dlatego, że w języku tureckim występują przypadki najbardziej skrajnych przypadków, z jakimi można spotkać się podczas lokalizacji, w tym "nietypowe" ciągi formatów i niestandardowe znaki (takie jak odmienne zasady wielkich liter dla i).

1

Jeff Atwood ma artykuł na blogu o tym samym, który jest pierwszym miejscem, z którym sam się zetknąłem. Podsumowując, próbując uruchomić aplikację pod tureckim ustawieniem regionalnym, można wykonać doskonały test urządzenia I18n.

oto Jeffs article

4

Tzw "Turcja Test" jest związane z internacjonalizacji oprogramowania. Jednym z problemów globalizacji/internacjonalizacji jest to, że formaty daty i czasu w różnych kulturach mogą się różnić na wielu poziomach (porządek dzień/miesiąc/rok, separator daty itp.).

Turcja ma również specjalne zasady dotyczące kapitalizacji, które mogą prowadzić do problemów. Na przykład turecki znak "i" jest częstym problemem dla wielu programów, które kapitalizują go w niewłaściwy sposób.

8

Piszemy daty mniejszych do większych jak DD.MM.YYYY: ' '28.10.2010

Używamy (kropka) separator dla tysięcy, a',' (przecinek) dla separatora dziesiętnego: 4.567,9

Mamy ö => O, C => C, S => S, g => g, U => U i najważniejsze i => i i i => i; innymi słowy, małe litery górnej części I są bez kropek, a wielkie litery dolnej litery i są kropkowane.

Ludzie mogą mieć bardzo stresujące czasy z powodu bezsensownych błędów spowodowanych przez powyższe zasady.

Jeśli Twój kod poprawnie działa w Turcji, prawdopodobnie zadziała w dowolnym miejscu.