Искусственный интеллект и машинное обучение заменят тестеров программного обеспечения
Большинство команд разработчиков программного обеспечения считают, что они плохо их тестируют. Они понимают, что дефекты качества имеют существенное значение, и вкладывают большие средства в обеспечение качества, но все равно не получают желаемых результатов. Это не из-за недостатка талантов или усилий - технология, поддерживающая тестирование программного обеспечения, просто неэффективна.
Не может быть успешного выпуска, пока программное обеспечение не будет должным образом и тщательно протестировано, а тестирование иногда может потребовать значительных ресурсов, учитывая количество времени и человеческие усилия, необходимые для правильного выполнения задач. Эта потребность только начинает заполняться.
Машинное обучение (МО), которое изменило и улучшило многие отрасли, только начинает пробиваться в тестирование программного обеспечения. С ростом потребности в тестировании, растет и спрос, поэтому эта отрасль уже никогда не будет прежней. В то время как МО все еще растет и развивается, индустрия программного обеспечения использует его все чаще и его влияние начинает существенно менять способ проведения тестирования программного обеспечения по мере совершенствования технологии.
Некоторые сведения о тестировании программного обеспечения
Тестирование ПО - это процесс проверки того, выполняет ли ПО те функции, для которых оно было разработано. Функциональное тестирование обеспечения качества (QA), форма тестирования, которая гарантирует, что ничего принципиально не нарушено, выполняется тремя способами: модульное тестирование, API и сквозное тестирование.
Модульное тестирование - это процесс проверки того, что блок кода дает правильный результат для каждого входа. Тесты API вызывают интерфейсы между модулями кода, чтобы убедиться, что они могут взаимодействовать. Эти тесты небольшие, дискретные и предназначены для обеспечения функциональности детерминированных фрагментов кода.
Сквозное (E2E) тестирование гарантирует, что приложение рабочее, когда оно полностью готово и работает в "полевых условиях". E2E-тестирование проверяет, как весь код работает вместе и как приложение работает как один продукт. Тестировщики будут взаимодействовать с программой так же, как потребитель, посредством основного тестирования (где они проверяют то, что сделано повторно) и пограничного тестирования (где они проверяют неожиданные взаимодействия). Эти тесты обнаруживают, когда приложение не отвечает так, как хотелось бы клиенту, позволяя разработчикам внести исправления.
Обычное тестирование E2E может быть ручным или автоматическим. Ручное тестирование требует, чтобы люди нажимали на приложение каждый раз, когда оно тестируется. Это требует много времени и подвержено ошибкам. Автоматизация тестирования включает в себя написание сценариев, заменяющих людей, но эти сценарии, как правило, работают непоследовательно и требуют огромных затрат времени на обслуживание по мере развития приложения. Оба метода дороги и во многом зависят от человеческой интуиции. Все пространство для тестирования E2E достаточно дисфункционально, чтобы его можно было разрушить с помощью методов ИИ/MО.
Что такое машинное обучение?
Хотя машинное обучение часто используется как синоним ИИ, это не совсем одно и то же. Машинное обучение использует алгоритмы для принятия решений и использует обратную связь с человеком для обновления этих алгоритмов.
Хороший пример - машинное зрение. Приложение машинного зрения может идентифицировать что-то как кошку, хотя на самом деле это собака. Человек исправляет это (говоря: "Нет, это собака") и набор алгоритмов, определяющих, является ли что-то кошкой или собакой, обновляет данные на основе этой обратной связи. Машинное обучение предназначено для принятия более эффективных решений с течением времени на основе постоянной обратной связи от тестировщиков и пользователей.
Машинное обучение изо всех сил пыталось достичь уровня E2E-тестирования из-за отсутствия данных и обратной связи. E2E-тестирование обычно строится на интуиции человека в отношении того, что важно тестировать или какие функции кажутся важными или рискованными. Новые приложения используют данные аналитики продуктов для информирования и улучшения автоматизации тестирования, открывая двери для циклов машинного обучения, чтобы значительно ускорить обслуживание и создание тестов.
Будущее тестирования программного обеспечения
Будущее тестирования ПО - это более быстрые тесты, более быстрые результаты и, самое главное, тесты, которые узнают, что действительно важно для пользователей. В конечном счете, все тестирование направлено на то, чтобы убедиться, что пользовательский интерфейс прекрасен. Если мы сможем научить машину тому, что волнует пользователей, мы сможем тестировать лучше, чем когда-либо прежде.
Обычно тестирование отстает от разработки как по скорости, так и по полезности. Автоматизация тестирования часто является слабым местом для инженерных команд. MО может сделать его сильной стороной.
MО означает автономность для будущего тестирования программного обеспечения. Умные машины смогут, используя данные о текущем использовании приложений и прошлом опыте тестирования, создавать, поддерживать, выполнять и интерпретировать тесты без участия человека.
Вероятно, не все аспекты разработки программного обеспечения следует автоматизировать. Учитывая давнюю традицию тестирования E2E, в основе которого лежит человеческая интуиция и человеческие ресурсы, отрасль в целом может поначалу сопротивляться передаче процесса машинам. Практически во всех отраслях инсайдеры утверждают, что машины никогда не смогут выполнять работу человека.
В мире тестирования разворачивается знакомая история: автоматизация тестирования на основе машинного обучения сегодня находится в зачаточном состоянии, но через несколько лет, МО может захватить отрасль.
Автономные сквозные тесты
Основное преимущество машинного обучения в тестировании E2E - это возможность использовать очень сложные данные аналитики продуктов для выявления и прогнозирования потребностей пользователей. Тестирование на основе машинного обучения позволяет отслеживать каждое взаимодействие пользователя с веб-приложением, понимать общие (и пограничные) пути, через которые проходят пользователи, и гарантировать, что эти варианты использования всегда работают должным образом.
Если эта машина тестирует множество приложений, она может учиться на всех этих приложениях, чтобы предвидеть, как новые изменения в приложении повлияют на взаимодействие с пользователем. Благодаря этим данным тестирование на основе МО уже может создавать более качественные и содержательные тесты, чем люди.
Тесты, разработанные с помощью автоматизации на основе МО создаются и поддерживаются быстрее и дешевле, чем автоматизация тестирования, созданная людьми. Такое тестирование приводит к гораздо более быстрому (и более качественному) развертыванию и является благом для бюджета любого вице-президента по проектированию.
Как насчет тестеров?
А как насчет людей, которые в настоящее время выполняют эту работу?
Инженеры по качеству по-прежнему играют важную роль в разработке программного обеспечения. Самый эффективный способ обеспечить качество программного обеспечения - это встроить контроль качества в проектирование и разработку самого кода. Тестирование существует только потому, что этот процесс несовершенен.
Поскольку MО берет на себя бремя тестирования E2E от инженеров-испытателей, эти инженеры могут использовать свой опыт совместно с инженерами-программистами для создания высококачественного кода с нуля.
Будущее выглядит радужным
MО предлагает более рациональный и эффективный процесс тестирования ПО, который лучше приспособлен для обработки больших объемов данных и создания необходимых специализированных тестов. Интеллектуальное тестирование программного обеспечения - это тесты на основе данных, точные результаты и инновационное развитие отрасли.