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

Введение


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

Включение искусственного интеллекта в автоматизацию еще больше расширило возможности тестирования. Способность ИИ обучаться на основе данных привносит беспрецедентную эффективность и точность, и теперь тестировщики могут быстрее и точнее выявлять дефекты и потенциальные проблемы. Это в свою очередь приводит к ускорению создания тест-кейсов с использованием таких фреймворков, как Behavior Driven Development (BDD) с помощью языка Gherkin, например, и Test Driven Development (TDD).

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

Преимущества использования искусственного интеллекта в QA


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

ИИ позволяет тестировщикам более эффективно отслеживать и выявлять дефекты — анализируя огромные объемы данных, выявляя закономерности, корреляции и потенциальные проблемные области; а также выполнять тесты по нескольким сценариям за короткое время, значительно сокращая цикл тестирования. Такое ускорение тестирования помогает организациям укладываться в сжатые сроки, повышает общую эффективность процесса разработки и позволяет QA-инженерам оперативно выявлять и устранять проблемы, обеспечивая высокое качество программных продуктов.

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

Роль искусственного интеллекта в создании и выполнении тест-кейсов


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

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

Нейронные сети можно использовать для решения таких задач, как генерация тест-кейсов, автоматическое обнаружение багов или даже обработка естественного языка (natural language processing, NLP) для анализа требований.

Например, рекуррентные нейронные сети (recurrent neural networks, RNN) могут анализировать требования в текстовом формате и генерировать соответствующие им тест-кейсы. Сверточные нейронные сети (Convolutional neural networks, CNN) можно использовать для тестирования на основе изображений или визуальной идентификации дефектов.

Еще один известный алгоритм — наивный байесовский алгоритм классификации, представляющий собой вероятностный алгоритм для задач классификации (Примечание: Microsoft Naive Bayes — алгоритм классификации, основанный на теоремах Байеса, который можно использовать как для исследовательского, так и прогнозного моделирования. Слово «упрощенный» в его названии указывает на то, что алгоритм использует методы Байеса, но не учитывает возможные зависимости). В нашем контексте его можно использовать для автоматической категоризации и приоритизации тест-кейсов. Это позволяет классифицировать тест-кейсы на основе их релевантности определенным модулям, функциональности или областям ПО, а также улучшает управление тест-кейсами и помогает QA-инженерам эффективно распределять ресурсы.

В случае если нужно отследить прогресс в жизненном цикле ошибки и получить общее представление о результатах тестирования, можно применить Метод случайного леса (англ. Random Forest) — алгоритм машинного обучения, заключающийся в использовании ансамбля решающих деревьев. Используя ранее полученные данные, метрики сложности кода и шаблоны дефектов, этот алгоритм позволяет предсказать вероятность обнаружения дефекта или уязвимости в тест-кейсе. Кроме того, реализация ML-алгоритмов в тестировании часто требует сотрудничества между QA-инженерами, специалистами по анализу данных и разработчиками ПО. Такое сотрудничество обеспечивает эффективную интеграцию алгоритмов в процесс QA и получение значимых результатов для повышения качества разрабатываемого продукта. Выбор алгоритма зависит от конкретного случая использования, имеющихся данных и поставленной задачи. Эффективность применения алгоритмов зависит от качества и репрезентативности обучающих данных, а также от процессов разработки.

Влияние искусственного интеллекта на будущее QA


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

Положительная сторона использования ИИ заключается в следующем:
  • Автоматизация и эффективность тестирования: Средства автоматизации на базе ИИ способны значительно повысить эффективность и скорость тестирования программного обеспечения за счет адаптивной приоритезации тест-кейсов. Благодаря этому QA-инженеры могут оптимизировать рабочие процессы и достичь более высокого уровня тестового покрытия. ИИ также можно подключить к созданию самовосстанавливающихся тестов, которые динамически адаптируются к изменениям в программном обеспечении, сокращая время и усилия, затрачиваемые на сопровождение.
  • Повышение точности и надежности: Алгоритмы искусственного интеллекта способны анализировать огромное количество данных, включая изменения кода, требования, ранее выявленные дефекты. Это помогает определить закономерности и спрогнозировать возникновение потенциальных проблем. Благодаря этому QA-инженеры могут сосредоточить усилия на критических областях, повысить точность и надежность тестирования ПО и помочь в выявлении и устранении потенциальных рисков на ранних этапах цикла разработки (SDLC), тем самым минимизируя возникновение критических проблем в продакшене.
  • Интеллектуальное управление тестированием: Системы управления тестированием на базе ИИ позволяют автоматизировать различные аспекты управления тест-кейсами, включая составление тест-сьютов, планирование выполнения тестов и анализ результатов. Используя возможности искусственного интеллекта, QA-инженеры могут оптимизировать свою работу по тестированию, улучшить взаимодействие и получить ценные выводы из проведенных тестов. Это позволяет принимать обоснованные решения и повышать общее качество программного обеспечения.

Приведем примеры применения искусственного интеллекта в работе QA-инженера.

Первый пример: инженер хочет создать автоматизацию, чтобы взаимодействовать с выпадающими меню и получить определенные значения из DOM-локаторов на сайте, построенном с использованием HTML, CSS и JavaScript. Таким образом, искусственному интеллекту была дана просто «карта» того, как найти это выпадающее меню.



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



Как видите, на изображении показан пример взаимодействия с выпадающим списком и использования промежуточных команд Cypress для захвата элементов в выпадающем списке, таких как команды «wrap» и «find», которые могут открыть несколько возможностей применения Cypress.



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



ChatGPT дает подробные рекомендации и комментарии по каждому шагу автоматизации, если возникает затруднение при выполнении понятного шага в коде автоматизации.

О проблемах, связанных с тем, как искусственный интеллект может повлиять на будущее QA:
  • Набор навыков и адаптируемость: Интеграция ИИ в сферу обеспечения качества требует от QA-специалистов нового набора навыков и адаптивности. Они должны овладеть знаниями в области методов, алгоритмов и инструментов ИИ, а также хорошо понимать основные процессы разработки ПО. Повышение квалификации и постоянное знакомство с достижениями в области ИИ будет иметь решающее значение для эффективного использования потенциала QA-инженеров.
  • Этические аспекты: По мере того как ИИ становится все более распространенным в QA, на первый план выходят этические аспекты. Тестировщики должны убедиться в том, что алгоритмы ИИ являются беспристрастными, справедливыми и не укрепляют существующие предубеждения или дискриминацию. Кроме того, при использовании ИИ в QA-процессах необходимо тщательно прорабатывать вопросы, связанные с конфиденциальностью, безопасностью данных и соблюдением нормативных требований.
  • Баланс между автоматизацией и человеческим подходом: Хотя ИИ может автоматизировать различные задачи тестирования, очень важно найти баланс между автоматизацией и сильными сторонами человека. Критическое мышление, обширные знания и интуиция QA-инженеров не получится полностью заменить искусственным интеллектом. Тестировщики могут использовать ИИ в качестве вспомогательного средства, применяя свои навыки для проверки результатов, интерпретации выводов и принятия обоснованных решений.

Необходимость человеческой экспертизы в QA


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

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

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

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

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

Заключение: будущее QA с учетом развития искусственного интеллекта


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



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

Комментарии (7)


  1. AnGord
    12.10.2023 17:07
    +3

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


    1. GospodinKolhoznik
      12.10.2023 17:07
      +1

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


  1. Doman
    12.10.2023 17:07
    +3

    Сложилось впечатление, что оригинальная статья написана не без помощи AI. Особенно доставили пассажи вроде:

    ИИ делает тестирование более стабильным, выполняя тесты каждый раз одинаково.

    Что до практики, то у меня пока не получается придумать как встроить AI в QA процесс. Для нормального тестирования необходимо слишком много контекста, который не получается засунуть в существующий context window. Плюс сами токены дорогие, можно разориться. Для атомарных задач вроде юнит или компонентных тестов подходит, а вот все что сложнее - уже нет.


  1. hel1n
    12.10.2023 17:07
    -1

    А точно это написал чат гпт!
    удалите мусорную статью


    1. rikki_tikki Автор
      12.10.2023 17:07

      На данный момент нет инструментов, способных точно определить, что текст написан искусственным интеллектом, эту задачу еще предстоит решить. Можно почитать об этом здесь: https://www.technologyreview.com/2023/02/07/1067928/why-detecting-ai-generated-text-is-so-difficult-and-what-to-do-about-it/


  1. amedvedjev
    12.10.2023 17:07
    -1

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


  1. SvoboniiLogin
    12.10.2023 17:07
    +1

    Эту говностатью тоже chatgpt написал ?