DevOps

     Віднедавна Девопс — ну, ДУЖЕ поширений, ба модний, термін у розробці програмного забезпечення. Оскільки, швидкість релізів нових версій стає все більш важливим критерієм будь-якого програмного продукту, і у свою чергу вимагає все більш якіснішого й інноваційного середовища для розробки. Плюс якомога тіснішого, злагодженого співробітництва між працівниками.

       Що таке Devops? Devops — це не методологія на зразок Agile, чи набір інструментів, а концепція. Красномовне визначення із книги: Философия DevOps. Искусство управления IT

По суті devops — це спосіб мислення і роботи. Люди віддалені від цієї сфери представляють devops як якийсь набір специфічних інструментів, таких як Chef або Docker, але насправді devops не обмежується ними. Інструменти перетворюються в «devops» завдяки способу їх застосування, а не в силу характеристик самих інструментів.

      Хоча, на зразок Agile, Devops надає можливість одразу реагувати на зміни бізнес вимог. Закономірно:

А чим складніший продукт, тим складніше оточення для його розробки й подальша дистрибуція (delivery), й значно тяжче зреагувати (повернутися).

Йдемо далі… Хто такі Devops -сери?

      На перший погляд може здатися що Devops це команда сис-адмінів, але це є лише частково правда. Вдумайтеся у зміст словосполучення!

Development  (“розробка”) + Operations (“операційний) = DevOps — правопис слова буває різний.

Що таке DevOps
Схема ілюструє на перетині яких областей виник DevOps

     Звідси, Devops — це ціла гілка фахівців, яка інтегрується у розробку: системні інженери, DBA (бізнес аналітики), мережеві інженери та фахівці з безпеки, QA, продакт менеджери. Однакова вимога для усіх, рядовий Devops -ер повинен володіти хорошим знанням мережевих технологій + хорошим рівнем знання свого продукту. Також у команді обов’язково повинні бути сильні програмісти для вирішення деяких специфічних завдань. Підтримка складної серверної інфраструктури часто вимагає додаткової програмної підтримки, для автоматизації рутинних процесів.

     Простий приклад. Команді розробників терміново знадобився тестовий сервер із збільшеною пам’яттю з інстальованими розширеннями. Для звичайного розробника це рутина, він цілком може з цим впоратися, але список завдань на сьогодні явно не включає в себе витрати часу на підйом сервера. До того ж наступного разу цю рутину знову доведеться покроково повторювати. Для девопс інженера, це трохи інше завдання. Devops -сери мають право витратити на це трохи більше часу, але при цьому автоматизувати розгортання і зробити його більш зручним для подальшого використання всієї команди.

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

Як виглядає процес  тестування та роль тестувальника у DevOps

     Тестер у DevOps іменується — (DTE) DevOps Test Engineer. DevOps Тестувальник досить специфічна фігура. Так би мовити вищий щабель тест-інженера автоматизованого тестування => вознесення до рівня «Дзен».

    Колись мені було складно уявити, що саме тестувальник перевірятиме в серверній інфраструктурі? Але, оскільки часто й тут потрібен більш творчий підхід із включенням аналітичного мислення, то робота знайшлася і для тестувальника.

DevOps функціонує крізь чотири основні безперервні процеси (дехто виділяє і більше розбиваючи якись процес на більше складових):

  •     Continuous Integration — розробка нових версій, додавання нового функціоналу;
  •     Continuous Delivery — поставка програмного продукту;
  •     Continuous Testing — тестування якості;
  •     Continuous Monitoring — моніторинг.

     У DevOps тестування і моніторинг не відбувається наприкінці релізу, а передбачається впродовж усього циклу розробки. QA інженери перевіряють чи команда побудувала правильну програму, бачачи її та перевіряючи, як вона функціонує та виконує задумане одразу. Так само розробники та системні інженери безперервно розробляють та інтегрують код, доставляють продукт стейкхолдерам (Continuous Integration and Continuous Delivery), і ці зацікавлені сторони із своєї сторони теж безперервно тестують продукт на предмет того наскільки він задовольняє їх вимоги і влаштовує.

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

     Наприклад нам потрібно визначити що у сервера 8GB оперативної пам’яті і доступний FTP сервер. Це можна зробити мануально, підключившись до створеного сервера і запустивши декілька консольних команд. Або ж кращий варіант автоматизувати, обернувши всі ці команди в bash скрипт. Таких прикладів досить багато, уявіть як багато є демонів, всіляких консольних програм та іншого ПЗ, які використовуються щодня на великих проектах.

     Отже, ключова роль команди тестувальників: узгодити їхні test design, test automation, and test case development з DevOps — і не тільки верифікувати код, а щоб ці нові зміни не поламали продукту. Ключовим розрізненням DevOps є зрілість тестування. По суті компанія може автоматизувати більшу частину процесів integration, testing, delivery, and monitor але це потрібно передбачити заздалегідь.

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

     Щойно автоматизовані тести готові, їх можна буде ввести в тестові набори, їх можна включити у тестові сценарії до виконання, які можуть бути виконані будь-яким інструментом планування або безперервної інтеграції та навіть можуть використовуватися для тестування у виробництві. Результати виконання автоматизації можуть бути згенеровані у форматі xUnit, форматі XML або HTML-форматі, який можна прочитати та запустити звіт проти.

Що потрібно знати devops тестувальникам?

     Робота з серверними інфраструктурами це робота з Linux. Потрібно знати що таке Load Average, Cron і як збирати програми з вихідного коду. Популярні продукти в цій сфері. Це Chef, Zabbix, Docker, Vagrant, Continuous Integration системи. Мати досвід роботи з цим ПО — актуальні вимоги. Integration of DevOps testing into Continuous Integration and Continuous Delivery workflows Мови програмування. Низькорівневі, ООП. можна автоматизувати тестування кукбуков на Ruby.

Перекваліфікуватися на DTE (DevOps Test Engineer) можуть:

  • Будь хто хто вивчає та цікавиться DevOps Test strategies and automation
  • Quality Assurance Managers
  • Testers and Quality Assurance Teams
  • Software Engineers
  • IT Managers
  • Project Managers
  • Lab staff
  • Release Managers and delivery staff
  • Maintenance and support staff
  • Будь-хто причетний до тестового процесу

Related posts

Leave a Comment

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.