Використання тестування гілок в Git


11

У нас є хтось (назвемо його Тедом), який відповідає за тестування нових функцій та виправлення помилок.

Ми використовуємо Git та GitHub . masterмає бути / завжди розгортається і developmentсаме там ми здійснюємо / об’єднуємо нові функції чи виправлення помилок, але лише після того, як вони пройшли перевірку Тедом.

Проект знаходиться в PHP.

Я хотів би, щоб процес тестування пройшов так:

  1. Розробник хоче працювати над новою функцією (скажімо, функція / помилка №123, як Тед задокументований у трекері випусків), тому він переходить origin/developmentдо developmentсвого локального сховища та створює issue-123звідти нову гілку (скажімо ).
  2. Як тільки він задоволений своєю роботою, він бере на себе і підштовхує свою нову гілку до origin.
  3. Тед підключається test.ourproject.com/choose-branchі бачить список гілок originі вирішує його ввімкнути issue-123(це потрібно зробити через веб-сторінку). Потім він продовжує test.ourproject.com, випробовує веб-додаток (він справді безглуздий), і після деяких розробок з розробником він задоволений функцією.
  4. Тед каже розробник , що він може зливатися issue-123на developmentна origin.
  5. Промийте і повторіть.

На третьому кроці я міг би зламати щось, що виконує завдання (показ і перемикання гілок з певної сторінки), але я відчуваю, що те, що я описав, є дуже поширеною схемою.

Отже, моє запитання: чи це хороший / стійкий / постійний робочий процес для розгалуження? Чи можете ви створити резервну копію своєї відповіді, наводивши приклади інших проектів, що слідують за цим робочим процесом?


"випробовує пекло з веб-сайту (він насправді безрозсудний), і після деякого часу назад і назад з дияволом він задоволений особливістю". - Ця людина повинна бути близькою до генія. Він насправді знає, про що йдеться у коді? Є такі проекти, але я дуже сумніваюся в результатах кроку 3.
SChepurin

Я мав би зробити більш чіткими issue-123посилання на помилку / функцію # 123, оскільки Тед документує кожну помилку / нову функцію в нашому трекері випусків.
cpa

@cpa: чим зробити це зрозумілішим. Питання можна редагувати.
Ян Худек

@SChepurin: Тестувальник нічого не повинен знати про код. Їм просто необхідно мати список необхідних функцій та помилок та тестові справи для них.
Ян Худек

1
@cpa Не зовсім впевнений, що ти хочеш. Ви хочете якесь програмне забезпечення, яке допомагає тестерам розібратися, які гілки доступні для тестування, і перемикає гілки для них? Або процес для тестерів для наступного?
міс

Відповіді:


5

Робочий процес у відділенні дуже нагадує gitflow http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow, а навколо нього є інструменти підтримки. Настійно рекомендується.

Якщо є лише один тестер, ваш робочий процес тестування чудово звучить, але якщо є кілька людей, то розвиток може рухатися між початком і кінцем, і, звичайно, тестування в ідеалі має бути повністю виконане після будь-якого злиття. Тут автоматичне тестування справді може допомогти, або повільний (ретельний) тестер може ніколи не закінчити!

Інша проблема полягає в тому, що з багатьма функціями та гілками стає спокушальним змішувати та співставляти функції у випуску (або вибирати вилучення після прийняття та об'єднання) або, можливо, якщо функції залежать одна від одної. Проблема полягає в тому, якщо ви почнете сподіватися переписати історію (перезавантажити / видалити комісію або об'єднати) на Опублікованій гілковій сенсі, яка була перенесена на репортаж з декількома видами. Це переписування публічної історії. Це може бути зроблено для добра чи зла, і навіть якщо це робиться для добра, це може спричинити проблеми необережним, і найкраща практика - це уникати цього, щоб питання ніколи не виникало. Однак деякі робочі процеси інтеграції галузей роблять це дуже заманливо, тому якщо у вас є сильний захист на таких гілках (наприклад, гітоліт на обмеження гілок користувача), і люди очікують такої активності, тому завжди перезавантажуйте свій код на такій гілці, продовжуйте - обережно!

Я також хотів би порекомендувати прочитати http://sethrobertson.github.com/GitBestPractices/, де обговорюються всі ці питання та є багато хороших посилань.


git-flowне зовсім те, що я шукав, але це, безумовно, щось, що нам потрібно! Дякую!
cpa

2

Я не впевнений, що сама сторінка перемикання є загальною схемою. Більшість проектів, ймовірно, просто мають тестер перевірити це за допомогою команди git.

Загальний підхід, безумовно, звучить розумно.

Google навіть написав Герріта, щоб підтримати подібний стиль; мова йде більше про перегляд коду, але схвалення інтеграції зазвичай включає як огляд, так і тестування. Зазвичай він також пов'язаний із сервером безперервної інтеграції, який спочатку створює всі подання (я не впевнений, чи використовують вони Дженкінс в Google, але я вважаю, що десь бачив відповідні роз'єми).

Сам Git використовує незначну варіацію теми. У його підтримувальному апараті є сценарій, який об'єднує всі відкладені подання у гілку, яку називають pu(імовірно, для "запропонованих оновлень"; гілка видаляється та відтворюється заново, оскільки чатні роботи часто перезавантажуються). Це ніж тестують різні люди. Якщо це добре, то подані матеріали, які вважаються завершеними, об'єднуються в next(це те саме, що і ваше development). Якщо ні, то хтось перевіряє окремі матеріали, щоб побачити, яке з них порушено. Це полегшує тестеру, оскільки їм не доведеться перемикати гілки більшу частину часу; вони просто повідомляють, чи працює тестова інтеграція.


1

Якщо тестування проводиться автоматично, а не вручну, я думаю, що Travis (система CI для GitHub) в значній мірі зробить те, що ви хочете - він автоматично запускає тести на всі запити на витяг. ( Більше інформації про цей процес, включаючи скріншоти. )

Зауважте, що тести виконуються не на гілці, а на гілці після її об'єднання в головну. (тобто те, що ви отримаєте після об'єднання гілки в головний - вам гарантовано, що тести все ще будуть успішно працювати після об'єднання.)

Якщо комісії додаються до гілки, тести будуть повторно запущені. (Хоча, чомусь, додавання команд до master не здається повторним запуском тестів.)


Що робити, якщо тести не спрацюють на гілці? Ви дійсно хочете мати код на майстер із невдалим тестом? ... що могло бути зібране на самій гілці, перш ніж об'єднатися до господаря? Особисто я думаю, що тільки код, який будує та передає всі підрозділи, інтеграцію та інші тести, повинен бути об'єднаний у головний, оскільки саме тут збираються версії версій.
Еш

@Ash Код насправді не об'єднаний у головний; наскільки я розумію, тести виконуються по суті тимчасовій гілці, що є результатом об'єднання гілки під тестом у головну.
MJS
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.