У чому сенс постановки?


18

Я думав, що я це розробив, але прочитавши « Постійну доставку» (відмінна книга) я трохи розгублений. Вони говорять про наявність серверів для:

  • розвиток
  • різні форми автоматизованих тестів
  • тестування прийняття користувача (UAT) - тобто сісти з клієнтом і продемонструвати йому це, і дозволити йому провести дослідницьке тестування. Внутрішні тестери можуть також використовувати цю установку для дослідницьких випробувань.
  • інсценування
  • виробництво.

Я завжди думав, що інсценізація як функція UAT, але вони, схоже, мають постановку як окремий рівень. Отже, у цій схемі, яку функцію надавали б сервіси постановки?


10
Я не можу сказати, що я згоден з цією методологією. UAT завжди слід робити на якомога ближчих характеристиках до живої системи (тобто постановці). Я не можу підрахувати, скільки разів ми зробили UAT, і всі скаржилися на швидкість, на яку ми повинні тисячу разів пояснити, що "Жива система буде швидшою". І тоді, коли жива система НЕ швидше, через помилку в коді або SQL-запит, вам доведеться з'їсти власні слова.
Марк Хендерсон

UAT = Тестування прийняття користувача, правда?
Мартін Тома

Відповіді:


13

Постановка ставить на місце цілі системи продуктів, але фактично їх ще не використовує. Коли вони переходять у користування, буде "виробництво". Ви повинні поставити все на місце, як воно буде використовуватися, протестуйте, а потім переверніть перемикач.

UAT зазвичай використовує "тестуюче" середовище, суттєво відрізняється від апаратного / програмного забезпечення / конфігурації, яке буде використовуватися у виробництві.

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


Більше тестування, як правило, відбувається і на сервері встановлення, а не тільки в UAT - безпосередньо перед початком виробництва.
jftuga

3
@jftuga, див. останнє речення першого абзацу ...
Chris S

@Chris S: Якщо я вас правильно зрозумів, не існує такого поняття, як "сервісний етап", а лише виробничий сервер, який знаходиться поза пулом, і наразі не служить кінцевим користувачам. Це має сенс, і я є методологією, яку я дотримуюся, але я не називаю цих серверів "сервісами для встановлення", а лише виробничими серверами (яких немає в пулі). Оскільки скрізь, де я працював, який використовує сервіси інсценізації, є їх окремими серверами, я не думаю, що ваш опис інсценізаційного сервера є стандартним використанням цього терміна. Хороша ідея, але не те, що зазвичай означає "інсценізація сервера" (на мій досвід, все одно).
іконоборство

1
@Brandon Як ви вважаєте, що таке "сервісний сервер"? Це може бути регіональна різниця, як-от "підстрибування" сервера.
Кріс Ш

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

17

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

Очевидно, що ви хочете зробити все тестування, перш ніж перейти до виробництва, але у великому, складному середовищі з великою кількістю користувачів це дуже складна мета. Зокрема, практично неможливо адекватно завантажувати програмне забезпечення для тестування в якості. Функціональне тестування набагато простіше автоматизувати, ніж тестування навантаження. Коли у вас на серверах потрапляє багато тисяч користувачів, речі не вдається дивними і важко передбачити способи.

Отже, що ми робимо:

  • Розвиток
    • включає безперервну інтеграцію та автоматизоване тестування
  • тестування на випуск
    • моя група аналізує сам випуск
    • перегляд журналів установки
    • тестування відкату
  • QA
    • тестування прийняття користувача

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

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

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

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

У відповідній примітці ось мої слайди з презентації, яку я щойно розповів, як працює наш процес випуску.


5

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

Прикладом цього може слугувати Windows Azure, що вимагає 5-25 хвилин, щоб розгорнути нову версію, але ви можете розгорнутись в інсценізаційному середовищі, виконати тести, а потім миттєво поміняти місцями виробництва та інсценування .


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