У моїй компанії ми успішно працюємо з спритними методами, але без використання ітерацій. Основна причина полягає в тому, що ми не можемо знайти чіткого способу, щоб вписатися в QA в циклі ітерації.
Ми розуміємо QA як додатковий біт перевірки до певної збірки (кандидата на випуск) до того, як ця збірка буде розгорнута для клієнта. Сенс у тому, щоб уникнути того, що одне зловмисне скоєння шкоди цілому випуску. Оскільки ви ніколи не знаєте, що це таке, QA доводиться чекати, поки всі функції / зобов’язання щодо випуску знаходяться в зборі. (Жодні відомі останні слова "Це були лише крихітні зміни".)
Якщо QA виявляє помилки у кандидата на випуск, розробники виправляють ці помилки у відповідній гілці випуску (та об'єднують її у магістраль). Коли всі помилки виправлені, нову збірку розгортають для QA для повторної перевірки. Тільки коли у певного кандидата на випуск не знайдено жодних помилок, він пропонується замовнику для перевірки.
Зазвичай це займає від двох до трьох кандидатів, приблизно один тиждень, на звільнення. Час написання виправлень, як правило, значно менший, ніж тестування. Отже, щоб розробники не зайняті, вони працюють над випуском N + 1, а QA працює над N.
Без використання ітерацій це не проблема, оскільки ми можемо перекривати роботу для випусків N і N + 1. Однак, наскільки я розумію, це не сумісне з підходами на основі ітерації, як Scrum або XP. Вони вимагають, щоб ітерація була звільнена в кінці, при цьому всі зусилля для тестування повинні бути включені в ітерацію.
Я вважаю, що це обов'язково призводить до одного з таких небажаних результатів:
(A) Розробники простоюють в кінці ітерації, оскільки QA потребує часу для перевірки кандидата на випуск, і робота з виправлення помилок не повністю затримує розробників.
(B) QA починає працювати вже до того, як кандидат першого випуску буде готовий. Саме це в основному рекомендується на Stack Exchange. Але це не те, що моя компанія розуміє як QA, оскільки немає жодного тестованого кандидата на випуск. І «крихітна зміна», яка все порушує, все ще може бути внесена непомітно.
(C) Помилки переносяться на наступну ітерацію. Це також рекомендується на Stack Exchange. Я взагалі не думаю, що це рішення. Це в основному означає, що ми ніколи не отримуємо перевірену збірку, оскільки щоразу, коли виправляються помилки, до цієї ж гілки додаються нові, неперевірені коміти.
Чи є вихід із цієї дилеми?