Ответ
Это разные уровни тестирования с различными целями, исполнителями и критериями успеха.
Системное тестирование (System Testing):
- Цель: Проверить полностью интегрированную систему на соответствие техническим требованиям и спецификациям (Software Requirements Specification, SRS).
- Кто выполняет: Команда QA-инженеров.
- Фокус: Всесторонняя проверка функциональности, производительности, безопасности, надежности, совместимости и других нефункциональных атрибутов.
- Критерий успеха: Система работает в соответствии с техническим заданием.
Приемочное тестирование (User Acceptance Testing, UAT):
- Цель: Убедиться, что система удовлетворяет бизнес-требованиям и готова к использованию в реальных условиях.
- Кто выполняет: Конечные пользователи или заказчик (часто с поддержкой бизнес-аналитиков).
- Фокус: Соответствие реальным бизнес-процессам и сценариям использования (user stories, use cases). Проверяется "удобство" и "полезность".
- Критерий успеха: Система решает бизнес-задачу и может быть принята для эксплуатации.
Пример для системы онлайн-банка:
- Системное тестирование: Проверка, что перевод средств между счетами технически корректен: списание с одного, зачисление на другой, запись в лог, соблюдение ACID.
- Приемочное тестирование: Пользователь (бухгалтер) проверяет, что после перевода в интерфейсе формируется корректная выписка, которую можно распечатать и подшить в отчет.
Ключевое отличие: Системное тестирование отвечает на вопрос "Работает ли система так, как спроектировано?", а приемочное — "Нужна ли такая система пользователю и решает ли она его задачу?".
Ответ 18+ 🔞
А, ну вот, опять про эти ваши тесты! Сидишь такой, думаешь — ну что тут сложного, проверил и пошёл дальше. Ан нет, блядь! Оказывается, тут целая философия, как будто в храме каком-то, а не в софте ковыряемся.
Смотри, вот есть у нас, допустим, эта штука — системное тестирование. Это когда мы, грешные QA-инженеры, берём всю систему, собранную в кучу, и начинаем её ебать как сидорову козу по всем пунктам технического задания. То есть, всё ли там по чертежам сделано? Работает ли эта железяка так, как её задумывали инженеры-изуверы? Производительность, безопасность, надёжность — всё под прицелом. Критерий успеха простой, как три копейки: если в SRS написано «должно делать «А»», а оно делает «А» — то всё, можно выдохнуть. Система соответствует спецификациям. Вроде бы логично, да?
А теперь, внимание, сюрприз! Потому что есть ещё приемочное тестирование (UAT). И это, блядь, совсем другая опера. Тут уже не мы, технари, главные, а пользователь или заказчик. Им похуй на все наши спецификации и ACID'ы! Их волнует один вопрос: «Эта ваша хрень будет решать мою бизнес-задачу или нет?». Они смотрят на систему не как на набор функций, а как на инструмент. Удобно ли? Полезно ли? Можно ли этим жить?
Пример, чтобы совсем мозг не взорвался. Допустим, сделали мы онлайн-банк.
- Системное тестирование: Мы проверяем, что функция перевода денег — это просто песня. Нажал кнопку — со счета А списалось, на счет Б зачислилось, в логах записалось, транзакция атомарная, хуле. Всё чётко, по учебнику. С точки зрения кода — красота, ёпта!
- Приемочное тестирование: А сюда приходит тётка-бухгалтер Мария Ивановна, садится за комп и говорит: «А где мне, сука, после перевода взять выписку, чтобы я её распечатала и в папочку подшила?». И если этой кнопки «Распечатать красивую выписку для отчёта» нет, или она спрятана в тридцатом меню — всё, пиздец вашему банку! С технической точки зрения перевод работает, а с точки зрения бизнеса — система говно, потому что реальную задачу не решает.
Вот и вся разница, в рот меня чих-пых! Системное — это про «работает ли так, как спроектировали?». А приемочное — про «а нужно ли это вообще тому, кто будет этим пользоваться?». Часто бывает, что первое пройдено на ура, а на втором вся команда охуевает от того, как пользователи умудряются использовать наш «идеальный» продукт не по инструкции.