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

Preview:

Citation preview

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

2gis.ru

Обо мне

• Ведущий тестировщик web-продуктов

• 4 года в 2ГИС

• 8 лет в тестировании

• Сообщество тестировщиков Сибири

3

Присказка:

О чем я расскажу

• Проблемы

• Решения

• Примеры

Определения

• Интернационализация (i18n) — адаптация продукта к переводу

• Локализация (l10n) — перевод продукта на конкретный язык

• Интерфейс,

• Функционал,

• Контент, ...

6

Определения

• Интернационализация (i18n) — адаптация продукта к переводу

• Локализация (l10n) — перевод продукта на конкретный язык

• Локаль — пакет переводов для конкретного языка

• Словарь — файл переводов текстов

7

Сказ первый:

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

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

9

1. Когда подключать тестирование?

• На этапе выбора инструмента

10

Удобно тестировать

Требования от QA к разработке:

• Простое добавление / удаление новой локали

• Человеко-понятный словарь

• Возможность редактировать словарь

11

Пример

C учетом требований от QA:

• gettext

• .po (Portable Object) + утилиты

• 1 пакет, 1 строка в config, 1 команда

12

2. Где взять данные?

• Используем то, что есть

• Псевдолокализация (имитация переводов)

13

Пример

Русская локаль —>

• Текст + три символа

• Картинки на 180°

• Ссылки .ru —> .it

—> Албанский

14

3. Как проверить грамотность UI?

• Делегируем носителям языка

15

Пример

Кому делегируем?

• Заказчик

• Команда переводчиков

16

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

• Тестировать должно быть удобно

• Используйте псевдолокализацию

• Делегируйте проверку грамотности

17

Сказ второй:

Переводим

автотесты

1. В каком объеме можемпереиспользовать тесты?

• Определяем различия

19

Сравниваем тесты и различия

• Тесты на общий функционал отлаживаем

• Оставшиеся — для исходной локали

• Пишем новые

20

Пример

21

2. Как делить входные / выходныеданные?

• Собираем чтобы разделить

23

Собираем чтобы разделить

• Параметризуем

• Собираем в отдельный класс

• Каждой локали — свой класс

24

Пример. Параметризуем вход/выход

public function testSearch()

{

this->searchForm (array(

'what' => 'Музей',

'where' => 'Новосибирск')

);

}

01.

02.

03.

04.

05.

06.

07.

25

Пример. Параметризуем вход/выход

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

Пример. Параметризуем вход/выход

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

Пример. Создаем словарь

<?php

$msg = array();

$msg['what_request'] = 'Музей';

$msg['where_request'] = 'Новосибирск';

$msg['search_buttom'] = 'Найти';

return $msg;

?>

01.

02.

03.

04.

05.

06.

07.

28

Переводя автотесты...

• Переиспользуйте тесты

• Параметризуйте входные и

выходные данные

29

Сказ третий:

Поддержка

1. Как успеть протестировать, еслипереводов нет?

• Встраиваем переводы в процесс

31

Встраиваем переводы в процесс

• Договариваемся о сроках и ответственностях

• План Б

32

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

33

Пример. План Б

• Сами переводим на английский

• Откладываем функционал

34

И жили они...

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

• Перевод АТ

• Поддержка

Вопросы?

• Писчасова Татьяна

• t.pischasova@2gis.ru

• @stricky_

Recommended