Что такое модульное тестирование и интеграционное тестирование, и о каких других типах тестирования я должен знать? - PullRequest
41 голосов
/ 13 января 2009

Я видел, как другие люди упоминали о нескольких типах тестирования переполнения стека.

Я могу вспомнить модульное тестирование и интеграционное тестирование. Особенно юнит тестирование упоминается много. Что такое юнит-тестирование? Что такое интеграционное тестирование? Какие еще важные методы тестирования я должен знать?

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

Ответы [ 9 ]

32 голосов
/ 13 января 2009

с макушки головы:

  • Модульное тестирование в смысле «тестирование наименьшего изолируемого блока приложения»; обычно это метод или класс, в зависимости от масштаба.
  • Интеграционное тестирование
  • Тестирование функций : это может проходить через устройства и находится в центре внимания TDD.
  • Тестирование черного ящика : тестирование только открытого интерфейса без знания того, как это работает.
  • Испытание в стеклянной коробке : проверка всех частей предмета с полным знанием того, как он работает.
  • Регрессивное тестирование : тестовые наборы, созданные для воспроизведения ошибок, чтобы гарантировать, что они не появятся позже.
  • Бессмысленное тестирование : тестирование одного и того же базового случая более чем одним способом или тестирование вещей настолько тривиальных, что их действительно не нужно тестировать (например, автоматически сгенерированные методы получения и установки)
24 голосов
/ 13 января 2009

я должен знать о каком-либо другом важном тестировании моего кода?

Это некоторые из различных видов тестирования в соответствии с различными фазами жизненного цикла программного обеспечения:

  • Модульный тест : работает ли этот маленький кусочек кода?
  • Набор модульных тестов : последовательность множества модульных тестов (для множества маленьких кусочков кода)
  • Интеграционный тест : проверить, работают ли два компонента вместе, когда они объединены (или «интегрированы»)
  • Проверка системы : проверить, работают ли все компоненты вместе, когда они объединены (или «интегрированы»)
  • Приемочный тест : что делает заказчик, чтобы решить, хочет ли он вам заплатить (системный тест обнаруживает, работает ли программное обеспечение в соответствии с назначением ... Приемочный тест обнаруживает, является ли заказчиком «как задумано» хотел)

Есть еще:

  • Юзабилити-тест
  • Тест производительности
  • нагрузочный тест
  • Стресс-тест

И многое другое ... тестирование программного обеспечения почти так же широко, как и написание программного обеспечения.

16 голосов
/ 13 января 2009

MSDN: модульное тестирование

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

MSDN: интеграционное тестирование

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

Проверьте сайты для получения дополнительной информации. Существует также много информации из других источников, кроме Microsoft.

8 голосов
/ 13 января 2009

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

Начните накапливать свой набор регрессии рано, до того, как ваш проект станет большим, или вы об этом пожалеете. У меня наверняка есть!

6 голосов
/ 26 февраля 2014

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

Что такое модульное тестирование?

  • В модульном тестировании оценивается программное обеспечение с точки зрения его реализации.
  • Мы сосредоточены на тестировании модулей программы (т.е. отдельных методов) и не обращаем внимания на то, кто вызывает / использует эти модули. Следовательно, мы по существу рассматриваем каждую единицу как отдельную единицу.
  • Существует множество инструментов для модульного тестирования, одним из самых популярных является JUnit.

  • При выполнении модульного тестирования мы хотим создать тестовый набор (набор тестовых случаев), который удовлетворяет определенным критериям покрытия. Это могут быть некоторые критерии структурного покрытия (NC, EC, PPC и т. Д.) Или критерии потока данных (ADC, AUC, ADUPC и т. Д.)

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

Что такое интеграционное тестирование?

  • Интеграционное тестирование необходимо, чтобы убедиться, что наше программное обеспечение все еще работает, когда два или более компонента объединены.
  • Вы можете выполнить интеграционное тестирование до завершения работы системы.
  • Проблема порядка тестирования интеграции классов (CITO) связана с интеграционным тестированием. CITO имеет отношение к стратегии интеграции компонентов. Существует множество предлагаемых решений для CITO, таких как интеграция «сверху вниз», интеграция «снизу вверх» и т. Д. Основная цель состоит в том, чтобы интегрировать компоненты таким образом, чтобы обеспечить эффективное тестирование и минимальное количество заглушек, поскольку написание заглушек кода не всегда легко и занимает много времени. , Обратите внимание, что это все еще активная область исследований!
  • Интеграционное тестирование проводится после модульного тестирования.
  • Часто отдельные компоненты работают нормально, но когда все собрано вместе, мы внезапно видим ошибки, возникающие из-за несовместимости / проблем с интерфейсами.

Другие уровни тестирования включают в себя:

  1. Регрессионное тестирование

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

    • В ходе этого тестирования мы оцениваем программное обеспечение в соответствии с предоставленными требованиями, в основном мы видим, соответствует ли произведенное нами программное обеспечение требованиям, которые нам были даны.
    • Обычно это последний тип тестирования, выполняемый в последовательности действий по разработке программного обеспечения. Следовательно, этот тип тестирования выполняется после модульного тестирования и интеграционного тестирования.
3 голосов
/ 13 января 2009

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

Например, у вас может быть приложение калькулятора, и вам нужно убедиться, что функция сложения работает. Для этого вы пишете отдельное приложение, которое напрямую вызывает функцию сложения. Затем ваша тестовая функция оценит результат, чтобы увидеть, соответствует ли он ожидаемому.

Это в основном вызов ваших функций с известными входными данными и проверка выходных данных именно то, что вы ожидали.

2 голосов
/ 13 января 2009

Это была запись, которую я написал: Различные типы автоматических тестов .

2 голосов
/ 13 января 2009

Первые два результата поиска в Google для «типов тестирования» выглядят всеобъемлющими

Те, которые я считаю наиболее актуальными. Смотрите здесь .

1 голос
/ 13 декабря 2013

Модульное тестирование : Тестирование, выполненное для модуля или для самого маленького программного обеспечения. Сделано, чтобы проверить, удовлетворяет ли он своей функциональной спецификации или предполагаемой структуре проекта.

Интеграционное тестирование: Совместное тестирование связанных модулей на предмет их объединенной функциональности.

Регрессивное тестирование: Тестирование приложения для проверки того, что изменения не вызвали непреднамеренных эффектов.

Тестирование дыма : Тестирование дыма проверяется независимо от того, тестируется ли сборка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...