Какие бывают тесты? - PullRequest
10 голосов
/ 26 июня 2010

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

Может кто-нибудь рассказать, пожалуйста, об основных тестах, простом примере каждого из них, ипочему он используется / что он тестирует?

Спасибо.

Ответы [ 4 ]

19 голосов
/ 26 июня 2010

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

Юнит тест

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

Интеграционный тест

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

Системный тест

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

Зондирование

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

Приемочные испытания

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


Черный ящик или белый ящик?

Тесты также могут быть тестами «черного ящика», которые касаются только общедоступного API, или тестами «белого ящика», которые используют некоторые дополнительные знания для облегчения тестирования. Например, в тесте белого ящика вы можете знать, что конкретный внутренний метод используется всеми методами публичного API, но его проще тестировать. Вы можете протестировать множество угловых случаев, вызвав этот метод напрямую, а затем выполнить меньше тестов с помощью открытого API. Конечно, если вы проектируете публичный API, вам, вероятно, следует разработать его так, чтобы его можно было легко протестировать с самого начала - но это не всегда получается так. Часто приятно иметь возможность протестировать один небольшой аспект в отрыве от остальной части класса.

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

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


Начало

Теперь, что касается того, куда вам следует идти дальше, вероятно, лучше всего начать с модульного тестирования. Вы можете написать тесты до того, как разработаете свой класс (разработка через тестирование), или примерно в то же время, или даже спустя месяцы (не идеально, но есть много кода, который не имеет тестов, но должен) , Вы обнаружите, что часть вашего кода более пригодна для тестирования, чем другие ... две решающие концепции, которые делают тестирование осуществимым (IMO): внедрение зависимостей (кодирование в интерфейсы и предоставление зависимостей вашему классу, а не предоставление им возможности самим создавать эти зависимости) и test удваивает (например, фиктивные структуры, которые позволяют вам тестировать взаимодействие, или поддельные реализации, которые все делают простым способом в памяти).

1 голос
/ 02 июля 2010

Привет ... Я хотел бы добавить к тому, что ответит Джон Скит Сэр .. На основе тестирования белого ящика (или структурного тестирования) и испытания черного ящика (или функционального тестирования) ниже приведены другие методы тестирования в каждой соответствующей категории:

  • Методы испытаний конструкций

Стресс-тестирование

Используется для проверки больших объемов данных в системе. Больше, чем обычно берет система. Если система может выдержать эти тома, она, безусловно, может хорошо принимать нормальные значения.

* Э.Г. 1016 *

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

Используется, когда

В основном это может быть использовано, если вы не уверены в том, с какими объемами справится ваша система.

Проверка исполнения

Сделано, чтобы проверить, насколько опытна система.

Например.

Для расчета времени выполнения транзакций.

Используется, когда: В начале процесса разработки, чтобы увидеть, удовлетворены ли критерии эффективности или нет.

Тестирование восстановления

Чтобы проверить, может ли система восстановиться до первоначальной формы после сбоя.

1050 * Е.Г. *

Очень распространенный, например, в повседневной жизни это восстановление системы присутствует в ОС Windows .. У них есть точки восстановления, используемые для восстановления, как хорошо известно.

Используется, когда:

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

Другие виды тестирования, которые вы можете использовать, включают: -

Тестирование операций

Проверка соответствия

Тестирование безопасности

  • ФУНКЦИОНАЛЬНЫЕ ИСПЫТАНИЯ Методы включают в себя:

Требования к тестированию

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

Тестирование обработки ошибок

Тестирование при ручной поддержке

Межсистемное тестирование

Контрольное тестирование

Параллельное тестирование

Существует очень хорошая книга под названием «Эффективные методы тестирования программного обеспечения» Уильяма Перри из Института обеспечения качества (QAI), которую я бы посоветовал прочитать, если вы хотите углубиться в w.r.t. Тестирование программного обеспечения.

Более подробно о вышеупомянутых типах тестирования наверняка можно будет прочитать в этой книге.

Есть также две другие очень широкие категории тестирования, а именно

Ручное тестирование : Это делается для пользовательских интерфейсов.

Автоматизированное тестирование : Тестирование, которое в основном включает в себя тестирование белого ящика или проведенное тестирование с помощью инструментов тестирования программного обеспечения, таких как Load Runner, QTP и т. д.

Наконец, я хотел бы упомянуть конкретный тип тестирования под названием

Исчерпывающее тестирование

Здесь вы пытаетесь проверить все возможные условия, отсюда и название. Как можно заметить, это практически невозможно, поскольку число условий испытаний может быть бесконечным.

1 голос
/ 26 июня 2010

Я бы посоветовал прочитать хотя бы книгу об этом, поскольку область довольно велика, и книги, как правило, лучше синтезируют такие концепции. Например. Очень хорошая основа может быть: Тестирование программного обеспечения Тестирование на протяжении всего жизненного цикла разработки программного обеспечения (2007)

Я думаю, что такая книга могла бы объяснить все лучше, чем некоторые примеры вне контекста, которые мы могли бы опубликовать здесь.

0 голосов
/ 08 декабря 2017

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

Начать тестирование с 1. Тестирование дыма. После того, как прошло, продолжить тестирование функциональности. Это основа тестирования. Если функциональность работает нормально, тогда 80% тестирования выгодно.

2. Теперь перейдите к тестированию пользовательского интерфейса. Иногда пользовательский интерфейс привлекает клиента больше, чем функциональность. Это тот внешний вид, который привлекает клиента.

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

4. Проведите тестирование на совместимость. я, e Тестирование на различных браузерах и версиях браузеров. Может быть устройства и ОС для адаптивных приложений.

Счастливого тестирования:)

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