banner

Блог

Jun 11, 2023

Как я внес свой вклад в систему машинного обучения в качестве тестировщика: возможности, проблемы и уроки

Домашняя страница InfoQ Статьи Как я внес свой вклад в качестве тестировщика в систему машинного обучения: возможности, проблемы и уроки

16 февраля 2023 г., чтение 10 минут

к

Шивани Габа

рассмотрено

Бен Линдерс

Тестирование считается жизненно важным аспектом жизненного цикла разработки программного обеспечения (SDLC), поэтому для обеспечения качества приложения привлекаются тестировщики. Это справедливо для обычных программных систем, включая веб-приложения, мобильные приложения, веб-сервисы и т. д.

Но задумывались ли вы когда-нибудь о системах, основанных на машинном обучении? В таких случаях тестирование отходит на второй план. И даже если какое-то тестирование и проводится, то в основном это делают сами разработчики. Роль тестировщика в таких областях четко не обозначена.

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

Как и большинство тестировщиков, я участвовал в тестировании обычных систем, включающих веб-приложения, собственные приложения, серверную часть, микросервисы и т. д. В таких системах люди (в основном разработчики) принимают входные данные и пишут логику для создания детерминированный вывод. Наша задача как тестировщиков — проверить ожидаемый результат на соответствие указанным/подразумеваемым требованиям.

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

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

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

Имея в голове множество таких вопросов, мне было любопытно исследовать и учиться. Я был готов к поездке на американских горках :)

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

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

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

Я также понял, что пытаюсь что-то протестировать, даже не понимая, как работает система и каковы ее строительные блоки. Но чтобы лучше протестировать любую систему, это должно быть первым шагом.

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

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

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

ДЕЛИТЬСЯ