Является ли проверка и валидация частью процесса тестирования?

9

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

  1. Определить, что (программные продукты) удовлетворяют указанным требованиям (я думаю, что его проверка)

  2. Продемонстрировать, что (программные продукты) соответствуют цели (я думаю, что это проверка)

  3. Обнаруживать дефекты

    Я согласен, что тестирование - это проверка, валидация и обнаружение дефектов. Это верно?

Джон V
источник
1
Первое, что говорится в книгах по тестированию, это то, что «тестирование - это не процесс, показывающий, что программное обеспечение работает правильно. Это процесс поиска дефектов». И чем книги приводят многочисленные причины, чтобы определить тестирование таким образом. Поэтому скорее всего проверка заключается в том, чтобы определить, где программное обеспечение не соответствует требованиям.
SuperM
Согласно определению, проверка гарантирует, что требования были выполнены. На самом деле книги определяют тестирование как процесс измерения качества программного обеспечения. Итак, если вы проверяете, что система работает (положительно) с намерением увидеть, работает ли она, она не тестирует, потому что вы не ищете ошибок? :) В Википедии: методы тестирования включают, но не ограничиваются этим, процесс выполнения программы или приложения с целью поиска программных ошибок
Джон V
Я думаю, что лучший способ определить границы слова «тестирование» - это подумать о проверке гипотезы, в этом случае вы пытаетесь проверить, что в гипотезе нет ошибок или неточностей, это не то же самое, что проверка ее полезности. или проверка его применимости, это всего лишь случай определения всей области его поведения, независимо от цели.
Джимми Хоффа
Имейте бонус «хороший вопрос» :)
Андрей

Ответы:

1

Я думаю, вы поняли это правильно.

  1. Проверка и проверка - это разные вещи, и на самом деле они довольно хорошо определены. Хотя мне не очень нравится этот документ, ISO 9000ff очень важен для QA и определяет Verification как сравнение продукта с его требованиями, а Validation как проверку, действительно ли он соответствует потребностям клиента / пользователя, и мы все знаем, что это может отличаться ,

  2. И то, и другое можно сделать с помощью тестирования. Проверка приведет к тестированию сгенерированных требований к форме. Валидация приводит к тестированию, выполненному Тестами без прямой ссылки на требования. Я думаю, что это часто называют исследовательским тестированием. Очевидно, что это должны делать люди с реальным пониманием реальных потребностей пользователей, поэтому альфа- и бета-тестирование реальных пользователей является очевидным вариантом.

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

Йенс Шаудер
источник
Проблема заключается в том, что во многих источниках упоминается, что проверка является только статической, а проверка - динамической. Это очень запутано. Что будет функциональным тестом тогда? Я бы сказал, его динамическое подтверждение ..
Джон V
1
В каких источниках используется это определение проверки и валидации? С другой стороны, я не знаю четкого и общепринятого определения того, что заканчивается в -test. Поэтому я не знаю, что для вас функциональный тест.
Йенс Шаудер
Например, ISO 12207 ограничивает тестирование только как процесс проверки.
Джон V
3

Из Википедии: «... Другими словами, валидация гарантирует, что продукт действительно соответствует потребностям пользователя , и что спецификации были в первую очередь правильными , а проверка гарантирует, что продукт был построен в соответствии с требованиями и спецификациями дизайна Валидация гарантирует, что «вы создали правильную вещь». Верификация гарантирует, что «вы построили ее правильно». Валидация подтверждает, что продукт, если он предусмотрен, будет выполнять свое предназначенное использование ».

Вы не можете проверить потребности пользователя и проверить правильность спецификаций по коду. Таким образом, проверка не производится путем тестирования.

Проверка предполагает, что ваши требования и дизайн верны, поэтому вы можете проверить это, написав код (тестирование).

Мерт Акчакая
источник
Я бы не согласился - тестирование - это не просто тестирование кода, это также тестирование документации и т. Д. Кстати, википедия также говорит: Тестирование программного обеспечения может быть заявлено как процесс проверки и подтверждения того, что программа / приложение / продукт. Вы подтверждаете Программа по исполнению и исследованию, хочет ли это пользователь.
Джон V
На самом деле вы правы. Процесс тестирования также включает в себя Accepting Testing, но я говорил о модульном, интеграционном и системном тестировании. Если мы думаем о процессе тестирования в целом, проверка и валидация выполняются путем тестирования.
Мерт Акчакая
1

Для реального мира тестирование - это проверка и валидация программного обеспечения, которое соответствует требованиям программного обеспечения (бизнес / функциональное / нефункциональное). Цель этого - определить, подходит ли программное обеспечение для данной цели. Любое поведение, которое не соответствует требованиям приложения, является дефектом, серьезность которого необходимо будет оценить, прежде чем определять, подходит ли программное обеспечение для этой цели.

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

Адам Ф
источник
1

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

Тестирование является одним из многих методов проверки и подтверждения, а не другим способом. Проверка кода - это еще одна формальная проверка с математическими доказательствами.

Тем не менее, тестирование должно проводиться с целью выявления ошибок, а не с целью проверки соответствия требованиям.

Основное отличие заключается в сознании тестера. Намного проще создать тестовый пример, показывающий, что программное обеспечение работает как задумано (проверка соответствия), чем создать тестовый пример, показывающий, что программное обеспечение дает сбой (обнаружение ошибок).

Хороший тестировщик увлечен взломом программного обеспечения, а не безопасным его применением.

mouviciel
источник
спасибо, но разве мы не тестируем, чтобы показать, что требования выполнены? Мы удостоверяемся, что программное обеспечение работает (соответствует спецификациям), а затем мы пытаемся найти дефекты. Так что дело не только в поиске ошибок. Я помню книгу, в которой говорилось, что основной целью тестирования является измерение качества, а не поиск ошибок. Что касается вашего первого пункта, то тестирование кода, математика и т. Д. Также является тестированием и называется статическим.
Джон V
Дефекты или ошибки существуют в отличие от требований. Характер работы идентичен. Разница только в том, как тестер думает об улучшении его эффективности. Что касается моего первого замечания, есть много определений всех терминов, используемых при проверке программного обеспечения (и первый шаг при присоединении к команде - это получить местный диалект в этой команде), но большинство людей согласны с тем, что тестирование является только динамическим техника. Статическое тестирование - это оксюморон, или относится к другой технике, недалеко от обзора, где код выполняется в уме «тестера», а не на компьютере.
Mouviciel
mouviciel: оксюморон? Я не думаю, что статическое тестирование означает проверку на возможные дефекты без выполнения, что вполне возможно (проблемы с требованиями, недостатки дизайна ..). Это не то же самое, что проверять требования и проверять наличие ошибок: вы должны проверить, что поле может содержать значение int32. Вот тестирование, что это работает. Затем вы можете попытаться ввести более высокие значения, то есть тестировать ошибки.
Джон V
1

Давайте посмотрим на это с практической точки зрения. Для тестирования необходимо определить контрольные примеры. Как правило, вы определяете тестовые случаи в соответствии с указанными требованиями, и они должны охватывать случаи «счастливого дня», а также «крайние случаи» - особенно последние часто определяются с целью взлома программного обеспечения. Когда некоторые из ваших тестов терпят неудачу, они обнаруживают ошибки / дефекты. Если у вас есть достаточное количество тестовых случаев для каждого требования и все эти тесты пройдены, вы, возможно, не полностью доказали, что все требования выполнены, но вы повысили вероятность этого, поэтому провели некоторую проверку.

Таким образом, для этой части вопроса поиск ошибок и проверка могут быть только двумя сторонами одного и того же процесса:

  • тесты не пройдены: дефекты найдены

  • тесты пройдены: проверка выполнена (по крайней мере, в некоторой степени, если вы предоставите достаточно и правильные тесты)

Относительно валидации: как указал @Mert, валидация может быть проведена путем приемочного тестирования, но не с помощью других форм тестирования. Таким образом, тестирование в целом не вызывает проверки, только когда проводится потенциальным пользователем в качестве приемочного тестирования.

Док Браун
источник
0

Все зависит от вашего определения «проверка». Например, формальная проверка обычно не выполняется командой QA, а является обязанностью разработчиков. Почти никто не проводит формальную проверку из-за высокой стоимости, связанной с этим (недостаток знаний и необходимых ресурсов).

Джори Себрехтс
источник
0

Тестирование программного обеспечения отличается от тестирования. Вы получили это право. Тестирование программного обеспечения в целом включает в себя много этапов (дым, юнит, регрессия, интеграция, принятие пользователем и т. Д.).

Таким образом, обеспечение того, чтобы программное обеспечение работало в соответствии с требованиями, является основной целью QA (специалист по обеспечению качества - иначе его называли просто тестерами много лет назад). Однако это не просто тестирование . Контроль качества обеспечивает наличие надлежащего набора процессов для проверки качества рассматриваемого продукта или, по крайней мере, его принятие на этапе проектирования проекта.

Таким образом, в идеале вы ожидаете, что ваш QA проверит приложение на соответствие требованиям, а не просто попытается проверить его, взломав программное обеспечение и обнаружив дефекты.

Юсубы
источник
QA это не просто тестирование. QA занимается качеством процессов разработки ..
Джон V
QA проверяет приложение на соответствие требованиям.
Юсубов