«Это самое умопомрачительное применение машинного обучения, которое я когда-либо видел».
Майк Кригер, сооснователь Instagram.
Слова Майка Кригера не являются гиперболой. В то время как ML способен на некоторые удивительные вещи с точки зрения анализа данных и их осмысления, GitHub Copilot является совершенно новым игровым инструментом благодаря потенциальной полезности, которую он может предоставить разработчикам продуктов по всему миру.
Кодировочные «вторые пилоты» и генеративный ИИ помогают командам получить огромные преимущества, например, ускорить жизненный цикл разработки программного обеспечения до немыслимых ранее скоростей. Однако влияние технологии на RPA и тестирование ПО — два наиболее интересных направления развития этой удивительной технологии.
В этой статье мы рассмотрим, как кодинговые копипасты и генеративный ИИ изменили мир тестирования ПО и RPA в наши дни, а затем изучим их будущее влияние на технологию.
Копилоты и генеративный ИИ в
Разработка программного обеспечения: Учебник
Генеративный искусственный интеллект и кодовые копипасты — относительные новички в сфере разработки программного обеспечения. Прежде чем говорить об их влиянии на пространство, стоит рассмотреть их биографию и принципы работы.
1. Автокодировщики, работающие на основе искусственного интеллекта
За последние несколько лет большие языковые модели (LLM) значительно улучшились. По мере экспоненциального роста объема массивов данных и вычислительных мощностей качество результатов растет.
Существует множество вертикалей, в которых могут быть полезны LLM. К числу наиболее распространенных относятся генерация текста, изображений, видео и других форм мультимедиа. Однако, несмотря на то, что эти примеры использования впечатляют, для разработчиков они имеют гораздо более интересные последствия.
На рынке представлено несколько автокодировщиков LLM. Однако GitHub CoPilot является, пожалуй, самым известным и наиболее совершенным. Во многом это связано с тем, что обучение ведется на репозитории GitHub. Она имеет доступ к миллионам примеров открытого кода, лучших практик, архитектуры приложений и многого другого, что позволяет ей получать качественные и универсальные результаты.
2. Как работают кодирующие копилоты?
Один из самых простых способов рассказать о том, как работают кодовые копипасты, — это рассмотреть ведущий продукт в этой области, GitHub CoPilot. Приложение построено на базе модели ChatGPT-3 компании OpenAi.
Как и ChatGPT и аналогичные LLM, CoPilot основывается на миллиардах параметров. В ходе разработки ChatGPT-3 компания OpenAI начала создавать специализированную программу кодирования, получившую название OpenAI Codex. Microsoft приобрела эксклюзивный доступ к продукту.
Однако ключевым моментом здесь является то, что Microsoft уже владела GitHub. Если вы занимаетесь программированием, вы наверняка знаете все о GitHub. По сути, это веб-платформа, используемая для контроля версий и совместной работы в проектах по разработке программного обеспечения. Они обучили OpenAI Codex на библиотеке GitHub, содержащей миллионы строк открытого публичного кода.
CoPilot использует машинное обучение для поиска закономерностей и взаимосвязей между строками кода. Как и ChatGPT, он смотрит на слово или строку и рассчитывает вероятность того, что будет дальше, основываясь на обширном хранилище исторических данных.
Сила ИИ-копилотов заключается в их способности предлагать фрагменты кода по мере редактирования разработчиками. Подумайте об этом как об усиленном автозаполнении для кодирования. Когда кодеры вводят строку кода, LLM сравнивает начало кода с огромной библиотекой предыдущих проектов. Отсюда вытекают вероятностные строки и новые строки кода.
Очевидные преимущества этого метода заключаются в том, что разработчики могут сэкономить невероятное количество времени за счет такого автозаполнения. Это повышает производительность и, во многих случаях, точность кода.
3. Как насчет генеративного ИИ для кодирования и разработки?
Как видно из истории создания CoPilot, генеративный ИИ и копилоты имеют схожие корни. Обе эти технологии используют статистическую вероятность для прогнозирования потребностей пользователей на основе вмененной информации.
Однако существенное различие между программами копирования и генеративным ИИ заключается в том, что последний основан на подсказках. Вкратце это означает, что пользователь вводит в машину набор письменных инструкций, а она выдает содержимое. Как известно всем, кто пользовался ChatGPT и подобными приложениями, вывод может осуществляться в виде текста, изображений, видео или кода.
Таким образом, несмотря на то, что методы, используемые кодерами для автоматизированного кодирования, различны, мы можем объединить их под общим названием «автоматизированное или генеративное кодирование с помощью ИИ».
Эволюция тестирования программного обеспечения
Тестирование программного обеспечения является оперативным и постоянно развивающимся процессом. За несколько десятилетий она изменилась и трансформировалась, чтобы соответствовать новым требованиям и использовать достижения технического прогресса.
1. Ручное тестирование:
На заре развития тестирования программного обеспечения оно проводилось вручную. Такое тестирование было дорогостоящим и трудоемким, поскольку требовало от специалистов QA тщательной проработки программного обеспечения: разработки серии тестовых примеров, выполнения и записи результатов, составления графика исправлений и повторения процесса.
Обеспечение того, чтобы все возможные сценарии и ситуации были охвачены этими тестами, представляло собой серьезную проблему, а если добавить к этому время и затраты, то ручное тестирование требовало значительных ресурсов. Кроме того, она была очень чувствительна к человеческим ошибкам, что усугублялось ограниченными возможностями распространения, а значит, любые необнаруженные ошибки было сложно быстро устранить.
2. Сценарное тестирование:
Сценарное тестирование стало огромным шагом вперед для сообщества QA. Вместо того чтобы вручную просматривать код и тестовые сценарии, разработчики получили возможность писать программы, позволяющие тестировать программное обеспечение автоматически. Большим плюсом здесь стало то, что тестирование стало более эффективным и менее подверженным человеческим ошибкам. Однако достижение этой цели требует квалифицированного, точного и трудоемкого планирования и кодирования для обеспечения полного охвата.
3. Автоматизация тестирования:
Автоматизация тестирования стала следующей эволюцией тестирования. Такие инструменты, как ZAPTEST, смогли предложить разработчикам все преимущества сценарного тестирования, но без кодового интерфейса. И здесь существенными преимуществами стали экономия времени, многократно используемые и адаптируемые тесты, тестирование пользовательского интерфейса и API, а также кроссплатформенное тестирование и тестирование на различных устройствах.
4. Тестирование на основе данных:
Тестирование, ориентированное на данные, стало решением проблемы тестирования программного обеспечения, обрабатывающего различные наборы данных. Это опять же одна из форм автоматизации тестирования, но данный метод предполагает создание тестовых сценариев и их выполнение на заданных наборах данных. Такой тип тестирования позволил разработчикам работать быстрее, изолировать тесты и сократить время на повторение тестовых примеров.
5. Генеративное тестирование ИИ:
Генеративное ИИ-тестирование — это новейшая инновация в области тестирования программного обеспечения. Используя LLM, команды QA могут создавать тестовые случаи и тестовые данные, что позволяет ускорить процесс тестирования. Эти тест-кейсы обладают высокой гибкостью и возможностью редактирования, что позволяет разработчикам повторно использовать и перепрофилировать тесты, а также значительно увеличить объем тестирования.
Современное использование вторых пилотов и
Генеративный ИИ в тестировании ПО и RPA
Генеративный ИИ и копипасты оказали большое влияние на тестирование программного обеспечения. Однако вместо того, чтобы полностью заменить кодеров, эти инструменты помогли расширить возможности тестировщиков. Одним словом, они помогают разработчикам стать быстрее и эффективнее, а во многих случаях повышают качество тестирования.
The
Опрос разработчиков Stack Overflow за 2023 год
предлагает некоторые сведения о современном использовании средств искусственного интеллекта в сообществе разработчиков программного обеспечения. Одним из наиболее интересных моментов исследования стало то, что, хотя чуть более половины разработчиков заявили о своем интересе к инструментам искусственного интеллекта для тестирования ПО, менее 3% заявили, что доверяют этим инструментам. Более того, лишь каждый четвертый заявил, что в настоящее время использует средства искусственного интеллекта для тестирования ПО.
Эта статистика интересна тем, что она показывает, что использование инструментов искусственного интеллекта еще не стало повсеместным и что ранние последователи все еще могут получить преимущество.
1. Варианты использования копирующего и генеративного ИИ в тестировании ПО и RPA
Копилоты и генеративный ИИ оказывают влияние на все области разработки программного обеспечения. Вот несколько способов, с помощью которых эта технология может помочь в тестировании ПО и RPA.
Анализ требований
Анализ требований является ключевой частью жизненного цикла разработки программного обеспечения. Этот процесс включает в себя понимание требований заинтересованных сторон и различных функций, необходимых для создания программного продукта. Генеративный ИИ может помочь командам в работе над идеями, предлагая новые идеи и точки зрения.
Планирование испытаний
После того как требования к тестам хорошо поняты, QA-команды должны разбить все на графики, чтобы обеспечить адекватное покрытие тестами. Такая работа требует знаний и опыта, но Generative AI может оказать поддержку командам с помощью примеров и руководств, а также дать рекомендации по конкретным инструментам и лучшим практикам для их уникальных требований.
Создание тестовых примеров
Группы контроля качества могут использовать LLM для анализа кода, пользовательских требований и спецификаций ПО, чтобы понять глубинные взаимосвязи, лежащие в основе системы. После того как ИИ получит представление о входных и выходных данных и ожидаемом поведении программного обеспечения, он может приступить к созданию тестовых примеров, которые будут тестировать программное обеспечение.
Преимущества здесь выходят за рамки экономии времени и ручного кодирования. Создание тестовых примеров с помощью искусственного интеллекта также может привести к более полному охвату, поскольку он может исследовать области, которые QA-инженеры могут не учитывать, что приводит к более надежным сборкам.
Поиск и устранение ошибок
Машинное обучение позволяет специалистам QA значительно сократить время поиска и устранения ошибок. При тестировании программного обеспечения многие ошибки легко обнаружить. Однако во многих сценариях это трудоемкий и длительный процесс. Генеративный ИИ может выполнять проверки за долю времени, затрачиваемого ручным персоналом, и помогать выявлять даже самые трудноустранимые ошибки. Более того, эти инструменты искусственного интеллекта могут также устранять выявленные ошибки, экономя бесконечное время команд QA.
Тестирование пользовательского интерфейса
Средства генеративного ИИ позволяют моделировать различные варианты поведения пользователей и их взаимодействия с программными системами. Эти методы могут дать командам разработчиков уверенность в том, что их интерфейс может работать с широким спектром задач, решаемых человеком и компьютером. Более того, генеративный ИИ может анализировать данные о пользовательском интерфейсе и тепловые карты и вносить предложения по улучшению пользовательского интерфейса и повышению его удобства.
Будущее вторых пилотов и генеративный ИИ
в области тестирования ПО и RPA
Хотя уже сегодня использование копилотов и генеративного ИИ в автоматизации программного обеспечения является захватывающим, будущее обещает еще больше.
Будущее копилота и генеративного ИИ зависит от усовершенствований, которые могут быть внесены в эти продукты. Недавнее исследование Университета Пердью, озаглавленное Кто лучше ответит на этот вопрос? Углубленный анализ ответов ChatGPT и Stack Overflow на вопросы по программной инженерии подчеркивает некоторые ограничения генеративных моделей ИИ.
Исследователи задали ChatGPT более 500 вопросов из Stack Overflow. Более чем на половину вопросов искусственный интеллект ответил неточно. Важно отметить, что одной из наиболее существенных проблем, отмеченных исследователями, было то, что чаще всего ИИ терпел неудачу из-за того, что не понимал правильно вопросы. Эта деталь подчеркивает важность оперативного проектирования в рамках генеративного ИИ.
Кроме того, в этом году Google и Amazon провели независимые тесты на качество работы инструментов генеративного ИИ в условиях интервью. В обоих случаях инструмент смог ответить на вопросы теста достаточно хорошо, чтобы получить должность, как сообщает
CNBC
и
Business Inside
, соответственно.
Таким образом, очевидно, что мы находимся на том этапе развития этой технологии, когда потенциал есть, но необходимо отладить некоторые мелкие моменты. Масштабы совершенствования этих средств в последние годы дают нам уверенность в том, что оно достигнет требуемого уровня и, возможно, с опережением графика.
Теперь мы можем рассмотреть некоторые области, в которых эти технологии окажут влияние на будущее тестирования при разработке программного обеспечения.
1. Гиперавтоматизация
Гиперавтоматизация описывает направление эволюции предприятия, где каждый процесс, который может быть автоматизирован, будет автоматизирован. Это целостный подход к производительности, в котором все очень взаимосвязано.
С точки зрения разработки программного обеспечения нетрудно представить себе централизованную систему с надзором за требованиями к бизнес-процессам. Система будет понимать и определять потребности и эффективность, а также постоянно выявлять области, которые необходимо улучшить с помощью технологий.
По мере развития бизнеса эти централизованные системы будут использовать генеративный искусственный интеллект для создания приложений, которые будут автоматически устранять узкие места и неэффективность или, возможно, передавать определенные задания инженерам для выполнения.
2. Проектирование архитектур программного обеспечения
При наличии достаточного количества данных инструменты искусственного интеллекта могут понять лучшие практики в области архитектуры программного обеспечения и найти способы улучшения этих конструкций для достижения максимальной эффективности. Машинное обучение — это поиск закономерностей и взаимосвязей, которые неподвластны человеческому разуму.
Если инструменты искусственного интеллекта обладают достаточными знаниями о различных приложениях, мы можем поручить им изменить прежние архитектуры в соответствии с новыми требованиями, что приведет к созданию более эффективных конструкций или даже идей, которые в противном случае не были бы рассмотрены.
3. Модернизация унаследованных систем
Хотя ни одно программное обеспечение никогда не бывает совершенным, существует множество инструментов, которые по-прежнему отлично справляются со своими обязанностями и настолько прочно вошли в инфраструктуру компании, что их трудно заменить. Адаптация таких систем может оказаться непростой задачей, особенно если они были написаны с использованием программного кода, вышедшего из моды.
В будущем инструменты генеративного ИИ смогут преобразовывать этот код на современный язык, что позволит командам сохранить унаследованные системы, а во многих случаях и улучшить их.
4. Расширение возможностей низкокодовой и бескодовой разработки
Одной из проблем автоматизации тестирования ПО с помощью средств генеративного ИИ, которую мы обозначили выше, была ситуация, когда кодеру не хватало знаний и опыта для проверки выходных данных.
ИИ-пилоты помогут дополнить инструменты для работы с низким кодом, делая лучшие предложения, которые приведут к созданию надежных приложений. Сложные средства тестирования позволят операторам свободно творчески подходить к работе, постоянно проверяя их работу и открывая возможность нетехническим специалистам создавать необходимые приложения.
Преимущества генеративного ИИ в тестировании программного обеспечения
Использование генеративного ИИ для тестирования программного обеспечения имеет множество преимуществ, которые делают его привлекательным вариантом для команд разработчиков, желающих работать быстрее, но без ущерба для качества.
1. Ускорение жизненного цикла разработки программного обеспечения
Разработчики находятся под постоянным давлением, вынуждены работать подолгу, чтобы обеспечить своевременное появление на рынке программного обеспечения и новых функций. Хотя методологии Agile/DevOps обеспечили повышение эффективности разработки, все еще существуют отдельные этапы разработки, которые могут выиграть от дальнейшей рационализации.
Инструменты генеративного ИИ позволяют командам тестирования решать задачи на различных этапах SDLC — от создания прототипов до тестирования пользовательского интерфейса.
2. Комплексное обнаружение ошибок
Одно из наиболее мощных применений ИИ в тестировании программного обеспечения связано со способностью технологии сравнивать большие массивы данных. Инструменты ML могут анализировать огромные массивы данных (включая код) для создания хранилища информации и предполагаемых моделей.
Когда разработчики фиксируют код, они могут сравнить его с этими моделями, что позволяет выявить неожиданные сценарии, зависимости и уязвимости, а также улучшить код на протяжении всего процесса разработки.
3. Улучшенное покрытие тестами
Инструменты машинного обучения предназначены для анализа и понимания огромных массивов данных. Применительно к тестированию программного обеспечения он позволяет командам увеличить объем тестирования программного обеспечения. Преимущества заключаются не только в исключении человеческого труда из уравнения для экономии средств; ИИ также приводит к гораздо более полному тестированию, позволяющему улучшить обнаружение ошибок в сложном наборе сценариев.
4. Снижение затрат
По сравнению с наймом команды инженеров по контролю качества и использованием их для выполнения повторяющихся и трудоемких задач тестирования ПО, генеративный искусственный интеллект и RPA являются более быстрыми и экономически эффективными.
По мере того как мир разработки программного обеспечения становится все более конкурентным, возрастает важность поиска путей поставки качественных и долговечных продуктов в рамках бюджета. Инструменты генеративного ИИ и «копилоты» могут снизить зависимость от инженеров, позволить им выполнять работу, ориентированную на ценность, и привести к менее раздутым сборкам.
Означают ли инструменты генеративного ИИ конец
человеческих инженеров-программистов?
Несмотря на очевидные преимущества, любой инструмент автоматизации может вызывать у работников чувство тревоги за свое будущее. Хотя это нормальная реакция, скорость и масштабы генеративного ИИ означают, что опасения более обширны, чем обычно. Хотя эти инструменты способны автоматизировать многие виды работ, они не могут выполнить все задачи, которые ставят перед собой инженеры-программисты. Понимание возможностей технологий, а также их ограничений крайне важно для инженеров и руководителей.
Прежде всего, необходимо помнить, что средства автоматизации тестирования на основе искусственного интеллекта существуют на рынке уже достаточно давно. Однако удобство использования генеративного ИИ делает его еще более гибким.
В первую очередь необходимо учитывать, что генеративный ИИ лучше всего работает для результатов, которые можно проверить. Это ключевой момент. Характер подготовки магистров означает, что они сделают все возможное, чтобы дать вам ответ, даже если это иногда означает «галлюцинацию» фактов, ссылок и аргументов.
Теперь, если вы обладаете достаточными знаниями в области кодирования, вы сможете прочитать и проверить любой текст, выводимый Generative AI, и выявить возможные ошибки. Если вы — гражданский кодер, использующий генеративный искусственный интеллект вместо умения кодить, вы не сможете заметить эти ошибки.
Таким образом, если смотреть с этой точки зрения, то квалифицированные инженеры по-прежнему будут важнейшей частью экосистемы разработки программного обеспечения. Они по-прежнему будут обязаны проводить тестирование как в надзорном, так и в практическом смысле.
Еще одно ограничение применения генеративного ИИ для тестирования ПО связано с мобильным тестированием. Например, ChatGPT — хороший вариант для тестирования пользовательских интерфейсов сайтов. Однако он не имеет доступа к различным мобильным устройствам. При наличии на рынке большого количества различных телефонов и моделей он отстает от современных программ автоматизации тестирования, таких как ZAPTEST. Эта проблема также не является незначительным препятствием. Более
половина всего использования Интернета приходится на мобильные телефоны
и эта цифра растет с каждым годом.
Таким образом, хотя генеративный ИИ отнимет у разработчиков многие обязанности, он не вытеснит этих специалистов без существенных изменений в инфраструктуре тестирования и возможности верификации результатов.
Заключительные мысли
Тестирование ПО и RPA находятся на пути постоянного совершенствования. По мере появления новых технологий и методов обе дисциплины перенимают передовой опыт, чтобы помочь командам QA проводить более быстрое и комплексное тестирование по цене, в разы меньшей, чем при ручном тестировании.
Хотя повышение объема тестов, сокращение человеческих ошибок и затрат — одни из наиболее очевидных преимуществ тестирования с помощью ИИ, оно также помогает командам внедрить подход, основанный на непрерывной интеграции и конвейерном развертывании (CI/CD).
В условиях, когда ожидания потребителей и конкуренция высоки как никогда, генеративный искусственный интеллект дает командам возможность быстро и эффективно проводить испытания без ущерба для качества.