Какие существуют практики для модульного тестирования в зависимости от региона?

17

Недавно мы обнаружили проблему, связанную с локалью, в нашем приложении, и, хотя ее было легко исправить (как только мы выяснили, что происходит), у меня появилась команда, которая думает о методах модульного тестирования в этом отношении.

Мы хотели бы уладить эти проблемы раньше, в идеале, прежде чем они обнаружатся заказчиком, и мы хотим защитить себя от повторного появления ошибок, специфичных для локали, в будущем, но дублирование каждого модульного теста по крайней мере в одной другой культуре кажется большим накладные расходы.

Как вы или как вы подходите к многоязычному модульному тестированию?

Адам Лир
источник
1
Не хочешь рассказать подробнее о проблеме, которая у тебя была? Это звучит интересно, и я хотел бы узнать больше об этом.
Мчл
1
@Mchl Это была ошибка турецкой локали . У нас был некоторый код сравнения строк, который включал букву i.
Адам Лир

Ответы:

4

Как правило, вам не нужно дублировать каждый юнит-тест. Вы должны определить, что действительно зависит от локали (хороший контрольный список здесь ). Многие вещи, связанные с интернационализацией, подвергаются более высокому уровню тестирования, чем модульное тестирование.

Если вы имеете дело со строковыми данными, которые могут поступать в разных кодировках, то вы можете использовать «тестирование на основе данных», то есть передачу данных в разных кодировках в один и тот же метод тестирования. Для Java лучше всего подходит TestNG.

Другая возможная проблема - форматирование даты / времени и анализ. Большинство языков использует: для разделения элементов времени, но есть такие, которые используют точки, а бразильцы используют hm и s (12h15m30s). Это также может быть использовано для передачи данных в разных локалях - вам не нужно тестировать их все.

И тестирование GUI с языками справа налево обычно не является предметом модульного тестирования.

Суть в том, что вам нужно определить, какие данные в ваших модульных тестах зависят от конкретной локали, и использовать управляемое данными тестирование (поставщики данных), чтобы предоставить эти данные для ваших тестов.

Сергей Пожаров
источник
3

Вот несколько предложений:

  • Всегда развивайтесь на машине с локальными настройками, отличными от вашей основной целевой аудитории. Это поможет вам быстро найти ошибки, связанные с датами, валютой и каждой проблемой числового форматирования. Сделайте то же самое со своим сервером сборки, поместите его в Бразилии или Вьетнаме (не физически, а только в настройках).

  • Используйте акценты и специальные символы в заголовке теста, строках и т. Д. В модульных тестах. Наиболее распространенная проблема интернационализации, которую я получаю с программным обеспечением, которое я использую (а не с тем, которое я разрабатываю), связано с é и è или даже ç на французском. Поместите их в каждую строку, которую вы используете в своих тестах. Используйте общее слово, которое вы используете все время, какbrèç©

  • Не забудьте также использовать акценты и специальные диаграммы в путях . Visual Studio.NET сама по-прежнему имеет много проблем с этим! Вы должны получить доступ к созданию таких каталогов и читать / писать из них в ваших тестах.

  • Если вы используете Visual Studio .NET, в свойствах проекта в разделе « Анализ кода» включите правила глобализации . Наиболее распространенные проблемы генерируют предупреждение при компиляции.

  • Наймите иностранца в своей команде.


источник