В цьому документі описаний процес тестування програмних продуктів в компанії Join.To.IT: як влаштовані процеси, роль QA в команді, як проходить тестування, хто відповідає за якість, як процес тестування в розробці працює зараз і до чого ми прагнемо прийти.
Для того, щоб отримати якісний продукт, потрібно відповідально і якісно робити все з самого початку. Ось чому, в нашій компанії QA в основному залучається в процес розробки з самого початку, ще на етапі збору та аналізу проектної документації, це по-перше. По-друге, одне тестування не зможе забезпечити якість продукту, тому якісними повинні бути всі процеси розробки й нести відповідальність за якість повинен кожен член команди. I, по-третє, розробку і тестування не можна розглядати окремо, ці два процеси повинні тісно переплітатися одне з одним, а спеціалісти спілкуватися між собою і ділитися фідбеками (це проходить на щоденних Stand-ups). В результаті якість досягається не виявленням багів, а запобіганням їх, і це ціль усієї команди.
У 2019 році компанія перейшла на Spotify Agile Methodology.
Основною її ідеєю є розподіл команд на так звані "squad". Кожен squad містить спеціалістів різних областей програмування, які формують full-stack команду. На чолі такої команди стоять PM і Head of squad. Кожен squad займається своїми проектами. Детальніше про Spotify Agile Methodology можна ознайомитися за посиланням.
Основні ролі на проекті в JTI:
SDLS (Software development lifecycle) - життевий цикл програмної системи.
Основні етапи SDLS компанії.
Основні:
Детально ви можете прочитати тут - link.
QA інженер - спеціаліст по забезпеченню якості продукту, діяльність якого спрямована на покращення процесів розробки ПЗ, запобігання багів на ранніх етапах розробки та виявлення багів в продукті.
Основною ціллю тестування є не знаходження якнайбільше багів за короткий час, а створення процесу, в якому важко допустити помилку.
QA в JTI підпорядковується на пряму QA Team Lead (питання пов'язані з графіком роботи, відпустками, планом робіт, звіти денні та в цілому по статусу розробки проектів, ІПР і тому подібне). Що стосується командної роботи на проекті, QA спеціаліст виконує завдання стосовно розробки, і звітує щодо прогресу для ПМ окремого проекту.
В цілому QA виконує такі обов'язки в компанії:
Кожен четвер о 16:00 відбувається QA planning, на якому складається план тестування на наступний Sprint (2 тижні).
Основні ролі, що беруть участь в плануванні: QA Team Lead, Head of PM. Також, за необхідності, можуть бути присутні CEO і CTO й інші члени команди (PM, QA). На плануванні обговорюється, що кожен QA буде робити на протязі наступних 2 тижнів. План створюється на основі sprint плану розробки.
Основна ідея/ціль планування: підготувати АС для початку розробки окремих частин проекту та протестувати задачі, які вже зроблені, підготуватися до демо. При цьому в план вносяться всі потрібні до виконання задачі та ставиться пріоритет для них. Кожен QA Engineer складає свій план самостійно або з ПМ, відносно проектів, на яких він працює і передає свій план QA Team Lead (до 15:30). А далі QA Team Lead з Head of PM перевіряють план, фіналізують його і передають команді QA.
Ось QA planning документ. Кожен QA на протязі тижня, кожного дня заповнює результати по своєму плану (наприклад: done / 70% done / відмінили через… / замінили)
ВАЖЛИВО: документ завжди має бути в актуальному стані.
Кожного ранку QA Team Lead проводить внутрішній standup QA відділу. Тут обговорюється статус минулого робочого дня і план на сьогодні, а також окремі питання по проектам і процесам, якщо такі є.
Як виглядає звичайний день QA:
Приклад:
@ekaterina.bolukh
Report for today:
1. Назва проекту: тип задачі (Requirement testing/AC/Testing/Regression testing):
- Назва модуля - % виконання (і коментарі, якщо є необхідність)
- Назва модуля - % виконання
- Назва модуля - % виконання
QA має 2 основні типи задач: тестування проектних вимог і написання АС; проведення мануального тестування задачі проекта.
а) Після виконання будь-якого типу задачі недільного плану QA, необхідно написати звіт в rocket chat проекту своєму РМ і відмітити в коментарі QA Team Lead (FYI), а також зробити відмітку статусу в недільному плані, формат звіту залежить від різних факторів, головне, щоб звіт був чітким і інформативним для команди.
б) Після виконання мануального тестування окремої задачі з Аджайл дошки (Trello/ Jira/ other), необхідно написати звіт в карточку задачі. Зазвичай вид звіту наступний:
Приклади звіту в чат проекту після виконання тестування:
Приклад 1:
Status of regression#3,
Module ‘Goals’ (roles: ALL, environment: Windows 10, Chrome).
*Total bugs in open = 5*
*bugs by Status:*
confirmed by QA = 7
re-open = 2
new = 3
*bugs by Priority:*
High = 1
Normal = 1
*bugs by Type:*
back-end = 1
front+back = 1
front-end = 3
Additional comment: Roles = staff and supervisor - are blocked by bug ID=129.
Приклад 2:
*Results of testing:*
1. Transaction: 70% - AC passed, 3 opened bugs, status = need to fix.
2. History: 100% - AC passed, 1 opened bug for separate test-case, status = need to fix.
3. Users CRUD: 100% - AC passed, 0 bugs, status = ready for full testing before release.
QA виконує тестування за своїм недільним планом.
Перед стартом тестування QA має перевірити:
Якщо щось не готове, потрібно максимально швидко вплинути на виправлення ситуації та розпочати тестування. Як що ж все-таки QA й PM не можуть владнати ситуацію, вони мають звернутися до QA Team Lead.
Перший етап тестування web-систем проводиться на одному браузері, зазвичай це Chrome. Спочатку проводиться перевірка виконання АС:
Крос-браузерне і кросс-платформене тестування проводиться після того, як 80% багів на Chrome будуть закриті.
У кожного проекту є основний проектний документ (про проектну документацію вже було трохи описано в розділі SDLS в JTI).
Це живий документ, який розвивається разом із проектом.
Наразі, основний документ Project Requirements описується в Google Documents і містить назву версії. Всі версії зберігаються в Google Drive, корпоративного аккаунту. Для того, щоб команда мала доступ до всіх версій і могла в будь-який момент знайти останню, посилання на папку додається в Project Profile проекту.
Не вся документація, як і не всі проекти в компанії тестуються, але до ключових проектів завжди залучається QA. Після того, як документація по всьому проекту, або по якійсь його завершеній функціональності буде завершена, документ планується на передачу для інженерів по тестуванню. Перед передачею, відбувається зустріч PM і QA, на якій PM проводить коротке рев’ю документації проекту з метою, полегшення подальшої роботи QA з документом та визначення, чи взагалі готовий документ до тестування, чи може його потрібно допрацювати. Якщо документ потрібно допрацювати, PM отримує фідбеки на зустрічі та забирає документ на допрацювання.
Ціль тестування проектної документації - якнайшвидше вияснити всі незрозумілі питання по документації. Чим швидше документація буде доповнена або підкорегована, тим більше шанс, що проблема не піде в код і не потрібні будуть ресурси до її виправлення. Тому проектну документацію потрібно тестувати ціленаправлено і вдумливо, а не бігло продивлятися, як якусь статтю.
При тестуванні проектної документації потрібно звертати увагу як на технічні аспекти, так і на логіку роботи системи, або функціональності в цілому: для чого вона? яка її основна ціль для юзера, а яка для бізнесу? Система - це один організм і вона повинна працювати як одне ціле, тому потрібно перевіряти не лише окремі модулі, а їх взаємодію, як вони впливають одне на одне. Окрім цього, в систему можуть підключатися додаткові системи, і це потрібно теж враховувати.
Виділимо основні аспекти перевірки проектної документації:
Приклад оформлення звіту: link.
Буде корисним для ознайомлення: Методичка для менеджеров компании Join.To.IT
Після тестування проектної документації (проектна документація повинна бути актуалізована або PM або QA Engineer), настає наступний етап розробки проекту - написання Acceptance Criterias (частіше написанням АС займаються QA Engineer, рідше - РМ).
Деталізація АС залежить від таких факторів як: побажання замовника, бюджет на QA, склад команди розробки, статус проекту і проектної документації.
Зазвичай, АС оформлюються не надто детально, вони повинні покривати лише основні цілі та тестові випадки окремого модуля, при цьому вся детальна інформація і вимоги містяться в Проектній Документації по якій, при необхідності, будуть додатково описуватися тест-кейси при тестуванні.
Спочатку всі АС записуються в файл Google doc, допрацьовуються разом з QA, РМ або ВА, і переносяться в Трелло картку (після цього треба змінити статус AC в Project Profile).
В нашій компанії використовується баг-трекінгова ситема Redmine.
Проекти в Redmine створює або PM проекту або QA.
Враховуючи типи проектів в нашій компанії, маємо два типи проекту в Redmine:
Якщо проект складається з декількох проектів, перелічених вище, створюється 1 батьківський проект та 1 або 2 підпроекти. Батьківським проектом завжди виступає web проект. Налаштування для кожного типу проекту описані нижче.
Project | Modules | Trackers | Custom Fields |
---|---|---|---|
Web-проект |
|
|
|
Mobile-проект |
|
|
|
Модулі
Issue - основний модуль системи, де знаходяться всі існуючі баги по проекту.
Documents - тут знаходяться вся потрібна інформація по проекту: посилання на Проектну документацію, доступи до тестового серверу, тестової бази даних, доступи до тестової документації і таке інше.
Трекери
Bug - це трекер де знаходяться баги створені, зокрема, QA спеціалістом, або внутрішнім членом компанії.
Ticket - це трекер, де знаходяться баги, створені клієнтом (клієнти можуть створювати баги лише в цьому трекері)..
Review - це трекер для PM.
Поле | Деталі |
---|---|
Subject |
Описується у форматі:
[Модуль або назва майлстоуна] Що? Де? Коли, після якої дії користувача? (за виключенням деяких випадків, в основному при описані бага дизайну) Тобто потрібно описувати що НЕ виконується, отже речення повинне бути не стверджувальне, а заперечне (за виключенням, якщо речення вже вказує на баг : "The system is crashed on the login page after clicking the button "Login" with invalid fields") В основному, Subject формується так: перефразуємо очікуваний результат в заперечне речення і отримуємо описання багу. |
Description |
Описується у форматі:
|
Status | Присвоюється статус багу. Детально про статуси описано в наступному розділі. |
Priority |
|
Assignee | Поле показує хто відповідальний за баг в даний момент часу. |
Link to page with bug | URL на баг для web проектів. |
Environment |
Тестове середовище.
Приклад:
|
Link to Trello card | URL на Trello картку окремого модуля web проекту (back or front) |
Number of re-open | Для щойно створенних багів значення = 0. При кожному re-open багу, значення поля потрібно змінити на відповідне. |
Start date | Заповнюється системою автоматично. |
Date of change | Остання дата внесення змін в баг. |
Issue closed | Дата закриття багу. Використовується для статусів: Closed, Confirmed by QA, Duplicated. |
Type list |
Це поле використовується для розділення багу на наступні группи багів:
|
MODULE |
Назва модулю відносно ієрархії системи. Це input поле, тому важливо правильно вказати назву.
Це поле може використовуватися для створення списків відкритих багів для проекту. Список = модуль системи |
Additional creator comments | Це поле призначене тільки для людини, яка репортує баг. |
Attachments | Поле для файлів (скріни з багами, файли, які використомувалися в кейсі, тощо) |
Watchers |
Даний блок використовується для налаштування розсилок на email.
Оскільки всі учасники проекту мають доступ до багів проекту, цей блок не є обов’язковим. Найчастіше в блоці ставиться відмітка для PM і для розробника відповідального за виправлення багу. |
Додаткову документацію про написання баг-репортів можна прочитати тут: Link
Після збереження списку багів, посилання на нього треба прикріпити в Project Profile Page у відповідній колонці, та додати це посилання в коментарях у Трелло картці
Тест-кейси пишуться, якщо АС неінформаційні. Можуть бути описані в файлі з АС, або в окремому файлі в тій же папці, де документ з АС.
При цьому, в залежності від тяжкості модулю, QA Engineer може визначати формат написання тест-кейсів (можна писати і чек-лист для легких модулів)
Приклади звітів:
25.11.2021
**Regression testing #1**
_______________________
Environment = Google Chrome Version 92.0.4515.107 (Official Build) (64-bit)
[Link to the site]()
Role: admin
_________________________
**Result:** bugs are open: 2
[Link to the bug list]()
Status of regression#3,
Module ‘Goals’ (roles: ALL, environment: Windows 10, Chrome).
*Total bugs in open = 5*
*bugs by Status:*
confirmed by QA = 7
re-open = 2
new = 3
*bugs by Priority:*
High = 1
Normal = 1
*bugs by Type:*
back-end = 1
front+back = 1
front-end = 3
Additional comment: Roles = staff and supervisor - are blocked by bug ID=129.
Звіти залежать від ситуації, такий шаблон підходить для великих модулів проекту. Для менших модулів можна використовувати:
*Results of testing:*
1. Transaction: 70% - AC passed, 3 opened bugs, status = need to fix.
2. History: 100% - AC passed, 1 opened bug for separate test-case, status = need to fix.
3. Users CRUD: 100% - AC passed, 0 bugs, status = ready for full testing before release.
Наприклад: done / 70% done / відмінили через… / замінили
@ekaterina.bolukh
Report for today:
1. Назва проекту: тип задачі (Requirement testing/AC/Testing/Regression testing):
- Назва модуля - % виконання (і коментарі, якщо є необхідність)
- Назва модуля - % виконання
- Назва модуля - % виконання
Корисні посилання:
Методичка для менеджеров компании Join.To.IT
Введение в Postman
Rest API best Practices
Bug-Reports