В течение последних одного года или около того я привел свою команду к режиму разработки «релиз-ранний выпуск-часто» (AKA: быстрая разработка приложений, а не Agile). Для получения дополнительной информации о том, как мы закрываем сборку, смотрите мой ответ здесь: Простые способы улучшить качество выпуска в среде RAD
Когда мы приняли RAD, люди были совершенно независимы и сначала проводили модульное тестирование; Интегрированные тесты произошли намного позже в процессе. Это был естественный процесс для них без особого официального принуждения. Сейчас ситуация совсем другая:
Вся платформа хорошо интегрирована с установленными сборками / выпусками, работающими на стороне клиента без каких-либо горячих точек.
Новые функциональные требования продолжают поступать, и мы постепенно наращиваем их.
Общая динамика системы очень важна, потому что, хотя независимые группы разработчиков могут правильно отслеживать процессы, серьезные сбои возникли из-за сложных, неочевидных обстоятельств.
Во многих частях системы используются новые алгоритмы и исследовательские материалы, поэтому проблемы (и, следовательно, механизм тестирования) не всегда предвидены правильно, как тестирование функций в четко определенном программном обеспечении.
Недавно я пытался улучшить общую картину, чтобы понять, нужно ли нам совершенствовать процесс. Когда я сел со своей командой, многие из них отказались: «Мы больше не проводим юнит-тестирование!» в то время как другие думали, что мы не должны начинать сейчас, потому что это никогда не будет эффективным.
Полезны ли модульные тесты в относительно зрелой системе? Должны ли мы, по крайней мере, взвешивать объем тестов в зависимости от зрелости единиц? Замедлит ли юнит-тестирование темпы разработки? Есть ли необходимость оценивать юнит-тестирование по-другому?
Каковы лучшие практики тестирования для зрелой платформы в среде релиз-ранний-релиз-часто?