Наша команда розробників використовує стратегію розгалуження GitFlow, і це було чудово!
Нещодавно ми набрали пару тестерів для покращення якості програмного забезпечення. Ідея полягає в тому, щоб кожну функцію слід перевірити / оцінювати якістю тестувальник.
Раніше розробники працювали над функціями на окремих галузях функцій і об'єднують їх назад у develop
гілку, коли це буде завершено. Розробник сам випробує свою роботу на цій feature
гілці. Тепер із тестерами ми починаємо задавати це питання
На якій гілці тестер повинен перевірити нові функції?
Очевидно, є два варіанти:
- на галузь індивідуальних особливостей
- на
develop
гілці
Тестування на розвиток галузі
Спочатку ми вважали, що це вірний шлях, оскільки:
- Ця функція тестується з усіма іншими функціями, об'єднаними у
develop
галузь з моменту початку її розробки. - Будь-які конфлікти можуть бути виявлені раніше, ніж пізніше
- Це полегшує роботу тестера, він завжди має справу з однією гілкою (
develop
). Йому не потрібно запитувати розробника про те, яка галузь є для якої функції (гілки функцій - це особисті гілки, якими керуються виключно та вільно відповідні розробники)
Найбільші проблеми з цим:
develop
Філія забруднюється з помилками.Коли тестер виявляє помилки або конфлікти, він повідомляє про це розробнику, який виправляє проблему на гілці розробки (гілка функції було припинено після об'єднання), і після цього може бути потрібно більше виправлень. Численні підпорядкування здійснюють чи зливаються (якщо
develop
гілка знову відтворена від гілки для виправлення помилок), це ускладнює відкат функції зdevelop
гілки, якщо це можливо. Існує кілька функцій, що зливаються та фіксуються наdevelop
гілці в різний час. Це створює велику проблему, коли ми хочемо створити реліз із лише деякими функціями уdevelop
галузі
Тестування на функціональній галузі
Тому ми подумали ще раз і вирішили слід перевірити особливості на гілках функцій. Перш ніж тестувати, ми зливаємо зміни від develop
гілки до функції функції (наздоганяємо develop
гілку). Це добре:
- Ви все ще тестуєте цю функцію за допомогою інших функцій у мейнстрімі
- Подальший розвиток (наприклад, виправлення помилок, вирішення конфлікту) не забруднить
develop
галузь; - Ви можете легко вирішити не випускати функцію, поки вона не буде повністю перевірена та затверджена;
Однак є і деякі недоліки
- Тестувальник повинен здійснити злиття коду, і якщо є конфлікт (дуже ймовірно), він повинен звернутися до розробника про допомогу. Наші тестери спеціалізуються на тесті та не здатні кодувати.
- функцію можна перевірити без існування іншої нової функції. наприклад, функції A і B обидва тестуються одночасно, ці дві особливості не знають одна про одну, оскільки жодна з них не була об'єднана у
develop
гілку. Це означає, що вам доведеться знову протестувати протиdevelop
гілки, коли обидві функції так чи інакше об'єднаються з гілкою, що розвивається. І ви повинні пам'ятати, щоб перевірити це в майбутньому. - Якщо Feature A і B перевірені та затверджені, але при об'єднанні виявлено конфлікт, обидва розробники для обох функцій вважають, що це не його вина / робота, оскільки його функціональна галузь минула тест. У спілкуванні є додаткові витрати, і іноді той, хто вирішує конфлікт, засмучується.
Вище - наша історія. Маючи обмежений ресурс, я хотів би уникати тестування всього скрізь. Ми все ще шукаємо кращого способу впоратися з цим. Мені б хотілося почути, як інші команди вирішують подібні ситуації.