53

コードのテストについて学んでいるときに、「The Turkey Test」という言葉に出くわしました。私はそれが何を意味するのか本当に分かりません。

トルコテストとは?なぜそう呼ばれるのですか?

4

6 に答える 6

41

トルコの問題は、ソフトウェアの国際化に関連しているか、単にさまざまな言語文化での不正行為に関連しています。

国によって、日付の書き方 (トルコでは 14.04.2008、米国では 2008 年 4 月 14 日)、数字 (ポーランドでは 123.45、米国では 123.45)、文字の大文字に関する規則 (たとえば、トルコの文字 i、I、および ı)。

Jeff Moserが以下で指摘したように、そのような問題の 1 つは、ToUpper()機能のバグを発見したトルコのユーザーによって指摘されました。以下のコメントに詳細があります。

ただし、問題はトルコと文字列変換に限定されません。

たとえば、ポーランドやその他の多くの国では、日付と数字の表記方法も異なります。

トルコ テストの Google 検索からのいくつかのリンク:

于 2009-04-28T09:39:51.850 に答える
21

ここでは、七面鳥のテストについて説明します

トルコのことは忘れてください。これはアメリカでも通用しません。大文字と小文字を区別しない比較が必要です。だからあなたは試してみてください:

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") になります。

于 2009-04-28T09:29:44.637 に答える
13

dd.MM.yyyy: 28.10.2010 のように、小さいものから大きいものへ日付を書きます。

3 桁ごとの区切りには「.」(ドット)、10 進数の区切りには「,」(コンマ) を使用します: 4.567,9

ö=>Ö、ç=>Ç、ş=>Ş、ğ=>Ğ、ü=>Ü、そして最も重要なのは ı=>I と i => İです。つまり、大文字の I の小文字にはドットがなく、小文字の i の大文字にはドットが付けられます。

上記のルールによって引き起こされる無意味なエラーのために、人々は非常にストレスの多い時間を過ごすことがあります.

コードがトルコで適切に動作する場合、おそらくどこでも動作します。

于 2010-10-28T18:54:23.183 に答える
4

いわゆる「トルコ テスト」は、ソフトウェアの国際化に関連しています。グローバリゼーション/国際化の問題の 1 つは、異なるカルチャの日付と時刻の形式が多くのレベル (日/月/年の順序、日付の区切り記号など) で異なる可能性があることです。

また、トルコには大文字の使用に関するいくつかの特別な規則があり、これが問題を引き起こす可能性があります。たとえば、トルコ語の「i」文字は、多くのプログラムでよくある問題であり、大文字を間違った方法で使用します。

于 2009-04-28T09:46:26.483 に答える
2

@Luixv が提供するリンクは、問題の包括的な説明を提供します。

要約すると、英語以外の 1 つのロケールのみでコードをテストする場合は、トルコ語でテストしてください。

これは、トルコ語には、「通常とは異なる」書式文字列や非標準文字 (i の異なる大文字化規則など) など、ローカライズで遭遇する可能性が高いほとんどのエッジ ケースのインスタンスがあるためです。

于 2009-04-28T09:42:29.253 に答える
1

Jeff Atwood のブログ記事に、私が最初に出会ったものがあります。要約すると、トルコ語ロケールでアプリケーションを実行しようとすることは、I18n の優れたテストになります。

ジェフの記事はこちら

于 2009-04-28T09:44:14.837 に答える