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 от провайдера искусственного интеллекта.

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

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

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

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

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

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

Онлайн-курс "Маркетингова аналітика" від Laba.
Опануйте інструменти для дослідження ринку й аудиторії та проведення тестувань.Дізнайтесь, як оптимізувати поточні рекламні кампанії та будувати форкасти наступних.
Детальніше про курс

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

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

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

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

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

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

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

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

Основи Web дизайну від Ithillel.
Цей онлайн-курс з основ веб-дизайну дозволить вам опанувати мистецтво створення ефективних та привабливих інтерфейсів для вебсайтів і застосунків. Ви оволодієте ключовими принципами UX/UI дизайну, створюватимете дизайн-макети та прототипи, розроблятимете адаптивні інтерфейси для різних пристроїв, готуючись до професійної кар'єри в галузі веб-дизайну.
Дізнатися більше

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

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

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

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

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

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

  1. Сначала мы увидели отсутствие какой-либо адекватной интеграции — со старта она вообще не работала.
  2. Второй причиной абсурдного поведения стал достаточно высокий процент погрешности системы (в нашем случае она колебалась до 50%), что никак не соответствовало указанной погрешности в технической документации.
  3. Онлайн-курс "Business English for Marketers" від Laba.
    Опануйте професійну англійську для маркетингу.Розширте карʼєрні можливості для роботи з іноземними колегами: від розробки нових продуктів до презентації стратегії бренду.
    Детальніше про курс
  4. И третье — негативные проверки и тестирование с предельными значениями принесли противоположные от ожидаемых результаты.

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

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

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

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

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

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

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

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

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

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

Основи Web дизайну від Ithillel.
Цей онлайн-курс з основ веб-дизайну дозволить вам опанувати мистецтво створення ефективних та привабливих інтерфейсів для вебсайтів і застосунків. Ви оволодієте ключовими принципами UX/UI дизайну, створюватимете дизайн-макети та прототипи, розроблятимете адаптивні інтерфейси для різних пристроїв, готуючись до професійної кар'єри в галузі веб-дизайну.
Дізнатися більше

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

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

PHP Developer в ScrumLaunch
Всего просмотровВсего просмотров
2434
#1
Всего просмотровВсего просмотров
2434
Founder at Shallwe, Python Software Engineer (Django/React)
Всего просмотровВсего просмотров
113
#2
Всего просмотровВсего просмотров
113
Career Consultant в GoIT
Всего просмотровВсего просмотров
95
#3
Всего просмотровВсего просмотров
95
CEO & Founder в Trustee
Всего просмотровВсего просмотров
94
#4
Всего просмотровВсего просмотров
94
Рейтинг блогеров

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

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

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