コードのテストについて学んでいるときに、「The Turkey Test」という言葉に出くわしました。私はそれが何を意味するのか本当に分かりません。
トルコテストとは?なぜそう呼ばれるのですか?
コードのテストについて学んでいるときに、「The Turkey Test」という言葉に出くわしました。私はそれが何を意味するのか本当に分かりません。
トルコテストとは?なぜそう呼ばれるのですか?
トルコの問題は、ソフトウェアの国際化に関連しているか、単にさまざまな言語文化での不正行為に関連しています。
国によって、日付の書き方 (トルコでは 14.04.2008、米国では 2008 年 4 月 14 日)、数字 (ポーランドでは 123.45、米国では 123.45)、文字の大文字に関する規則 (たとえば、トルコの文字 i、I、および ı)。
Jeff Moserが以下で指摘したように、そのような問題の 1 つは、ToUpper()
機能のバグを発見したトルコのユーザーによって指摘されました。以下のコメントに詳細があります。
ただし、問題はトルコと文字列変換に限定されません。
たとえば、ポーランドやその他の多くの国では、日付と数字の表記方法も異なります。
トルコ テストの Google 検索からのいくつかのリンク:
トルコのことは忘れてください。これはアメリカでも通用しません。大文字と小文字を区別しない比較が必要です。だからあなたは試してみてください:
String.Compare(string,string,bool ignoreCase):
....
これらのいずれかが「トルコのテスト」に合格していますか?
チャンスじゃない!
理由: 「トルコ語 I」の問題に悩まされています。
多くの人が議論しているように、トルコ語の「私」は、ほとんどの言語とは異なる振る舞いをします。Unicode 標準に従って、小文字の "i" は大文字に移動すると "İ" (U+0130 "Latin Capital Letter I With Dot Above") になります。同様に、大文字の "I" は小文字に移動すると "ı" (U+0131 "Latin Small Letter Dotless I") になります。
dd.MM.yyyy: 28.10.2010 のように、小さいものから大きいものへ日付を書きます。
3 桁ごとの区切りには「.」(ドット)、10 進数の区切りには「,」(コンマ) を使用します: 4.567,9
ö=>Ö、ç=>Ç、ş=>Ş、ğ=>Ğ、ü=>Ü、そして最も重要なのは ı=>I と i => İです。つまり、大文字の I の小文字にはドットがなく、小文字の i の大文字にはドットが付けられます。
上記のルールによって引き起こされる無意味なエラーのために、人々は非常にストレスの多い時間を過ごすことがあります.
コードがトルコで適切に動作する場合、おそらくどこでも動作します。
いわゆる「トルコ テスト」は、ソフトウェアの国際化に関連しています。グローバリゼーション/国際化の問題の 1 つは、異なるカルチャの日付と時刻の形式が多くのレベル (日/月/年の順序、日付の区切り記号など) で異なる可能性があることです。
また、トルコには大文字の使用に関するいくつかの特別な規則があり、これが問題を引き起こす可能性があります。たとえば、トルコ語の「i」文字は、多くのプログラムでよくある問題であり、大文字を間違った方法で使用します。
@Luixv が提供するリンクは、問題の包括的な説明を提供します。
要約すると、英語以外の 1 つのロケールのみでコードをテストする場合は、トルコ語でテストしてください。
これは、トルコ語には、「通常とは異なる」書式文字列や非標準文字 (i の異なる大文字化規則など) など、ローカライズで遭遇する可能性が高いほとんどのエッジ ケースのインスタンスがあるためです。
Jeff Atwood のブログ記事に、私が最初に出会ったものがあります。要約すると、トルコ語ロケールでアプリケーションを実行しようとすることは、I18n の優れたテストになります。
ジェフの記事はこちら