Альф, переведи мне на телефон миллион рублей |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2022-05-04 08:49 Или нюансы тестирования (и разработки) голосового помощника в банковском приложении. В нашем приложении Альфа-Мобайл с октября 2021 работает голосовой помощник Альф (Alf). Он умеет оплачивать счета, переводить на телефон и озвучивает курс доллара голосом Геральта — Всеволода Кузнецова. Хотя другие голосовые помощники появились раньше, о них есть и статьи и доклады, но когда мы начали тестировать нашего Альфа, было немного Сначала немного о том, что Альф умеет и как устроен. Из чего и как сделан Альф, и что умеет Архитектура Альфа и взаимодействие его частей выглядит так. Сейчас расскажем по порядку что есть что. Все начинается с приложения Альфа-Мобайл (АМ). Оно выпускается на Android и iOS. В него вшит AimyBox SDK — набор средств разработки для взаимодействия Альфа-Мобайл и Yandex SpeechKit API. Yandex SpeechKit — сервис от Яндекса, в котором реализованы распознавание и синтез речи. Это «уши и язык» Альфа: в Yandex SpeechKit мы отправляем голос и получаем текст, и наоборот - отправляем текст и получаем синтезированную речь. Для связывания AimyBox SDK и Yandex SpeechKit у нас есть посредники — микросервисы Альфа-Мобайла:
Когда пользователь заходит в голосового помощника, через Conversational Platform Gate API Альфа-Мобайл отправляет в Яндекс запрос на получение токена. После его получения все запросы между АМ и «коробкой» будут проходить через Yandex SpeechKit. Когда пользователь произносит команду, преобразованный текст через Smart Assistant gateway отправляется в «коробку» — набор микросервисов компании Just AI (JAICP). В JAICP наши лингвисты и прописывают все сценарии и навыки нашего помощника. Именно этот сервис распознаёт намерения пользователя и обращается к остальным банковским микросервисам для выполнения операций. Когда мы понимаем, что хочет пользователь, JAICP через Smart Assistant gateway отправляет запрос в нужный микросервис Альфа-Мобайл за нужной информацией, например, долгу по кредиту. Затем «коробка» берет этот текст и отправляет его в YSK на синтез. В итоге пользователь получает ответ текстом и голосом. Что умеет Альф? Основной функционал голосового помощника — это интенты.
Делятся на 3 вида: продуктовые, навигационные и интерактивные. Продуктовые связаны с информацией: узнать о комиссии при переводе, когда закончится льготный период кредитки или какие условия по вкладам. Навигационные связаны с движением. Например, клиент хочет открыть счет и говорит об этом Альфу. Помощник присылает ссылку на раздел, где открывают счета. Интерактивные: предполагают интеграцию с банковскими сервисами. С их помощью можно оплатить мобильную связь, перевести между счетами и узнать информацию по счетам, картам, кредитам. Пара примеров интерактивных интентов: шаблоны и информация по кредитным картам. Шаблоны. Это первый навык, который мы запустили. Если у нас есть регулярные платежи, то мы делаем шаблон — например, на оплату «интернета». Логика шаблонов Альфа такая же — создаем шаблона, например, перевода на телефон ребенку и голосом быстро все делаем. Удобно в дороге. Как это работает: video_2022-01-19_16-43-21.mp4 Информация по кредитным картам. Еще мы реализовали виджет, который отображает задолженность по кредитной карте, дату ближайшего платежа и сумму. Виды и критерии тестирования помощника Видов тестирования у нас четыре:
Процессы тестирования мы систематизируем: пишем тестовую документацию, покрываем автотестами, следуем Definition of Done. Поэтому на каждый из видов тестирования у нас большой список требований: что должно работать, а что нет и когда. Об этом ниже. Функциональное тестирование интентов Правильно было бы начать с тестирования совместимости, но мы начнем с функционального тестирования интентов, навыков, о которых только что писали. Продуктовые. Это самые простейшие интенты, когда мы смотрим информацию по продукту. Здесь важно, чтобы речь была приятная, без долгих пауз, с правильными ударениями и чтобы вместо данных по балансу Альф не рассказал про ипотечный кредит. Навигационные. Это интенты, которые можно описать вопросом «А покажи мне, где вот это?» Здесь мы проверяем, что пришла нужная ссылка, и что она ведет на экран с запрашиваемым функционалом. Интерактивные. Оплата шаблонов, перевод между счетами. Тестирование этих интентов рассмотрим чуть позже, в рамках ручного тестирования. Сенситивы. Немного предыстории. В Альфа интегрирована нейросеть CAILA. Она поддерживает неформальный разговор с пользователем, например, у Альфа можно спросить: — Альф, какое у тебя домашнее животное? Он ответит: — Жду, когда появятся комнатные слоны. Нейросеть самообучающаяся, есть много заготовленных фраз, которые добавляются постоянно. У нас был случай, когда Альфа хитрый пользователь спросил вопрос, на который он выдал не тот ответ, который от него ждали. Поэтому мы начали работу над стейтами по определенным «чувствительным» ключевым словам. Сейчас их 30, они относятся к темам, которыми не должен заниматься голосовой помощник, вроде политики или религии. Как мы тестируем сенситивы? Пытаемся поставить Альфа в неудобное положение. Если до работы над сенситивами Альф отвечал даже отчасти остроумно, но неприемлемо… …то теперь отвечает корректнее. Если вы нашли какие-то похожие ситуации с Альфом — пишите в комментариях. Тестирование совместимости Здесь мы проверяем как Альф работает с разными версиями ОС на Android и iOS, с внешними и внутренними устройствами и другими голосовыми помощниками. Например, вот правила, которые мы соблюдаем при проверке взаимодействия помощника с аппаратным обеспечением устройства: микрофоном и динамиками. Микрофон должен:
Однажды из-за того, что микрофон срабатывал заранее, включался, когда помощник говорил, получилось, что Альф общался сам с собой. Причина в том, что из-за нестабильной скорости интернета речь Альфа может прийти с задержкой. Помощник не успевал договорить, а микрофон уже начал слушать сам себя, распознавал себя как пользователя и сам с собой общался. Как это было: 20220418-160322-107.MP4 Звуки помощника должны воспроизводиться через основной динамик, а громкость должна регулироваться. Звуки входящего звонка не должны прерывать распознавание голоса, как и уведомления или музыка. Также при тестировании совместимости мы проверяем как работают наушники и колонки.
В блок тестирования совместимости входит и проверка взаимодействия Альфа и других голосовых помощников, потому что Siri умеет вызывать Альфа — это наша киллер-фича быстрого запуска. Как вызвать Альфа с помощью Siri: Мои? фильм 4.mp4 Сложности тестирования Siri Siri умеет вызывать Альфа. Нам без проблем удалось их интегрировать(подружить). Но с ней были небольшие сложности при тестировании. Интеграция с Siri проходит через приложение Shortcuts (Команды), и при разработке и тестировании возникли некоторые нюансы. Приложение работает с iOS 12 и выше. Альф на iOS 11 не сможет настроить Siri для быстрого запуска. Приложение Shortcuts можно удалить. Мы думали, что это невозможно — оно же системное. Но поняли, что ошибались, когда пользователи жаловались на то, что у них не получается настроить команду через голосового помощника из-за того, что они удалили приложение Shortcuts. Теперь, если приложение Shortcuts удалено, то вместе с ответом Альф пришлет ссылку на скачивание приложения в AppStore. Поэтому мы настроили все так, что Альф будет показывать подходящий ответ, даже если шорткат создан, отредактирован и удален. Тестирование UI-компонентов Начинается с анимаций иконок Альфа. Когда он думает или слушает то должны появляться отдельные анимации иконок. Например, как на скрине ниже. Быстрые навыки. На главном экране. Если тапнуть по любому навыкам, то можно задать вопрос не говоря с ним. Если нажать на вопросительный знак, то пользователь перейдет в каталог навыков и сможет посмотреть, что ещё есть у Альфа. Текстовые баблы. В них текст, как в комиксах, иллюстрируется речь Альфа и пользователя. Картинки SLovoDna. Мы активно сотрудничаем с этим пабликом и добавляем картинки с шутками в диалог. Тестируя, мы проверяем все эти элементы. Лингвистическое тестирование Распознавание. Пользователи говорят по-разному: быстро, медленно, ровно, рвано, пропуская буквы, шумно, тихо. Но как бы пользователь ни говорил, Альф его должен понять. Поэтому при тестировании мы постоянно придумываем разные способы сказать Альфу команды. Шумы. У вас на заднем плане может кричать ребенок, проезжать машины, шуметь люди. Это тоже может влиять. Не должно, но может. Однажды Яндекс сделал небольшие изменения в синтезе и у нас возникла одна бага. Пользователь пожаловался, что когда сидел в пустой комнате с запущенным Альфом и ничего не говорил, слались запросы: «Слушай, Яндекс», «Привет, Алиса» и всё такое. Оказалось, что чувствительность микрофона была настроена так, что шум воспринимался как голос, звуки и Альф реагировал. Качество речи. Когда Альф отвечает, он должен говорить без шумов, ставить ударения, делать паузы и всё это на человеческой скорости. За синтез речи (имитирование) у нас отвечает модуль Яндекса, поэтому мы их постоянно сравниваем. Например, посмотрите, как мы проверяли два варианта синтеза: версию №1 и №3. Мои? фильм.mp4 На видео отметили как в некоторых местах помощник «заикается». Мы эти моменты отловили, зарепортили и отправили разработчикам. Попадание в стейты или сценарии. Когда человек говорит ключевую фразу/слово, то запускается сценарий. Наша задача — отлавливать проблемы, когда фраза не попала в стейт. Например, ниже скрин ответа Альфа на фразу «беспроцентный период». А здесь Альф не смог ответить, хотя в слове поменялась всего одна буква —«безпроцентный». Хотя причина не в слове, а в том, что Альфа сбило слово «когда» Мы отлавливаем такие проблемы и передаем лингвистам, а они расширяют список синонимов, чтобы таких багов было меньше. Маскировка нецензурной лексики. Благодаря богатству русского языка Альф часто узнает много нового о себе когда чего-то не знает или не умеет. Но политика банка обязывает маскировать эти слова. Это возможно также благодаря модулю Яндекса. И его также нужно тестировать. Поэтому мы работали над тем, чтобы выявить немаскируемые нецензурные слова. Выглядело это как взрослый человек, который 2 часа подряд матерится в телефон. В результате собрали список из 40 слов, что отправился прямиком в Яндекс. Это на случай, если кто то сомневается в творчестве на работе:) Теперь посмотрим на тесты. Пирамида тестирования для голосового помощника Тестируем ручками и автотестами. Автотестами покрываем 3 уровня: UI, API и Unit. Следуем пирамиде тестирования. Сейчас расскажем, как мы по ней двигаемся. Unit-тесты пишут разработчики, подробно останавливаться не будем, рассмотрим автотесты, которые пишем мы — QA. АPI-тесты Стек: Java, Retrofit, jUnit 5 и Lombok. Сейчас API-тестов 92:
В рамках onboarding-api реализован один автотест. Он проверяет есть ли данные для онбординга голосового помощника. Перейдем к тестам Conversational-platform-gate-api. Перечень проверок, покрытых автотестами (GET-запросы, которые подготавливают помощника к работе):
Для каждой «ручки» написано по 1-2 теста. Для примера покажем как проверяем, что навыки каталога навыков главного экрана помощника работают правильно. В тестовом методе передаем значения хедеров в классе. Отправляем запрос, получаем ответ и запускаем 2 теста: для iOS и Android.
Для Smart Assistant gateway у нас всего одна «ручка», но метод уже не GET, а POST. Поэтому мы можем передавать различные параметры и имитировать общение клиента с голосовым помощником. Автотестами покрыто 14 типов проверок. В скобках указано сколько автотестов для данного типа у нас есть:
Покажем как работает проверка в Smart Assistant gateway на примере теста «Проверка остатка по счету при двух счетах с одинаковым названием». В классе В тестовом методе мы передаем значения хедеров, в теле запроса указываем QUERY, это будет остаток по текущему счету. Отправляем запрос, получаем ответ, для iOS и Android. Получили ответ, что «коробка» (JAICP) нашла 2 счета, и мы проверяем суммы, которые прислала «коробка» с суммами от account-api UI-автотесты Да, мы сделали UI-автотесты для голосового помощника. Зачем?
Автотесты позволяют нам выявить проблемы на ранней стадии, что экономит нам (и нашим разработчикам) много времени и нервов. Пример теста. Стек: Java 11, Appium,, jUnit 5 и Lombok. Пример теста. В этих тестах нет проверки голоса для голосового помощника.. Сейчас у нас нет готового решения для передачи звуковых дорожек в тест. Активно изучаем этот вопрос. Если есть советы, рекомендации или вы знаете как нам решить эту проблему — пишите в комментариях, будем благодарны! Ручное тестирование Завершает пирамиду. Для ручного тестирования у нас заведены тест-кейсы. Сейчас у нас их 52.Этого количества нам хватает на все наши фичи. Простейший выглядят примерно так. Здесь есть описание, цель, условия и шаги: что делать, чтобы провести тест, и что должно появиться/произойти в качестве результата. Заключение
В целом, всё. Если у вас есть вопросы или дополнения к статье — пишите в комментариях, или нам напрямую: @eilinwis и @maxon2112. Заходите в чат в Телеграм, где мы общаемся на тему тестирования, там тоже обсудим статью. Если хотите поработать над голосовым помощником — приходите, сейчас как раз нужен Продуктовый лингвист в команду Голосового помощника Alf. Также ждём QA Engineer C# и QA Lead C#, но на другое направление. Больше вакансий в канале Alfa Digital Jobs, где мы рассказываем о работе в IT и Digital в Альфа-Банке, делимся интересными вакансиями, новостями и полезными советами, и иногда шутим. Подписывайтесь. Рекомендуем почитать:
Источник: habr.com Комментарии: |
|