Каждый раз, когда я упоминаю, что мой стартап Appsurify (appsurify.com) разрабатывает AI / ML для тестирования программного обеспечения, все предполагают, что мы запускаем ботов, чтобы находить ошибки или создавать для них тесты. То, что следует далее, неизбежно представляет собой шутку о Терминаторах с плохим акцентом Шварценеггера, сопровождаемую выражением страха, не за то, что Скайнет уничтожает людей, а просто забирает их работу.

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

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

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

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

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

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

Если вы хотите увидеть, как это работает, мы разместили 10-минутную демонстрацию системы машинного обучения TestBrain в действии по адресу: https://youtu.be/wVvtuZXdGZk.