Модульный тест против поискового теста в краткосрочных / долгосрочных сценариях

Как вы думаете, что приносит больше пользы продукту, модульному тесту или пробному тестированию?

Я понимаю, что оба теста служат различным общим целям, но какой тест вы бы выбрали по приоритетам, то есть, что вы сделали бы в первую очередь, а какой - второй, юнит или исследовательский?

Кроме того, какой из них дает больше преимуществ в краткосрочной перспективе? а в перспективе?

Наконец, изменится ли ваш ответ, если у вас будет время только для одного из двух?

1 ответ

Решение

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

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

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

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

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

Другие вопросы по тегам