Как и почему меняется тестирование и что с этим делать

Как и почему меняется тестирование и что с этим делать

  • 15 февраля, 2023
  • читать 10 мин
Сергей Злищев
Сергей Злищев Lead Software Testing Engineer в EPAM, Преподаватель Компьютерной школы Hillel.

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

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

Взгляд на текущее и будущее состояние тестирования программного обеспечения

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

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

Переход к low-code или no-code инструментам для создания и тестирования приложений создал новые вызовы. Традиционные фреймворки для тестирования, такие как Selenium или Cypress, сталкиваются с конкуренцией со стороны менее кодоемких альтернатив, которые могут использоваться нетехническими бизнес-пользователями.

Это также подняло планку для инструментов тестирования, используемых для платформ планирования ресурсов предприятия (Enterprise Resource Planning — ERP) и управления взаимоотношениями с клиентами (Customer Relationship management — CRM), таких как Salesforce, Dynamics, Oracle и SAP, которые теперь требуют более глубоких знаний и понимание тестируемых приложений.

Влияние машинного обучения на тестирование программного обеспечения

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

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

Люди обладают врожденной способностью выявлять несоответствия в программных приложениях, что позволяет им выявлять проблемы, которые автоматизированные тесты могут пропустить. Это связано с тем, что люди являются целевыми пользователями этих приложений и более интуитивно выявляют изменения в дизайне, такие как изменение положения, формы или расположения кнопок. С другой стороны, на автоматизированные тесты могут повлиять даже незначительные изменения, такие как замедление скорости загрузки страницы. Тестирование API, предназначенных для взаимодействия между компьютерами, лучше подвергается автоматизации, чем более сложное тестирование пользовательского интерфейса.

Чтобы устранить эти ограничения, передовые инструменты low-code тестирования используют машинное обучение для непрерывного мониторинга и оценки тестируемых приложений для выявления «правильных» и «неправильных» результатов. Это позволяет инструментам автоматически определять, внесены ли изменения в систему в пределах приемлемых параметров (тест пройден) или отклоняются от того, что было зафиксировано сначала (тест не пройден). Хотя эти инструменты все еще находятся в зачаточном состоянии, примеры реального применения машинного обучения в тестировании ПО начинают появляться, особенно для сложных бизнес-приложений и быстро меняющихся облачных приложений.

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

«Тестирование на основе рисков» — это новый подход к решению этой проблемы, который заключается в приоритетном тестировании ПО на наиболее подверженных ошибкам участках системы. Модели машинного обучения могут использовать записи прошлых разработок, тестирований и релизов, чтобы определить, где были обнаружены дефекты, внесены изменения в код и где возникли проблемы, облегчающие распределение ресурсов на основе уровней риска. Этот тип анализа данных отлично подходит для методов машинного обучения.

Влияние искусственного интеллекта на тестирование кибербезопасности

Еще один способ использования искусственного интеллекта — сфера кибербезопасности. И в качестве примера — активный поиск уязвимостей с помощью систем зондирования и таргетинга.

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

Одним из примеров злонамеренного использования искусственного интеллекта является чат-бот OpenAI ChatGPT, который был обучен создавать программный код для проникновения в системы и создания убедительных фишинговых сообщений. Такое сочетание генерации кода и манипулирования языком в реальном времени с пользовательским вводом создает новую угрозу кибербезопасности, особенно в сфере фишинга посредством тактики социальной инженерии.

Рекомендуем публикацию по теме

Обеспечение качества искусственного интеллекта и машинного обучения

Проблема использования искусственного интеллекта и машинного обучения при разработке программного обеспечения заключается в фазе тестирования.

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

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

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

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

Будущее работы: как ИИ создает новые рабочие места

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

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

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

Еще одной интересной сферой для карьеры может быть формирование того, чему учится искусственный интеллект. К примеру, в цифровом маркетинге чат-боты потенциально могут заменить поисковые системы. Зачем тратить время на переходы по многочисленным ссылкам, если чат-бот может предоставить (вероятно) точную информацию в одном ответе или даже прочесть ее вам вслух?

Это может привести к созданию новой отрасли — оптимизации чат-ботов (Chat Bot Optimization), которая заменит нынешнюю отрасль поисковой оптимизации (Search Engine Optimization — SEO). Веб-сайты и другие источники информации будут стремиться сделать свой контент более понятным для чат-ботов, подобно тому, как сегодня веб-разработчики делают веб-сайты более удобными для поисковых систем.

Вывод

Индустрия тестирования программного обеспечения претерпевает значительные изменения в 2023 году и в дальнейшем.

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

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

Рекомендуем курс по теме