2009-04-28 9 views
28

Ich stieß auf das Wort "The Turkey Test", während ich über Code-Tests lernte. Ich weiß nicht wirklich was es bedeutet.Was ist der Türkei-Test?

Was ist der Türkei-Test? Warum heißt es so?

+3

Ich denke, die beste Erklärung der Türkei-Test ist nicht Jeffs Beitrag selbst, aber die ersten beiden Kommentare unter dem Post: http://www.codinghorror.com/blog/archives/001075.html#comments –

Antwort

16

Das Problem der Türkei hängt mit der Internationalisierung der Software oder einfach mit ihrem Fehlverhalten in verschiedenen Sprachkulturen zusammen.

In verschiedenen Ländern gibt es unterschiedliche Standards für Schreibtermine (14.04.2008 in der Türkei und 14.04.2008 in den USA), Zahlen (zB 123,45 in Polen und 123,45 in den USA) und Regeln für die Oberklasse (wie in der Türkei mit Buchstaben I, I und I).

Als Jeff Moser unten zeigte das Problem wurde von türkischen Benutzer, der zuerst den Fehler in ToUpper() Funktion gefunden. Es gibt mehr Details in den Kommentaren unten.

Das Problem ist jedoch nicht auf die Türkei und String-Konvertierungen beschränkt.

In Polen und vielen anderen Ländern Daten und Zahlen sind auch mit unterschiedlicher Weise und Problemen im Zusammenhang mit Datum oder Zahlen Interpretation geschrieben werden, auch Türkei Problem genannt.

Links von Google Suche nach Türkei Problem Details sind bereits gegeben:

+6

Ich nannte es "Der Türkei-Test", weil ein Benutzer in der Türkei als Erster einen Fehler in unserem Code gefunden hat, der durch einen ToUpper() -Fehler ausgelöst wurde, den ich im Beitrag beschrieben habe. –

+4

"Ich habe keine Ahnung, warum das Problem Türkei-Problem genannt wurde, denn in Polen und vielen anderen europäischen Ländern werden Daten und Zahlen auch auf andere Weise geschrieben." Es handelt sich hauptsächlich um Groß-/Kleinschreibung des Buchstabens 'İ'. Zum Beispiel leidet das Microsoft Service Trace Viewer-Tool unter diesem Problem. Wenn Sie eine Protokolldatei unter dem Inetpub-Ordner öffnen möchten, erhalten Sie eine Fehlermeldung, dass "'c: \ inetpub \ ...' nicht geöffnet werden kann" – idursun

+3

Es liegt daran, dass die türkischen Fallregeln des Buchstabens i/I eins sind von einer Handvoll prominenter Beispiele, wo das richtige internationale String-Handling eine feinkörnige Subtilität hat, die niemand erwartet, und so dazu neigt, Code auf sehr schmerzhafte Weise zu brechen. Der Buchstabe i ist sowohl in Englisch als auch in Türkisch sehr gebräuchlich, aber Sie müssen wissen, welche Sprache Sie richtig verwenden. Dies ist besonders schmerzhaft, wenn Sie das übliche Szenario haben, dass nicht-türkische Wörter in einem türkischen Kontext verwendet werden - Sie müssen sprachspezifische Einstellungen vornehmen! Die Datumsformatierung ist dagegen ein Kinderspiel. – gtd

15

Here is described the turkey test

über die Türkei vergessen, dies nicht einmal in den USA passieren. Sie benötigen einen Vergleich zwischen Groß- und Kleinschreibung. So können Sie versuchen:

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

....

eines dieser Pass Do "Die Türkei-Test?"

Keine Chance!

Grund: Sie wurden mit dem "Türkisch I" Problem getroffen.

Wie von vielen Leuten diskutiert, verhält sich das "Ich" auf Türkisch anders als in den meisten Sprachen. Gemäß dem Unicode-Standard wird unser Kleinbuchstabe "i" zu "I" (U + 0130 "Lateinischer Großbuchstabe I mit Punkt darüber"), wenn es sich in Großbuchstaben bewegt. Ähnlich wird unser Großbuchstabe "I" zu "ı" (U + 0131 "Lateinischer Kleinbuchstabe Dotless I"), wenn es sich in Kleinbuchstaben bewegt.

2

Der Link von @Luixv bietet eine umfassende Beschreibung des Problems.

Die Zusammenfassung ist, dass, wenn Sie Ihren Code auf nur einem nicht-englischen Gebietsschema testen möchten, testen Sie es auf Türkisch.

Dies liegt daran, dass das Türkisch Instanzen der meisten Randfälle enthält, mit denen Sie wahrscheinlich konfrontiert werden, einschließlich "ungewöhnlicher" Formatzeichenfolgen und nicht standardmäßiger Zeichen (z. B. unterschiedliche Großbuchstabierregeln für i).

1

Jeff Atwood hat einen Blog-Artikel über das gleiche, das ist der erste Ort, an dem ich selbst darauf stieß. in Zusammenfassung der Versuch, Ihre Anwendung unter einem türkischen Gebietsschema auszuführen, ist ein ausgezeichneter Test Ihres I18n.

hier jeffs article

4

Die so genannte "Türkei Test" Software Internationalisierung in Zusammenhang steht. Ein Problem der Globalisierung/Internationalisierung besteht darin, dass Datums- und Uhrzeitformate in verschiedenen Kulturen auf vielen Ebenen (Tag/Monat/Jahr-Reihenfolge, Datumstrennzeichen usw.) unterschiedlich sein können.

Auch die Türkei hat einige spezielle Regeln für die Großschreibung, die zu Problemen führen können. Zum Beispiel ist das türkische "i" -Zeichen ein häufiges Problem für viele Programme, die es auf eine falsche Art und Weise nutzen.

8

Wir schreiben Daten kleiner größer wie dd.MM.yyyy: ' '28.10.2010

Wir verwenden (dot) für Tausendertrennzeichen, und',' (Komma) für Dezimaltrennzeichens: 4.567,9

Wir haben ö => O, C => C, S => S, g => g, ü => ü und vor allem i => I und i => I; mit anderen Worten, der Kleinbuchstabe des oberen I ist punktlos und der Großbuchstabe des unteren i ist punktiert.

Menschen können sehr stressige Zeiten wegen bedeutungsloser Fehler haben, die durch die obigen Regeln verursacht werden.

Wenn Ihr Code ordnungsgemäß in der Türkei läuft, wird er wahrscheinlich überall funktionieren.