Тестирование мультиязычного сервиса a la russe
TRANSCRIPT
![Page 2: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/2.jpg)
![Page 3: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/3.jpg)
Обо мне
• Ведущий тестировщик web-продуктов
• 4 года в 2ГИС
• 8 лет в тестировании
• Сообщество тестировщиков Сибири
3
![Page 4: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/4.jpg)
![Page 5: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/5.jpg)
Присказка:
О чем я расскажу
• Проблемы
• Решения
• Примеры
![Page 6: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/6.jpg)
Определения
• Интернационализация (i18n) — адаптация продукта к переводу
• Локализация (l10n) — перевод продукта на конкретный язык
• Интерфейс,
• Функционал,
• Контент, ...
6
![Page 7: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/7.jpg)
Определения
• Интернационализация (i18n) — адаптация продукта к переводу
• Локализация (l10n) — перевод продукта на конкретный язык
• Локаль — пакет переводов для конкретного языка
• Словарь — файл переводов текстов
7
![Page 8: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/8.jpg)
Сказ первый:
Перевод с нуля
![Page 9: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/9.jpg)
Перевести и протестировать!
9
![Page 10: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/10.jpg)
1. Когда подключать тестирование?
• На этапе выбора инструмента
10
![Page 11: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/11.jpg)
Удобно тестировать
Требования от QA к разработке:
• Простое добавление / удаление новой локали
• Человеко-понятный словарь
• Возможность редактировать словарь
11
![Page 12: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/12.jpg)
Пример
C учетом требований от QA:
• gettext
• .po (Portable Object) + утилиты
• 1 пакет, 1 строка в config, 1 команда
12
![Page 13: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/13.jpg)
2. Где взять данные?
• Используем то, что есть
• Псевдолокализация (имитация переводов)
13
![Page 14: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/14.jpg)
Пример
Русская локаль —>
• Текст + три символа
• Картинки на 180°
• Ссылки .ru —> .it
—> Албанский
14
![Page 15: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/15.jpg)
3. Как проверить грамотность UI?
• Делегируем носителям языка
15
![Page 16: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/16.jpg)
Пример
Кому делегируем?
• Заказчик
• Команда переводчиков
16
![Page 17: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/17.jpg)
Переводя с нуля...
• Тестировать должно быть удобно
• Используйте псевдолокализацию
• Делегируйте проверку грамотности
17
![Page 18: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/18.jpg)
Сказ второй:
Переводим
автотесты
![Page 19: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/19.jpg)
1. В каком объеме можемпереиспользовать тесты?
• Определяем различия
19
![Page 20: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/20.jpg)
Сравниваем тесты и различия
• Тесты на общий функционал отлаживаем
• Оставшиеся — для исходной локали
• Пишем новые
20
![Page 21: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/21.jpg)
Пример
21
![Page 22: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/22.jpg)
![Page 23: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/23.jpg)
2. Как делить входные / выходныеданные?
• Собираем чтобы разделить
23
![Page 24: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/24.jpg)
Собираем чтобы разделить
• Параметризуем
• Собираем в отдельный класс
• Каждой локали — свой класс
24
![Page 25: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/25.jpg)
Пример. Параметризуем вход/выход
public function testSearch()
{
this->searchForm (array(
'what' => 'Музей',
'where' => 'Новосибирск')
);
}
01.
02.
03.
04.
05.
06.
07.
25
![Page 26: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/26.jpg)
Пример. Параметризуем вход/выход
public function testSearch()
{
this->searchForm (array(
'what' => $this->locale->getData('what_request'),
'where' => $this->locale->getData('where_request'))
);
}
01.
02.
03.
04.
05.
06.
07.
26
![Page 27: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/27.jpg)
Пример. Параметризуем вход/выход
public function testSearch()
{
this->searchForm (array(
'what' => $this->locale->getData('what_request'),
'where' => $this->locale->getData('where_request'))
);
}
01.
02.
03.
04.
05.
06.
07.
27
![Page 28: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/28.jpg)
Пример. Создаем словарь
<?php
$msg = array();
$msg['what_request'] = 'Музей';
$msg['where_request'] = 'Новосибирск';
$msg['search_buttom'] = 'Найти';
return $msg;
?>
01.
02.
03.
04.
05.
06.
07.
28
![Page 29: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/29.jpg)
Переводя автотесты...
• Переиспользуйте тесты
• Параметризуйте входные и
выходные данные
29
![Page 30: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/30.jpg)
Сказ третий:
Поддержка
![Page 31: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/31.jpg)
1. Как успеть протестировать, еслипереводов нет?
• Встраиваем переводы в процесс
31
![Page 32: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/32.jpg)
Встраиваем переводы в процесс
• Договариваемся о сроках и ответственностях
• План Б
32
![Page 33: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/33.jpg)
Пример. Процесс
33
![Page 34: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/34.jpg)
Пример. План Б
• Сами переводим на английский
• Откладываем функционал
34
![Page 35: Тестирование мультиязычного сервиса a la Russe](https://reader036.vdocuments.net/reader036/viewer/2022062523/58ecc4621a28ab946f8b468b/html5/thumbnails/35.jpg)
И жили они...
• Перевод с нуля
• Перевод АТ
• Поддержка