На самом деле никто и ничто не избежит забвения. Что ни говори, а история человечества – это история автоматизации и последующей эволюции работников. Так произошло и в первую промышленную революцию, и во вторую. Цифровая революция тоже не нарушила этот закон. Сейчас же повсюду внедряется машинное обучение и искусственный интеллект. Что ожидает сферу тестирования ПО в новом мире?
![](https://habrastorage.org/getpro/habr/upload_files/c7e/fc3/f5c/c7efc3f5c309f87d173c02cea1e32982.png)
Автоматизация всемогущая
Люди всё меньше и меньше работают руками и всё больше обслуживают системы, которые делают всё за нас. Это потрясающе, не так ли? Человек вообще плохо подходит для работы, ведь мы не были спроектированы для этого. Чего, кстати, не скажешь о машинах.
И мы действительно были невероятно хороши всё это время. Хоть люди до сих пор местами работают руками, но это больше не является абсолютной необходимостью. Все однотипные задания были успешно заменены на машины, а люди стали операторами этих производственных агрегатов, что в сочетании с конвейером создало небывалые производственные мощности.
И мы продолжаем этот процесс в сумасшедшей скоростью, усложняя задачи! Google ассистент уже может забронировать для вас столик ресторане, а беспилотные роверы от Yandex способны доставить вам домой еду!
![](https://habrastorage.org/getpro/habr/upload_files/4cc/803/26c/4cc80326c2d3981c3db5cb5ee3854723.png)
Го автоматизировать - я создал
Разумеется, сфера тестирования ПО не обошла стороной этот естественный процесс. Вообще какие-то её подвиды уже прекрасно автоматизированы. Например, то же тестирование компонентов, благодаря механизму unit-тестов, существует вполне себе автономно и сообщает о проблемах без участия человека. Конечно, тут есть проблема в том, что нужно сначала эти самые тесты написать, да причём ещё так, чтобы они действительно хорошо покрывали реализованный функционал…
Однако далеко не всё так гладко, как хотелось бы. Трудно себе представить подобную автоматизацию того же тестирования локализации. Хотя… Немного погуглив на тему “localization testing automation” я ничего не смог найти, но добавив ко всему этому “machine learning” сразу нашлось что-то интересное.
Один магистр инженерии (да, я понятия не имею как его именовать, поэтому взял из статьи :( ) провёл небольшое исследование на тему того, можно ли при помощи AI автоматизировать тестирование локализации. Был создан прототип NEAR (Navigate, Extract, Analyze and Report), который судя по результатам вполне себе успешно справился с поставленной задачей. Кстати, он успел изучить 3 приложения на предмет косяков локализации за 5 с небольшим минут. Да… Пойду что ли кофе попью…
Причём NEAR является преимущественно компиляцией из уже готовых решений – облачных AI, таких как Google Cloud Vision, Google Natural Language Processing и IBM Watson Natural Language Processing. Так что у нас уже есть нормальный такой базис, чтобы неплохо всё это автоматизировать.
Само собой, не всё так однозначно. Как можно себе представить автоматизацию юзабилити-тестирования? Да, тут тоже есть ложка машинного обучения. Я не буду оригинальным и вновь отправлюсь по пути наименьшего сопротивления – “usability testing automation machine learning”. И вот опять что-то нашлось. Нет, на этот раз никто не предлагает заменить людей на AI. Здесь уже речь идёт о том, что при помощи машинного обучения мы можем многократно улучшить анализ собранных данных. Вау! Никогда бы не подумал…
![](https://habrastorage.org/getpro/habr/upload_files/afa/c8f/b2b/afac8fb2b785235d3e2184724513ed85.png)
Ты должен был бороться со злом!
Да… Звучит как-то удручающе. Впрочем, не стоит унывать сразу – на этом всё не заканчивается. Или же не одной автоматизацией едины. Помимо того, существуют и различные инструменты, которые помогают уменьшить количество ошибок ещё на этапе разработки.
Например, статические анализаторы, которые анализируют исходный код и ругаются на различного рода ошибки. Тут достаточно большой спектр различных проблем в коде и потенциальных уязвимостей. Если хотите побольше узнать, что можно с их помощью найти, то почитайте эту статью.
Так что нельзя говорить, что развитие инструментов одного только тестирования меняет правила игры. Развитие культуры и инструментария разработки вносит не меньший вклад в этот процесс. А инструментов становится действительно всё больше и больше.
Если вы думаете, что всё это ограничивается статическим и динамическим анализом, то вы сильно отстали от жизни. Например, в Visual Studio 2022 появился autocomplete, который может дописывать за вами целые строки кода! И это только начало...
![](https://habrastorage.org/getpro/habr/upload_files/c1c/c1f/933/c1cc1f93357143139e5a4fd90670b71b.png)
Сокращаем штат?
Пока вы заводите тракторы, я объясню, что всё совсем не так худо, как могло показаться на первый взгляд. Да, благодаря анализаторам кода и другим полезным инструментам до тестирования доходит всё меньше и меньше ошибок. Но есть тут одно такое небольшое «НО» - не бывает кода без багов.
Вы можете посадить тысячи тестировщиков и всё равно исправляя одну проблему будете получать новые и новые. И этот цикл поиска и исправления будет скорее всего бесконечным. Вы всегда будете находить всё больше и больше проблем. Как же это так?
Дело в том, что код – это крайне сложная структура из миллионов инструкций. Если ваш проект существует хотя бы пару-тройку лет, то скорее всего в коде никто уже до конца не разбирается. Да, что-то где-то работает, тут костыльная фабрика, а вон там потрясающие архитектурные решения… И во всём этом хаосе надо ещё находить причины бредового поведения!
Теперь давайте по одному добавлять полезные инструменты. Начнём с добавления статического анализа. Теперь он находит разные опечатки, ошибки, неправильное использование методов и т.д. Отлично! Значит теперь мы снизили нагрузку с тестировщиков? Не-а…
У вас всё ещё вагон и маленькая тележка проблем разного рода. Статический анализ покрыл только определённые типы проблем. Хорошо, давайте добавим динамический анализ! Поздравляю – утечек памяти стало меньше.
Но на этом же всё не закончится? Да, так и есть - даже если добавить всё о чём я говорил, то работа никуда не денется. Просто теперь вы в автоматическом режиме находите достаточно большое количество различных проблем. Это вовсе не означает, что теперь вам не нужны тестировщики. Это означает, что теперь вы будете находить больше проблем, благодаря поиску в широком спектре различных типовых проблем.
![](https://habrastorage.org/getpro/habr/upload_files/ad1/20e/3ff/ad120e3ffa63f97d2ccdb605259dae02.png)
Эволюция профессии
Итак, а что же делать, чтобы оставаться полезным, а главное в тренде? Эволюционируйте! Не пытайтесь бороться с автоматизацией, а поймите почему и как именно она существует. Ведь, как я сказал в самом начале статьи, от неё никуда и никому не деться.
Вы будете намного ценнее, как специалист, который понимает внутреннее устройство этих систем. Что, кстати, было справедливо всегда и везде. Так что желаю вам запастись терпением и базовой теорией машинного обучения :)
Интересное
На правах рекламы
Кстати, мы занимаемся разработкой статического анализатора. Если кратко, то это штука, которая проверяет за вами код на ошибки. Если не верите, что она способна найти что-то за вами, то ловите ссылку на бесплатный триал и посмотрите сами :)
![](https://habrastorage.org/getpro/habr/upload_files/04c/f93/8c0/04cf938c0ec2bf2fe17801f73468f547.png)