Этот, казалось бы, глупый вопрос задают с завидной регулярностью. Казалось бы уже давно все должно быть понятно, но нет.
Я работал в тестировании 3 года, в автоматизации 7 лет, и в разработке - все оставшееся время, и вскоре я буду выступать на Национальной Конференции по Тестированию в Великобритании с ответом на этот вопрос. Но конференция еще не скоро, а многим, видно, интересно узнать ответ уже сейчас.
Чтож, я готов ответить. Мне кажется уместно ответить на сам вопрос, и попробовать разобраться с контекстом данного вопроса.
Начнем с самого вопроса
И для начала стоит определить термины. Что такое тестирование?
Вам на выбор два определения. Определение первое, из сертификации ISQTB:
"The process consisting of all lifecycle activities, both static and dynamic, concerned with planning, preparation and evaluation of a component or system and related work products to determine that they satisfy specified requirements, to demonstrate that they are fit for purpose and to detect defects. " [1]
Что можно вольно перевести следующим образом:
"Процесс состоящий из всех активностей, статичных и динамичных, имеющих отношение к планированию, подготовке и оценке компонентов или систем а также производных продуктов для определения соответствую ли они заданным требованиям, для демонстрации пригодности для применения и поиска дефектов"
Второе определение из методологии Rapid Software Testing, которую продвигают Майкл Болтон и Джеймс Бах:
"Testing is the process of evaluating a product by learning about it through experiencing, exploring, and experimenting, which includes to some degree: questioning, study, modeling, observation, inference, etc." [2]
Вольный перевод:
"Тестирование это процесс оценки продукта посредством изучения через опыт, исследование, постановку экспериментов, которое включает в себя постановку вопросов, изучение, моделирование, наблюдение, деструктивные методы оценки"
Что тогда автоматизированное тестирование?
Я вижу два варианта. Первый - это тестирование (в полном соответствии с определениями выше), выполняемое автоматически. Как не трудно догодаться, это просто невозможно, потому что:
1) Проблема останова (теоретически невозможно написать программу достоверно валидирующую другое программу)
2) Закон Эшби (для надежной автоматизации тестирования, автоматизация должна быть более сложной, чем тестируемы продукт)
3) Диллема лица принимающего решения (кого увольнять\сажать\расстреливать в случае критической ошибки, например как в Боинг МАХ)
Второй вариант будет подрузомевать некое подможество тестирования, например подмножество тестирования в виде автоматизированной регрессии. В таком случае ответ очевиден - оно не может заменить тестирование, потому что не является полноценной заменой.
Теперь перейдем к контексту вопроса
Почему (зачем) человек задает данный вопрос? Опять таки, несколько вариантов:
1) Это тестировщик, у которого нет навыков разработки\автоматизации, и который хочет убедиться, что его работе ничего не угражает;
2) Это автоматизатор тестирования, который во всем видит тесты, которые надо автоматизировать;
3) Это менеджер, который пытается сделать стратегические кадровые решения.
Все эти товарищи под одним вопросом интересуются РАЗНЫМИ вещами.
Это сокращенная версия статьи. Полную версию можно прочитать здесь: https://habr.com/ru/post/565352/
[1] https://glossary.istqb.org/app/en/search/testing
[2] https://www.satisfice.com/blog/archives/856
Приглашаю вас на мой youtube канал, где мы обсуждаем эту и другие релевантные темы: