SlideShare a Scribd company logo
1 of 36
Download to read offline
Тестирование
мультиязычного 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_

More Related Content

What's hot

Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...Moscow.pm
 
Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк
Введение в реверс-инжиниринг вредоносного ПО - Сергей ХарюкВведение в реверс-инжиниринг вредоносного ПО - Сергей Харюк
Введение в реверс-инжиниринг вредоносного ПО - Сергей ХарюкHackIT Ukraine
 
Не верь никому или разработка эффективных приложений (Как писать по настоящем...
Не верь никому или разработка эффективных приложений (Как писать по настоящем...Не верь никому или разработка эффективных приложений (Как писать по настоящем...
Не верь никому или разработка эффективных приложений (Как писать по настоящем...Moscow.pm
 
Статический анализатор кода для InterSystems Caché Object Script
Статический анализатор кода для InterSystems Caché Object ScriptСтатический анализатор кода для InterSystems Caché Object Script
Статический анализатор кода для InterSystems Caché Object ScriptInterSystems
 
[ONSEC] PHP unserialize() _SESSION and Dynamics
[ONSEC] PHP unserialize() _SESSION and Dynamics[ONSEC] PHP unserialize() _SESSION and Dynamics
[ONSEC] PHP unserialize() _SESSION and Dynamicsd0znp
 
Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2Technopark
 
PHP basic
PHP basicPHP basic
PHP basicNoveo
 
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Andrew Mayorov
 
Игорь Ходырев — Введение в Ruby, gem’ы и другие бриллианты.
Игорь Ходырев — Введение в Ruby, gem’ы и другие бриллианты.Игорь Ходырев — Введение в Ruby, gem’ы и другие бриллианты.
Игорь Ходырев — Введение в Ruby, gem’ы и другие бриллианты.DataArt
 
Web осень 2013 лекция 9
Web осень 2013 лекция 9Web осень 2013 лекция 9
Web осень 2013 лекция 9Technopark
 
QA Fest 2017. Иван Цыганов. Не смешите мой coverage
QA Fest 2017. Иван Цыганов. Не смешите мой coverageQA Fest 2017. Иван Цыганов. Не смешите мой coverage
QA Fest 2017. Иван Цыганов. Не смешите мой coverageQAFest
 

What's hot (13)

Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...
 
Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк
Введение в реверс-инжиниринг вредоносного ПО - Сергей ХарюкВведение в реверс-инжиниринг вредоносного ПО - Сергей Харюк
Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк
 
Не верь никому или разработка эффективных приложений (Как писать по настоящем...
Не верь никому или разработка эффективных приложений (Как писать по настоящем...Не верь никому или разработка эффективных приложений (Как писать по настоящем...
Не верь никому или разработка эффективных приложений (Как писать по настоящем...
 
Статический анализатор кода для InterSystems Caché Object Script
Статический анализатор кода для InterSystems Caché Object ScriptСтатический анализатор кода для InterSystems Caché Object Script
Статический анализатор кода для InterSystems Caché Object Script
 
[ONSEC] PHP unserialize() _SESSION and Dynamics
[ONSEC] PHP unserialize() _SESSION and Dynamics[ONSEC] PHP unserialize() _SESSION and Dynamics
[ONSEC] PHP unserialize() _SESSION and Dynamics
 
Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2
 
PHP basic
PHP basicPHP basic
PHP basic
 
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"
 
Игорь Ходырев — Введение в Ruby, gem’ы и другие бриллианты.
Игорь Ходырев — Введение в Ruby, gem’ы и другие бриллианты.Игорь Ходырев — Введение в Ruby, gem’ы и другие бриллианты.
Игорь Ходырев — Введение в Ruby, gem’ы и другие бриллианты.
 
Приручаем linux-консоль
Приручаем linux-консольПриручаем linux-консоль
Приручаем linux-консоль
 
Web осень 2013 лекция 9
Web осень 2013 лекция 9Web осень 2013 лекция 9
Web осень 2013 лекция 9
 
About Python
About PythonAbout Python
About Python
 
QA Fest 2017. Иван Цыганов. Не смешите мой coverage
QA Fest 2017. Иван Цыганов. Не смешите мой coverageQA Fest 2017. Иван Цыганов. Не смешите мой coverage
QA Fest 2017. Иван Цыганов. Не смешите мой coverage
 

Viewers also liked

Cuzo, Peru
Cuzo, PeruCuzo, Peru
Cuzo, Perucarlaud
 
Shot list for 500 miles music video
Shot list for 500 miles music videoShot list for 500 miles music video
Shot list for 500 miles music videomw4684
 
Dragos Marin Recommendation Letter
Dragos Marin Recommendation LetterDragos Marin Recommendation Letter
Dragos Marin Recommendation LetterDiana Vrejoiu
 
Information Storage Associate Version 2 (EMCISA) certificate
Information Storage Associate Version 2 (EMCISA) certificateInformation Storage Associate Version 2 (EMCISA) certificate
Information Storage Associate Version 2 (EMCISA) certificateChristy Mathew
 
Platform Engineer, CLARiiON Specialist Version 6.0 (EMCPE) certificate
Platform Engineer, CLARiiON Specialist Version 6.0 (EMCPE) certificatePlatform Engineer, CLARiiON Specialist Version 6.0 (EMCPE) certificate
Platform Engineer, CLARiiON Specialist Version 6.0 (EMCPE) certificateChristy Mathew
 
Mijn Locatie Kinderopvang december 2015
Mijn Locatie Kinderopvang december 2015Mijn Locatie Kinderopvang december 2015
Mijn Locatie Kinderopvang december 2015Sabine van de Wiel
 
My hobbies
My hobbiesMy hobbies
My hobbiesccano193
 
(180)largo(832)draghi contrataca
(180)largo(832)draghi contrataca(180)largo(832)draghi contrataca
(180)largo(832)draghi contratacaManfredNolte
 
CÓMO CONSEGUIR LAS PRIMERAS VENTAS DE MI PROYECTO DE EMPRESA
CÓMO CONSEGUIR LAS PRIMERAS VENTAS DE MI PROYECTO DE EMPRESACÓMO CONSEGUIR LAS PRIMERAS VENTAS DE MI PROYECTO DE EMPRESA
CÓMO CONSEGUIR LAS PRIMERAS VENTAS DE MI PROYECTO DE EMPRESAJavier López Jordán
 
Storage Administrators, CLARiiON Solutions Expert Version 5.0 (EMCSAe) certif...
Storage Administrators, CLARiiON Solutions Expert Version 5.0 (EMCSAe) certif...Storage Administrators, CLARiiON Solutions Expert Version 5.0 (EMCSAe) certif...
Storage Administrators, CLARiiON Solutions Expert Version 5.0 (EMCSAe) certif...Christy Mathew
 
Liliana Croitoru Recommendation Letter
Liliana Croitoru Recommendation LetterLiliana Croitoru Recommendation Letter
Liliana Croitoru Recommendation LetterDiana Vrejoiu
 

Viewers also liked (20)

Cuzo, Peru
Cuzo, PeruCuzo, Peru
Cuzo, Peru
 
Shot list for 500 miles music video
Shot list for 500 miles music videoShot list for 500 miles music video
Shot list for 500 miles music video
 
Dragos Marin Recommendation Letter
Dragos Marin Recommendation LetterDragos Marin Recommendation Letter
Dragos Marin Recommendation Letter
 
Information Storage Associate Version 2 (EMCISA) certificate
Information Storage Associate Version 2 (EMCISA) certificateInformation Storage Associate Version 2 (EMCISA) certificate
Information Storage Associate Version 2 (EMCISA) certificate
 
Animals proverbs
Animals proverbsAnimals proverbs
Animals proverbs
 
Platform Engineer, CLARiiON Specialist Version 6.0 (EMCPE) certificate
Platform Engineer, CLARiiON Specialist Version 6.0 (EMCPE) certificatePlatform Engineer, CLARiiON Specialist Version 6.0 (EMCPE) certificate
Platform Engineer, CLARiiON Specialist Version 6.0 (EMCPE) certificate
 
Presentation_NEW.PPTX
Presentation_NEW.PPTXPresentation_NEW.PPTX
Presentation_NEW.PPTX
 
Mijn Locatie Kinderopvang december 2015
Mijn Locatie Kinderopvang december 2015Mijn Locatie Kinderopvang december 2015
Mijn Locatie Kinderopvang december 2015
 
On_The_Spot_Award
On_The_Spot_AwardOn_The_Spot_Award
On_The_Spot_Award
 
Peru
PeruPeru
Peru
 
My hobbies
My hobbiesMy hobbies
My hobbies
 
Mule soa
Mule soaMule soa
Mule soa
 
Artificial Neuron network
Artificial Neuron network Artificial Neuron network
Artificial Neuron network
 
FC Dynamo Kyev
FC Dynamo KyevFC Dynamo Kyev
FC Dynamo Kyev
 
(180)largo(832)draghi contrataca
(180)largo(832)draghi contrataca(180)largo(832)draghi contrataca
(180)largo(832)draghi contrataca
 
CÓMO CONSEGUIR LAS PRIMERAS VENTAS DE MI PROYECTO DE EMPRESA
CÓMO CONSEGUIR LAS PRIMERAS VENTAS DE MI PROYECTO DE EMPRESACÓMO CONSEGUIR LAS PRIMERAS VENTAS DE MI PROYECTO DE EMPRESA
CÓMO CONSEGUIR LAS PRIMERAS VENTAS DE MI PROYECTO DE EMPRESA
 
Sourav CV
Sourav CVSourav CV
Sourav CV
 
Storage Administrators, CLARiiON Solutions Expert Version 5.0 (EMCSAe) certif...
Storage Administrators, CLARiiON Solutions Expert Version 5.0 (EMCSAe) certif...Storage Administrators, CLARiiON Solutions Expert Version 5.0 (EMCSAe) certif...
Storage Administrators, CLARiiON Solutions Expert Version 5.0 (EMCSAe) certif...
 
Liliana Croitoru Recommendation Letter
Liliana Croitoru Recommendation LetterLiliana Croitoru Recommendation Letter
Liliana Croitoru Recommendation Letter
 
P pt ti
P pt tiP pt ti
P pt ti
 

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

Юлия Ковалёва. Fscheck — альтернативный путь для unit тестов
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестовЮлия Ковалёва. Fscheck — альтернативный путь для unit тестов
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестовMskDotNet Community
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3Eugeniy Tyumentcev
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3etyumentcev
 
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...Mail.ru Group
 
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)Ontico
 
Cобачники против кинофобов
Cобачники против кинофобовCобачники против кинофобов
Cобачники против кинофобовLidiya Myalkina
 
Лекция 11. Тестирование.
Лекция 11. Тестирование.Лекция 11. Тестирование.
Лекция 11. Тестирование.Roman Brovko
 
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)Dmitry Kornev
 
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)Bitworks Software
 
Learning from Swift sources, Иван Сметанин
Learning from Swift sources, Иван СметанинLearning from Swift sources, Иван Сметанин
Learning from Swift sources, Иван СметанинMail.ru Group
 
Postman
PostmanPostman
PostmaniThink
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesPlatonov Sergey
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesPlatonov Sergey
 
Выжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим ГопейВыжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим ГопейEatDog
 
Let's Talk About Junit 5
Let's Talk About Junit 5Let's Talk About Junit 5
Let's Talk About Junit 5SQALab
 
Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Pavel Egorov
 
Анастасия Бордонос - Проектирование тестов
Анастасия Бордонос - Проектирование тестовАнастасия Бордонос - Проектирование тестов
Анастасия Бордонос - Проектирование тестовYandex
 

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

Юлия Ковалёва. Fscheck — альтернативный путь для unit тестов
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестовЮлия Ковалёва. Fscheck — альтернативный путь для unit тестов
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестов
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
 
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
 
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
 
Cобачники против кинофобов
Cобачники против кинофобовCобачники против кинофобов
Cобачники против кинофобов
 
Лекция 11. Тестирование.
Лекция 11. Тестирование.Лекция 11. Тестирование.
Лекция 11. Тестирование.
 
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
 
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
 
Learning from Swift sources, Иван Сметанин
Learning from Swift sources, Иван СметанинLearning from Swift sources, Иван Сметанин
Learning from Swift sources, Иван Сметанин
 
Postman
PostmanPostman
Postman
 
PowerShell
PowerShellPowerShell
PowerShell
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templates
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templates
 
Algo 00
Algo 00Algo 00
Algo 00
 
Рекурсия. Поиск
Рекурсия. ПоискРекурсия. Поиск
Рекурсия. Поиск
 
Выжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим ГопейВыжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим Гопей
 
Let's Talk About Junit 5
Let's Talk About Junit 5Let's Talk About Junit 5
Let's Talk About Junit 5
 
Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1
 
Анастасия Бордонос - Проектирование тестов
Анастасия Бордонос - Проектирование тестовАнастасия Бордонос - Проектирование тестов
Анастасия Бордонос - Проектирование тестов
 

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