UA RU
logo
Тестирование      06/07/2022

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

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

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

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

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


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

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

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

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

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

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

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

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

Онлайн-курс "HR-менеджер" від Laba.
Оновитіть HR-стратегію, оптимізуйте HR-процеси та прокачайте бренд роботодавця.Досвід та особистий фідбек від експертів HR-сфери.Курс схвалено HRCI, містить 80% практики.
Детальніше про навчання

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

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

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

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

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

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

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

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

Онлайн-курс "People Management" від Laba.
Пройдіть шлях від формування відповідальної команди до написання кар'єрної карти для кожного співробітника разом з топменеджеркою з 11-річним досвідом у провідних IT-компаніях.
Детальніше про курс

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Курс QA engineer від Mate academy.
Якщо ви новачок та хочете опанувати професію QA engineer - обирайте курс з гнучким графіком та допомогою в працевлаштуванні!
Отримати знижку на курс

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

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

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

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