У меня есть великоватое сложное приложение вокруг 27k строк. По существу диск правила многопоточный механизм обработки, не отдавая слишком много Его, частично протестированный, поскольку это было создано, определенные компоненты.
Вопрос, который я имею, то, что является за и против выполнения поблочного тестирования на после факта, если можно так выразиться, после его реализованного. Ясно, что традиционное тестирование собирается взять 2-3 + месяцы для тестирования каждого фасета, и все это должно работать, и то время не доступно действительно.
Я сделал маленькое поблочное тестирование в прошлом, но обычно это было на настольной автоматизации или Приложениях отделов организации, которые довольно просты. Приложение, самостоятельно высоко разбивается на компоненты внутренне, интерфейс, управляемый действительно. Я не выбрал что конкретную платформу использовать. Любой совет ценился бы.
Что говорит Вас.
В зависимости от того, сколько ошибок появляется при "ручном тестировании", вы можете просто выполнить исправление ошибок на основе тестов , что, по моему опыту, гораздо эффективнее, чем простое увеличение покрытия кода путем написания «посмертных» модульных тестов.
(Это не значит, что писать модульные тесты потом - плохая идея, просто TDD почти всегда лучше .)
Вот некоторые из них, на мой взгляд:
Pro:
Против:
Суть в том, что добавление модульных тестов позволяет провести рефакторинг и улучшить приложение.
Pro постфактум модульное тестирование:
Con постфактум модульное тестирование:
Неизвестный вопрос: насколько важен актив этот код для вашей организации в долгосрочной перспективе? Ответ на этот вопрос определяет, сколько вам следует инвестировать. У меня много (успешных) конкурентов, основная цель кода которых - получить цифры, чтобы оценить новую технику или идею. Когда у них есть числа, код имеет небольшую маржинальную ценность.Они (справедливо) очень тщательно тестируют, чтобы убедиться, что числа значимы. После этого, если есть пятьдесят открытых ошибок, которые не влияют на числа, им все равно. А зачем им это? Код выполнил свою задачу.
Модульное тестирование «постфактум» по-прежнему ценно и обеспечивает большинство тех же преимуществ модульного тестирования во время разработки.
При этом, я считаю, что гораздо труднее тестировать постфактум (если вы хотите получить такой же уровень тестирования). Это по-прежнему ценно и того стоит.
Лично я, пытаясь разобраться с чем-то в ограниченное время, стараюсь как можно больше сосредоточить свои усилия на тестировании. Каждый раз, когда вы исправляете ошибку, добавляйте тесты, чтобы предотвратить ее в будущем. Каждый раз, когда вы собираетесь провести рефакторинг, постарайтесь провести достаточно тестирования, чтобы быть уверенным, что вы что-то не сломаете.
Единственный недостаток добавления модульного тестирования заключается в том, что оно требует некоторого времени на разработку. Лично я считаю, что время разработки, потраченное на тестирование, намного перевешивается временем, сэкономленным на обслуживании, но это то, что вам нужно определить самостоятельно.
Если вы проводите какой-либо рефакторинг, эти тесты помогут вам обнаружить любые ошибки, которые появятся в процессе.
Я считаю, что модульное тестирование существующего кода дает несколько преимуществ
Но я думаю, что более интересно рассмотреть недостатки кода модульного тестирования. AFAIK, минусов нет. Время, потраченное на добавление тестов, окупится даже во всем, кроме самых коротких временных циклов.
Я думаю, что один из самых больших недостатков тестирования "постфактум" заключается в том, что вам, вероятно, будет труднее тестировать. Если вы пишете код без тестов, вы обычно не думаете о тестируемости и в итоге пишете код, который трудно тестировать.
Но после того, как вы потратили дополнительное время на написание тестов и изменение кода для лучшей тестируемости, вы будете гораздо увереннее вносить изменения, и вам не понадобится много времени на отладку и проверку того, все ли в порядке.
Наконец, вы можете найти новые ошибки, которые не были обнаружены раньше, и потратить некоторое время на их исправление. Но для этого и нужны тесты =)
.Модульное тестирование не доказывает, что система работает. Это доказывает, что каждая единица работает как независимая единица.Это не доказывает, что интегрированная система будет работать
Модульное тестирование «постфактум» полезно для двух вещей - для поиска ошибок, которые вы пропустили до сих пор и не обнаружите с помощью других видов тестирования (особенно для редкие условия - существует огромное количество редких условий, которые могут произойти в конкретных единицах для любой реальной системы), а также в качестве регрессионных тестов во время обслуживания.
Ни то, ни другое не поможет в вашей ситуации - вам в любом случае нужно проводить другие формы тестирования. Если у вас нет времени делать то, что вам нужно, вряд ли вам поможет дополнительная работа.
Тем не менее, я гарантирую, что без модульного тестирования вас ждут неприятные сюрпризы, когда клиенты начнут использовать код. Это все те редкие состояния - их так много, что некоторые из них обязательно появятся в ближайшее время. Тестировщики «черного ящика» склонны придерживаться привычных шаблонов, что означает, что они проверяют только очень много редких случаев - и у них нет возможности узнать, какие редкие случаи существуют в конкретных единицах и как их запускать в любом случае. Больше пользователей означает больше вариаций в шаблонах использования.
Я поддерживаю тех, кто считает, что модульные тесты должны быть написаны как часть процесса программирования - одна из обязанностей программистов. Как правило, таким образом код пишется быстрее , так как вы получаете меньше и менее сложных ошибок, которые нужно отслеживать по мере продвижения, и вы, как правило, узнаете о них, когда еще знакомы с кодом, который есть ошибка.
Есть много причин для кода модульного тестирования. Основная причина, по которой я рекомендовал бы модульное тестирование постфактум, проста. Ваш код взломан, вы просто еще этого не знаете.
В программном обеспечении есть очень простое правило. Если код не проверен, значит он сломан. Поначалу это может быть не сразу очевидно, но когда вы начнете тестирование, вы найдете ошибки. Вам решать, насколько вы заботитесь о поиске этих ошибок.
Помимо этого, есть несколько других важных преимуществ модульного тестирования,
Список можно продолжать и продолжать. Единственный реальный недостаток - время, необходимое для написания этих тестов. Я считаю, что этот недостаток всегда будет компенсирован временем, которое у вас уйдет на отладку проблем, которые вы могли обнаружить во время модульного тестирования!
Модульное тестирование по-прежнему полезно. Ознакомьтесь с http://en.wikipedia.org/wiki/Unit_testing для получения полного списка и объяснения преимуществ.
Основные преимущества, которые вы получите, - это документация, упрощающая внесение изменений и упрощающая интеграцию в будущем.
Добавление модульного тестирования действительно не требует затрат, кроме вашего времени. Поймите, однако, что время, которое вы тратите на добавление модульного тестирования, сократит количество времени, которое вам нужно будет потратить на другие области разработки, по крайней мере, на такое же количество, а скорее всего, больше.
Если разработка "завершена", я бы сказал, что в модульном тестировании нет особого смысла.