ru:https://highload.today/blogs/ego-legko-mozhno-nauchit-plohomu-kak-my-testirovali-prilozhenie-s-iskusstvennym-intellektom/ ua:https://highload.today/uk/blogs/jogo-legko-mozhna-navchiti-poganomu-yak-mi-testuvali-programu-zi-shtuchnim-intelektom/
logo
Тестирование      06/07/2022

«Его легко можно научить плохому»: как мы тестировали приложение с искусственным интеллектом

Галина Іщенко BLOG

QA Test Lead в IT-команді NIX

Готова поспорить, что каждый тестировщик и разработчик испытывал невероятный восторг перед первой работой с искусственным интеллектом. Так же было и у меня. Но романтические ожидания быстро наткнулись на непробиваемую стену реальности. Однажды моей команде пришлось тестировать самообучающийся алгоритм. С самого начала нас ожидало много неожиданностей.

В этой статье я хочу поделиться опытом и вызовами, с которыми столкнулась вместе с QA Lead Ириной Смердовой. Я расскажу, как мы настроили процесс тестирования так, чтобы все прошло как можно эффективнее и комфортнее. Материал будет полезен всем, кто интересуется внедрением искусственного интеллекта в реальный софт.


Для примера возьмем мобильное приложение для знакомств. Это гипотетический кейс, но полностью отражает все трудности, с которыми мы столкнулись на реальном проекте. В основе нашего воображаемого приложения — самообучающийся алгоритм, который сравнивает данные пользователей и на основании их уникальных характеристик выносит вердикт: подходят ли люди друг другу, а также дает оценку совпадения в процентах.

Мы ожидали, что у нас сразу будет доступ к алгоритму работы искусственного интеллекта и, исходя из этого мы разберемся, как он работает. Но наш Product Owner приобрел этот алгоритм у третьей стороны, поэтому выбор решения для искусственного интеллекта был исключительно желанием клиента. Так в условиях нашего сотрудничества появилось NDA от провайдера искусственного интеллекта.

Поскольку наш заказчик не имел права делиться с нами ни кодом, ни принципами работы алгоритма, этот ИИ для нас оказался черным ящиком.

Чтобы наш самообучающийся алгоритм работал на основе искусственного интеллекта, его для начала необходимо… правильно — научить! Делать это нам нужно было вручную с помощью множества кейсов и сетов входных данных. Мы вполне серьезно рассчитывали на выдачу адекватных результатов от программы, умеющей думать. Но на практике наш инструмент отнюдь не отслеживал адекватность установленных нами данных. С этим тоже нужно было что-то делать.

Итак, что мы имеем: приложение, которое думает и непонятно как принимает решение, и при этом претендует на то, чтобы мы его понимали.

На вход в систему подавались анкеты пользователей. Затем система анализировала эти данные и, руководствуясь своими алгоритмами на основе искусственного интеллекта (тот же черный ящик), выдавала результат совпадения: отказ (совпадение не выявлено) или наличие совпадения (результат указывался в соотношении).

Далее присоединялся пользователь: рассматривал результат, предложенный ему программой, и одобрял его или отклонял. В случае отказа система должна была реагировать на несогласие пользователя с ее решением, запомнить это и научиться больше не выносить ложных ответов.

Но как именно система выносила свой вердикт нам было неизвестно.

AWS для початківців.
Навчіться працювати з cloud-native системами та побудуйте власний застосунок для зберігання даних у системі AWS.
Дійзнайтеся більше

Планирование тестирования

Чтобы облегчить тестирование системы на базе искусственного интеллекта, еще на этапе планирования процесса обратите внимание на следующие аспекты:

  • Попросите у заказчика как можно больше тестовых данных. Чем больше у вас будет валидных входящих данных, тем проще составить адекватный data setup и начать обучение системе.
  • Соберите слаженную команду. Может быть, это звучит банально, но в нашем случае этот аспект сыграл решающую роль. Учитывая, что системы на основе искусственного интеллекта самообучающиеся, при принятии командой неверных решений в работе с ней, легко можно научить ваш искусственный интеллект плохому. В результате программа будет мыслить неправильно и некорректно работать.
  • Спросите у Product Owner данные о проценте допустимой погрешности. Так вы сэкономите себе много времени и нервов.
  • Учитесь думать нестандартно. Не пытайтесь предусматривать действия искусственного интеллекта. Попытайтесь понять его нестандартную логику и тогда легко сможете взаимодействовать с ней.

Технические требования и (не)соответствие им — как действовать?

Вернемся к нашему примеру. В требованиях речь не шла об алгоритме, благодаря которому система принимает решение. В технической документации упоминались только общие данные по UI. Никаким образом не был описан user flow — сценарий взаимодействия пользователя с системой.

User flow наглядно иллюстрировал бы порядок действий, необходимый для корректной работы приложения.

Сценарий «Пользователь выполняет действие X, система отвечает действием Y… и все работает» совершенно не отвечал тому, с чем мы столкнулись.

Приведенные в документации формулы отражали отвлеченные принципы работы искусственного интеллекта. Документированный алгоритм интеграции тоже не принес нам пользы. На практике особенности работы интеграции пришлось выяснять через прогон тест-кейсов и составление статистики, исходя из полученных результатов.

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

Подготовка к тестированию

Прежде чем приступить к тестированию ПО с элементами искусственного интеллекта, убедитесь, что у вас:

  • Налажен надежный контакт с заказчиком ПО. Только этот человек хорошо представляет, что именно он хочет получить от разрабатываемой системы.
  • В команде есть специалист, ответственный за интеграцию. Он сможет как-то влиять на работу программного алгоритма.
  • По возможности установите контакт с разработчиком ПО. Общение с ним поможет существенно облегчить понимание того, что написано в коде.
  • Учите user flow. Если вы не будете досконально понимать, где, как и зачем ваш заказчик внедряет искусственный интеллект, вы не сможете понять, как именно его тестировать.

Тестирование продукта

В нашем случае он начался с полного абсурда:

  1. Сначала мы увидели отсутствие какой-либо адекватной интеграции — со старта она вообще не работала.
  2. Второй причиной абсурдного поведения стал достаточно высокий процент погрешности системы (в нашем случае она колебалась до 50%), что никак не соответствовало указанной погрешности в технической документации.
  3. И третье — негативные проверки и тестирование с предельными значениями принесли противоположные от ожидаемых результаты.

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

AWS для початківців.
Навчіться працювати з cloud-native системами та побудуйте власний застосунок для зберігання даних у системі AWS.
Дійзнайтеся більше

Отсюда вывод: использование отрицательных тестов для самообученных алгоритмов нужно минимизировать, доведя их до одного-двух.

В ходе тестирования мы выделили несколько важных аспектов. Советуем вам учесть эти моменты в своей работе:

  • Помните: системы на основе искусственного интеллекта подходят для имитирования реального процесса принятия решений. Поэтому при их тестировании отталкивайтесь от ситуаций, которые могут произойти с пользователем, когда он взаимодействует с продуктом.
  • Обеспечьте подключение постороннего инструмента ИИ с вашим приложением. Выясните, как функционирует серверная часть и как происходит индексация данных. Это поможет избежать дефектов.
  • Постоянно тренируйте вашу систему. Она же создана для того, чтобы учиться. Правильно подбирайте валидные тестовые данные исходя из данных production-сервера. Анализируйте результат не по сухим инструкциям по техдокументации, а по собственной логике. Имейте в виду, что отрицательные тесты следует использовать осторожно. Иначе можно научить систему «думать» неправильно.

Прежде чем передавать продукт в продакшн, убедитесь, что вы соблюдали следующие условия:

  • Клиент знает, что продукты на основе искусственного интеллекта не могут работать «из коробки» идеально. Сначала их нужно научить, тренируя систему на валидных входных данных.
  • Если у Product Owner нет таких данных, настаивайте на проведении бета-тестирования и UAT — пользовательского тестирования. Все же участие реальных людей в тестировании продукта не заменят никакие первоклассные тест-кейсы.
  • Сразу тестируйте hot-fixes. Таким образом вы убедитесь, что разработчики правильно проанализировали найденные вами дефекты и внесли нужные корректировки в код. Но будьте готовы к тому, что тестирование может происходить в овертайме.

Вместо вывода

Тестирование программного обеспечения на основе искусственного интеллекта в нашем случае принесло множество неожиданностей. Вероятно мы слишком много ожидали от продукта, совершенно забыв об одном нюансе: самообучающиеся системы всегда работают так, как ты их научишь.

Как только мы поняли принцип действия этого бумеранга, он сразу же вернулся к нам с хорошими новостями. Продукт был одобрен заказчиком, вышел на рынок и по-прежнему поддерживается.

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.

Курс Frontend.
Frontend розробник може легко створити сторінки вебсайту чи вебдодаток. Тому після курсу ви станете затребуваним фахівцем у сфері, що розвивається.
Інформація про курс

Этот материал – не редакционный, это – личное мнение его автора. Редакция может не разделять это мнение.

Топ-5 самых популярных блогеров февраля

Всего просмотровВсего просмотров
229
#1
Всего просмотровВсего просмотров
229
Всего просмотровВсего просмотров
209
#2
Всего просмотровВсего просмотров
209
QA в CodeGeeks Solutions
Всего просмотровВсего просмотров
156
#3
Всего просмотровВсего просмотров
156
Senior Project Manager at Nemesis
Всего просмотровВсего просмотров
99
#4
Всего просмотровВсего просмотров
99
Software Architect at Devlify
Всего просмотровВсего просмотров
95
#5
Всего просмотровВсего просмотров
95
Рейтинг блогеров

Ваша жалоба отправлена модератору

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: