2009-04-28 13 views
28

Me encontré con la palabra 'The Turkey Test' mientras aprendía sobre las pruebas de código. No sé realmente lo que significa.¿Qué es la prueba de Turquía?

¿Qué es la prueba de Turquía? ¿Por qué se llama así?

+3

Creo que la mejor explicación de la prueba de Turquía no es la publicación de Jeff en sí, sino los primeros dos comentarios en la publicación: http://www.codinghorror.com/blog/archives/001075.html#comments –

Respuesta

16

El problema de Turquía está relacionado con la internacionalización del software o simplemente con su mala conducta en varias culturas lingüísticas.

En varios países hay diferentes estándares de fechas de escritura (14.04.2008 en Turquía y 14/04/2008 en EE. UU.), Números (es decir, 123,45 en Polonia y 123.45 en EE. UU.) Y reglas sobre el carácter de mayúsculas (como en Turquía con letras i, I y ı).

Como Jeff Moser señalado a continuación, el problema fue nombrado por el usuario turco que encontró por primera vez el error en la función ToUpper(). Hay más detalles en los comentarios a continuación.

Sin embargo, el problema no se limita a Turquía y a las conversiones de cadenas.

En muchas fechas y números de otros países Polonia y también se escriben con diferentes maneras y problemas relacionados con la fecha o números de interpretación también se llaman problema Turquía. Ya se dan

Enlaces desde Google búsqueda de Turquía Problema con detalles:

+6

Lo llamé "The Turkey Test" porque un usuario en Turquía fue el primero en encontrar un error en nuestro código que se desencadenó por un error ToUpper() que describí en la publicación. –

+4

"No tengo idea de por qué el problema se ha llamado problema de Turquía, porque en Polonia y en muchos otros países europeos las fechas y los números también se escriben con diferentes maneras". Se trata principalmente de mayúsculas/minúsculas de la letra 'İ'. Por ejemplo, la herramienta Microsoft Service Trace Viewer está sufriendo este problema. Cuando desea abrir un archivo de registro en la carpeta Inetpub, lo que obtiene es un mensaje de error que dice "no se puede abrir 'c: \ iNetpub \ ...' – idursun

+3

Es porque las reglas de mayúsculas y minúsculas de la letra i/I son una de un puñado de ejemplos prominentes de donde el manejo adecuado de cadenas internacionales tiene una sutileza refinada que nadie espera, y por lo tanto tiende a romper el código de maneras muy dolorosas. La letra i es muy común tanto en inglés como en turco, pero necesita saber qué idioma está utilizando para convertirlo correctamente. Esto es especialmente doloroso cuando tienes el escenario bastante común de palabras no turcas que se usan en un contexto turco: ¡necesitas tener configuraciones de idioma por cadena! El formato de fecha por el contrario es un juego de niños. – gtd

15

Here is described the turkey test

Olvídate de Turquía, esto ni siquiera pasará en los EE.UU.. Necesita una comparación insensible a mayúsculas y minúsculas. Por lo que tratar:

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

....

¿Alguna de estas pass "La prueba de Turquía?"

¡No hay oportunidad!

Motivo: Ha sido golpeado con el problema "Turco I".

Según lo discutido por muchas personas, la "I" en turco se comporta de manera diferente que en la mayoría de los idiomas. Según el estándar Unicode, nuestra "i" minúscula se convierte en "İ" (U + 0130 "Letra mayúscula latina I con punto arriba") cuando se mueve a mayúscula. De manera similar, nuestra "I" mayúscula se convierte en "ı" (U + 0131 "letra pequeña latina Dotless I") cuando se mueve a minúscula.

2

El enlace proporcionado por @Luixv ofrece una descripción exhaustiva del problema.

El resumen es que si vas a probar tu código en una configuración regional que no está en inglés, pruébala en turco.

Esto se debe a que el turco tiene instancias de la mayoría de los casos extremos que es probable que encuentre con la localización, incluidas cadenas de formato "inusuales" y caracteres no estándar (como reglas de mayúsculas diferentes para i).

1

Jeff Atwood tiene un artículo de blog sobre el mismo que es el primer lugar en el que me encontré por mi cuenta. , en resumen, intentar ejecutar su aplicación en una configuración regional turca es una excelente prueba de su I18n.

aquí es Jeffs article

4

La denominada "Turquía Test" está relacionado con la internacionalización de software. Un problema de la globalización/internacionalización es que los formatos de fecha y hora en diferentes culturas pueden diferir en muchos niveles (orden día/mes/año, separador de fecha, etc.).

Además, Turquía tiene algunas reglas especiales para el uso de mayúsculas, que pueden generar problemas. Por ejemplo, el carácter "i" turco es un problema común para muchos programas que lo capitalizan de forma incorrecta.

8

Escribimos fechas más pequeño a más grande como dd.MM.yyyy: ' '28.10.2010

Utilizamos (punto) para el separador de miles, y',' (coma) para el separador decimal: 4.567,9

Tenemos ö => O, C => C, S => S, g => g, U => U, y lo más importante i => I y i => I; en otras palabras, la minúscula de la I superior es sin puntos y la mayúscula de la i inferior está punteada.

Las personas pueden tener tiempos muy estresantes debido a errores sin sentido causados ​​por las reglas anteriores.

Si su código funciona correctamente en Turquía, probablemente funcione en cualquier lugar.

Cuestiones relacionadas