botank

A library for automated testing of Alice skills


Keywords
alice-skills, testing-tools, yandex-alice, yandex-api
License
MIT
Install
pip install botank==0.0.5

Documentation

botank

Библиотека для автоматического тестирования навыков Алисы (и в перспективе других чат-ботов). Засыпаем бота случайными запросами и смотрим, как он справляется.

Библиотека написана на питоне, но ботов дёргает по вебхуку, и поэтому сами боты могут быть написаны на любом языке или вообще без языка.

Самое главное

Для установки необходимо иметь Python>=3.6 и пакетный менеджер pip (либо аналог). Пока что только так.

Установка:

pip install botank

Как запустить:

python -m botank http://localhost:5000/alice/ -n 100 -o results.txt

При подобном запуске ботанк направит по адресу http://localhost:5000/alice/ 100 случайных запросов в навык, и сохранит результат обстрела в файл results.txt.

В процессе диалог будет примерно таким:

Running 100 turns of Botank simulation...

u: привет
b: Привет. Добро пожаловать в навык "Донорство костного мозга". Я отвечу на ваши вопросы про кровь и костный мозг. Выберите раздел и начнем!
Например: Рак крови.
u: Костный мозг
b: Хорошо, поговорим на тему костный мозг. Выбирайте вопрос! Например, можете спросить: Как по-английски будет костный мозг?
u: Что такое кроветворение?
b: Кроветворение - это процесс образования, развития и созревания клеток крови - лейкоцитов, эритроцитов, тромбоцитов. За 70 лет жизни человека костный мозг вырабатывает приблизительно 1000 кг лейкоцитов и 650 кг эритроцитов. Даже меня это впечатляет.
u: и 650
...
u: домой
b: Я вас не понимаю. Спросите у меня что-нибудь про кровь или костный мозг! Например: Передается ли рак крови половым путем?
u: Как стать донором костного мозга?
b: Мне кажется, что вы хороший человек, раз задаете этот вопрос. Стать донором очень просто. Вы можете сдать кровь в ближайшей лаборатории «Инвитро», и ее внесут в базу потенциальных доноров. И если ваш генетический двойник заболеет, вы сможете спасти его жизнь. Хотите узнать, как найти генетического двойника?

Summary:
Codes: 200 - 100
Timings: min 1.02557, max 1.35971, average 1.07610431

Зачем

Предполагается, что ботанк будет применяться на ранних стадиях разработки навыка, когда он ещё не испытан "в бою", и нужно его перед релизом испытать хоть как-то.

Во-первых, подобный обстрел может помочь протыкать все сценарии диалога (если для них есть саджесты) и выявить запросы, на которых бот падает.

Во-вторых, обстрел может выявить запросы, на которых бот отвечает долго.

В-третьих, ботанк (когда мы его допилим) можно будет использовать для нагрузочного тестирования, чтобы понимать, под каким RPS навык может выжить.

Ну и сами тексты сгенерированного скриптом диалога, несмотря на его бредовость, надеемся, могут навести разработчика бота на плодотворные мысли.

Как это работает

На каждом шаге ботанк случайным образом выбирает одно из действий:

  • нажать на случайную кнопку из предложенных;
  • кинуть в бота случайной подстрокой его предыдущего ответа;
  • кинуть в бота случайно выбранной фразой из захардкоженного списка.

После заданного числа итераций подобного обстрела выдаётся статистика по кодам и времени ответа, а запросы и ответы сохраняются в файл.