Дело в том, что с N функциями у вас есть N + (N выберите 2) + (N выберите 3) + (N выберите 4) + ... + 1 различных комбинаций.
По-английски это «о Боже, как много комбинаций».
Таким образом, вы не создаете ветви интеграции для каждого возможного подмножества своих функций: вы тестируете только те комбинации, которые вам небезразличны о.Если что-то не готово к прайм-тайму само по себе, оно никак не готово к прайм-тайму в тандеме с другими функциями.Как только все функции, входящие в конкретный выпуск, готовы, вы создаете интеграционную ветку со всеми ними вместе, проверяете ее и затем отправляете.
Выможет проводить тестирование с «предварительной интеграцией», чтобы посмотреть, насколько хорошо 2, 3, 4 или около того функции играют друг с другом, но эти ветви не являются «авторитетными» по отношению к QA: потому что у вас нет окончательного набора всегоэто будет отправлено туда, вы не можете назвать все, что делаете, действительно QA.
Таким образом, у вас нет ветви "интеграции" - каждая ветка интеграции для одного завершено партия вещей, которые готовы к обеспечению качества.Если что-то пробивается туда, что нехорошо, вся ветка потерпит неудачу в QA, так что ничто не пробьется из плохой ветки в развернутое состояние - это означает, что вам никогда не придется говорить «этот бит хорош, этот битплохо, потяните это, оставьте это " после процесса QA: это создаст по существу непроверенную комбинацию функций.