Тестирование
мультиязычного web-сервиса
a la Russe
Писчасова Татьяна

2gis.ru
3

Обо мне
• Ведущий тестировщик web-продуктов
• 4 года в 2ГИС
• 8 лет в тестировании
• Сообщество тестировщиков Сибири
Присказка:

О чем я расскажу
• Проблемы
• Решения
• Примеры
6

Определения
• Интернационализация (i18n) — адаптация продукта к переводу
• Локализация (l10n) — перевод продукта на конкретный язык
• Интерфейс,
• Функционал,
• Контент, ...
7

Определения
• Интернационализация (i18n) — адаптация продукта к переводу
• Локализация (l10n) — перевод продукта на конкретный язык
• Локаль — пакет переводов для конкретного языка
• Словарь — файл переводов текстов
Сказ первый:

Перевод с нуля
9

Перевести и протестировать!
10

1. Когда подключать тестирование?
• На этапе выбора инструмента
11

Удобно тестировать
Требования от QA к разработке:
• Простое добавление / удаление новой локали
• Человеко-понятный словарь
• Возможность редактировать словарь
12

Пример
C учетом требований от QA:
• gettext
• .po (Portable Object) + утилиты
• 1 пакет, 1 строка в config, 1 команда
13

2. Где взять данные?
• Используем то, что есть
• Псевдолокализация (имитация переводов)
14

Пример
Русская локаль —>
• Текст + три символа
• Картинки на 180°
• Ссылки .ru —> .it

—> Албанский
15

3. Как проверить грамотность UI?
• Делегируем носителям языка
16

Пример
Кому делегируем?
• Заказчик
• Команда переводчиков
17

Переводя с нуля...
• Тестировать должно быть удобно
• Используйте псевдолокализацию
• Делегируйте проверку грамотности
Сказ второй:

Переводим
автотесты
19

1. В каком объеме можем
переиспользовать тесты?
• Определяем различия
20

Сравниваем тесты и различия
• Тесты на общий функционал отлаживаем
• Оставшиеся — для исходной локали
• Пишем новые
21

Пример
23

2. Как делить входные / выходные
данные?
• Собираем чтобы разделить
24

Собираем чтобы разделить
• Параметризуем
• Собираем в отдельный класс
• Каждой локали — свой класс
25

Пример. Параметризуем вход/выход
0 .p b i f n t o t s S a c (
1 ulc ucin eterh)
0 .{
2
0 .t i - s a c F r ( r a (
3 hs>erhom ary
0.
4

' h t = ' у е ',
wa' > Мзй

0.
5

' h r ' = ' о о и и с ')
wee > Нвсбрк

0.
6
0 .}
7

)
;
26

Пример. Параметризуем вход/выход
0 .p b i f n t o t s S a c (
1 ulc ucin eterh)
0 .{
2
0 .t i - s a c F r ( r a (
3 hs>erhom ary
0.
4

' h t = $ h s > o a e > e D t (' h t r q e t ,
w a ' > t i - l c l - g t a a w a _ e u s ')

0.
5

' h r ' = $ h s > o a e > e D t (' h r _ e u s ')
wee > ti-lcl-gtaa weerqet )

0.
6

)
;

0 .}
7
27

Пример. Параметризуем вход/выход
0 .p b i f n t o t s S a c (
1 ulc ucin eterh)
0 .{
2
0 .t i - s a c F r ( r a (
3 hs>erhom ary
0.
4

' h t = $ h s >l c l - g t a a( w a _ e u s ' ,
wa' > ti- oae>eDt 'htrqet)

0.
5

' h r ' = $ h s >l c l - g t a a( w e e r q e t )
wee > ti- oae>eDt 'hr_eus')

0.
6

)
;

0 .}
7
28

Пример. Создаем словарь
0 .< p p
1 ?h
0 .$ s = a r y )
2 mg
ra(;
0 .$ s ' h t r q e t ] = ' у е ';
3 m g[ w a _ e u s '
Мзй
0 .$ s ' h r _ e u s ' = ' о о и и с ';
4 m g[ w e e r q e t ]
Нвсбрк
0 .$ s [ s a c _ u t m ] = ' а т '
5 mg'erhbto'
Нйи;
0 .r t r $ s ;
6 eun mg
0 .?
7 >
29

Переводя автотесты...
• Переиспользуйте тесты
• Параметризуйте входные и
выходные данные
Сказ третий:

Поддержка
31

1. Как успеть протестировать, если
переводов нет?
• Встраиваем переводы в процесс
32

Встраиваем переводы в процесс
• Договариваемся о сроках и ответственностях
• План Б
33

Пример. Процесс
34

Пример. План Б
• Сами переводим на английский
• Откладываем функционал
И жили они...
• Перевод с нуля
• Перевод АТ
• Поддержка
Вопросы?
• Писчасова Татьяна
• t.pischasova@2gis.ru
• @stricky_

Тестирование мультиязычного сервиса a la Russe