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?
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?
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:
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. –
"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
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
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.
Łą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).
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
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.
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.
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 –