Ответы:
В моем мире мы используем следующие термины:
функциональное тестирование : это проверка деятельности; мы создали правильно работающий продукт? Соответствует ли программное обеспечение бизнес-требованиям?
Для этого типа тестирования у нас есть тестовые случаи, которые охватывают все возможные сценарии, которые мы можем придумать, даже если этот сценарий вряд ли существует "в реальном мире". При проведении такого типа тестирования мы стремимся к максимальному охвату кода. Мы используем любую тестовую среду, которую можем получить в то время, это не обязательно должен быть «производственный» калибр, если он пригоден для использования.
приемочные испытания : Это проверка деятельности; мы построили правильную вещь? Это то, что действительно нужно клиенту?
Обычно это делается в сотрудничестве с клиентом или внутренним доверенным лицом клиента (владельцем продукта). Для этого типа тестирования мы используем тестовые случаи, которые охватывают типичные сценарии, при которых мы ожидаем, что программное обеспечение будет использоваться. Этот тест должен проводиться в «производственной» среде, на оборудовании, которое совпадает или близко к тому, что будет использовать клиент. Это когда мы проверяем наши «способности»:
Надежность, доступность : подтверждено стресс-тестом.
Масштабируемость : подтверждено нагрузочным тестом.
Удобство использования : подтверждено осмотром и демонстрацией клиенту. Настроен ли пользовательский интерфейс по своему вкусу? Разместили ли мы брендинг клиента во всех нужных местах? У нас есть все поля / экраны, которые они просили?
Безопасность (также известная как Securability, просто для встраивания) : подтверждена демонстрацией. Иногда клиент нанимает стороннюю фирму для проведения аудита безопасности и / или тестирования на проникновение.
Ремонтопригодность : подтверждено демонстрацией того, как мы будем предоставлять обновления / исправления программного обеспечения.
Конфигурируемость : подтверждено демонстрацией того, как клиент может модифицировать систему в соответствии со своими потребностями.
Это ни в коем случае не стандарт, и я не думаю, что есть «стандартное» определение, как показывают противоречивые ответы здесь. Самым важным для вашей организации является то, что вы точно определяете эти термины и придерживаетесь их.
Мне нравится ответ Патрика Каффа. То , что я хотел бы добавить , это различие между тестом уровнем и типом тестом , который был для меня сенсационный.
Уровень тестирования легко объяснить с помощью V-модели , например: Каждый уровень тестирования имеет свой соответствующий уровень разработки . У него типичные временные характеристики, они выполняются на определенной стадии жизненного цикла разработки.
Тип теста - это характеристика, он ориентирован на конкретную цель теста. Типы тестов подчеркивают ваши аспекты качества, также известные как технические или нефункциональные аспекты. Типы тестов могут быть выполнены на любом уровне тестирования . Мне нравится использовать в качестве типов испытаний качественные характеристики, упомянутые в ИСО / МЭК 25010: 2011.
Чтобы завершить это. Есть также то, что называется регрессионным тестированием . Это дополнительная классификация рядом с тестом уровня и типа теста . Регрессионный тест тест вы хотите повторить , потому что он затрагивает что - то критическое в вашем продукте. На самом деле это подмножество тестов, которые вы определили для каждого уровня тестирования . Если в вашем продукте исправлена небольшая ошибка, не всегда есть время повторить все тесты. Регрессионное тестирование является ответом на это.
Разница между тестированием проблемы и решением. Программное обеспечение является решением проблемы, оба могут быть проверены.
Функциональный тест подтверждает, что программное обеспечение выполняет функцию в пределах того, как вы решили проблему. Это неотъемлемая часть разработки программного обеспечения, сравнимая с тестированием, которое проводится на серийном продукте перед его отправкой с завода. Функциональный тест проверяет, что продукт действительно работает так, как вы (разработчик) думаете.
Приемочные испытания подтверждают, что продукт фактически решает проблему, для решения которой он был создан. Лучше всего это может сделать пользователь (заказчик), например, при выполнении своих задач, с которыми помогает программное обеспечение. Если программное обеспечение проходит это испытание в реальном мире, оно заменяет предыдущее решение. Этот приемочный тест может иногда проводиться надлежащим образом только на производстве, особенно если у вас есть анонимные клиенты (например, веб-сайт). Таким образом, новая функция будет принята только после нескольких дней или недель использования.
Функциональное тестирование - протестируйте продукт, убедившись, что он обладает качествами, которые вы спроектировали или создали (функции, скорость, ошибки, согласованность и т. Д.)
Приемочное тестирование - тестирование продукта в его контексте, для этого необходимо (имитировать) взаимодействие с человеком, проверить, оказывает ли оно желаемое влияние на исходные задачи.
Ответ - мнение. Я работал во многих проектах и был тест-менеджером и менеджером проблем, и все разные роли и описания в разных книгах различны, поэтому вот мой вариант:
функциональное тестирование: примите бизнес-требования и протестируйте все это хорошо и тщательно с функциональной точки зрения.
приемочное тестирование: «платящий» клиент проводит тестирование, которое ему нравится, чтобы он мог принять поставленный продукт. Это зависит от клиента, но обычно тесты не такие тщательные, как функциональное тестирование, особенно если это внутренний проект, потому что заинтересованные стороны проверяют и доверяют результатам теста, проведенного на более ранних этапах тестирования.
Как я уже сказал, это моя точка зрения и опыт. Функциональное тестирование является систематическим, и приемочное тестирование - это, скорее, бизнес-департамент, проводящий тестирование.
Зрительская аудитория. Функциональное тестирование должно гарантировать членам команды, производящей программное обеспечение, то, что оно делает, что они ожидают. Приемочное тестирование должно гарантировать потребителю, что оно отвечает его потребностям.
Объем. Функциональное тестирование одновременно проверяет функциональность только одного компонента. Приемочное тестирование охватывает любой аспект продукта, который достаточно важен для потребителя, чтобы протестировать его перед принятием программного обеспечения (т. Е. Все, что стоит времени или денег, которые потребуются для его тестирования, чтобы определить его приемлемость).
Программное обеспечение может пройти функциональное тестирование, интеграционное тестирование и системное тестирование; только провал приемочных испытаний, когда клиент обнаруживает, что функции просто не отвечают их потребностям. Обычно это подразумевает, что кто-то облажался со спецификацией. Программное обеспечение также может не пройти некоторые функциональные тесты, но пройти приемочное тестирование, потому что клиент готов иметь дело с некоторыми функциональными ошибками, пока программное обеспечение выполняет основные задачи, которые ему необходимы, достаточно хорошо (бета-версия программного обеспечения будет часто приниматься подмножеством пользователей до него). полностью функционален).
Функциональное тестирование: применение тестовых данных, полученных из указанных функциональных требований, без учета окончательной структуры программы. Также известный как тестирование черного ящика.
Приемочное тестирование. Формальное тестирование, проводимое для определения того, удовлетворяет ли система критериям приемлемости, - позволяет конечному пользователю определить, принимать или не принимать систему.
На мой взгляд, основное различие заключается в том, кто говорит, если тесты пройдены успешно или не пройдены.
Функциональный тест проверяет, что система соответствует заранее определенным требованиям. Это выполняется и проверяется людьми, ответственными за разработку системы.
Приемочный тест подписывается пользователями. В идеале пользователи скажут, что они хотят протестировать, но на практике это может быть закат функционального теста, поскольку пользователи не тратят достаточно времени. Обратите внимание, что это мнение принадлежит бизнес-пользователям, с которыми я имею дело, например, авиация и другие критически важные для безопасности аспекты, которые могут не иметь такой разницы,
... это «черный ящик», проводимый в системе (например, в программном обеспечении, большом количестве изготовленных механических деталей или партиях химических продуктов) до ее поставки.
Хотя это продолжает говорить:
Он также известен как функциональное тестирование, тестирование черного ящика, принятие релиза, тестирование качества, тестирование приложений, тестирование на достоверность, финальное тестирование, валидационное тестирование или заводское приемочное тестирование.
с пометкой "цитата нужна".
Функциональное тестирование (которое фактически перенаправляет на тестирование системы):
проводится на полной, интегрированной системе для оценки соответствия системы ее указанным требованиям. Системное тестирование входит в сферу тестирования черного ящика, и, как таковое, не должно требовать знания внутреннего дизайна кода или логики.
Таким образом, из этого определения они в значительной степени одно и то же.
По моему опыту приемочные тесты обычно являются подмножеством функциональных тестов и используются заказчиком в формальном процессе подписки, в то время как функциональные / системные тесты будут проводиться разработчиком / отделом контроля качества.
Отношения между ними: Приемочный тест обычно включает функциональное тестирование, но может включать дополнительные тесты. Например, проверка требований к маркировке / документации.
Функциональное тестирование - это когда тестируемый продукт помещается в тестовую среду, которая может вызывать различные стимулы (в рамках теста), которые обычно производит целевая среда, или даже за ее пределами, при изучении реакции тестируемого устройства.
Для физического продукта (не программного обеспечения) существует два основных вида приемочных испытаний : проектные испытания и производственные испытания. При проектных испытаниях обычно используется большое количество образцов продукции, которые прошли производственные испытания. Разные потребители могут тестировать дизайн разными способами.
Приемочные испытания называются проверкой, когда дизайн проверяется на соответствие спецификации продукта, а приемочные испытания называются проверкой, когда продукт помещается в реальную среду потребителя.
Приемочное тестирование - это просто тестирование, проводимое клиентом, и включает в себя другие виды тестирования:
Для функционального тестирования против нефункционального тестирования (их подтипы) - см. Мой ответ на этот вопрос SO .
Это одно и то же.
Приемочное тестирование выполняется на законченной системе, максимально идентичной реальной среде производства / развертывания, прежде чем система будет развернута или доставлена.
Вы можете сделать приемочное тестирование в автоматическом режиме или вручную.