Простой ответ - это зависит от системы. Если вы пишете встроенное программное обеспечение для кардиомонитора или инструменты контроля безопасности для ядерного реактора, тогда этот стандарт намного выше, чем если бы вы писали блог-платформу.
Это действительно вопрос для хорошего системного тестера (а я не один), но я попробую.
Ваша основная мера будет охватить тестирование: сколько приложений действительно было протестировано (как модульным тестом, так и функционально).
Вам необходимо оценить каждый потенциальный вариант использования (и параметры для этого варианта использования) на предмет вероятности его фактического использования (так что вы можете отказаться от крайних вариантов), сложности (более простые вещи с меньшей вероятностью содержат ошибки или, скорее, с меньшей вероятностью содержат трудные на обнаружение ошибок), стоимость тестирования (с точки зрения времени) и потенциальное влияние дефекта, если он обнаружен в этой области (именно здесь появляется ядерный реактор и платформа для блогов).
Основываясь на этой оценке, вы должны решить, какие из них будут протестированы и в какой степени. Когда у вас есть такой список, команда (включая менеджера по продукту / менеджера проекта / представителя пользователя) может просмотреть этот список и расставить приоритеты на основе имеющихся у вас ограничений.
Один из полезных приемов, о котором следует подумать, заключается в том, что вы также можете варьировать варианты использования, которые тестируются с каждым выпуском. Например, у вас может быть список некритических тестовых случаев, и половина из них тестируется одним выпуском, а половина - вторым (затем альтернативным). Таким образом вы увеличиваете общее покрытие тестами, которое вы получаете за усилия (хотя есть риск появления ошибок регрессии).
Это также может распространяться на тестирование платформы - если вы поддерживаете две базы данных (или несколько браузеров), протестируйте половину приложения на одной, другую половину на другой, а затем поменяйте местами следующий выпуск.
(Я думаю, что это называется чередование, но не цитируйте меня об этом.)
И последнее, о чем нужно подумать, это не то, что вы тестируете, а то, что вы на самом деле исправляете при обнаружении проблем. Обычно говорят «исправить все ошибки», но реальность такова, что существуют временные ограничения, и не все ошибки одинаковы. Опять же, регулярное удаление ошибок со всеми соответствующими сторонами - лучший путь вперед. Это особенно актуально, когда исправление ошибки может быть особенно навязчивым, поскольку дополнительная работа по повторному тестированию и регрессионному тестированию, которое она создает, может перевесить выгоду исправления.