Рівень 3. Робота з артефактами тестування та їх створення

Рівень 3

Робота з тестовими артефактами та їх розроблення

Ласкаво просимо на третій рівень, мій юний падаване! На цьому рівні тобі належить пізнати темні та світлі сили тестування. Зійдись у двобої з темною стороною, щоб зрозуміти, як вона діє, і стати справжнім тестувальником, який володіє позитивним і негативним тестуванням. Тут ти познайомишся зі святинею тестування — тест-кейсом.

А ще — з усією супутньою документацією.

Test Case

Почнімо, мабуть, з головного стовпа тестування. Тест-кейс (Test Case) — це артефакт, що описує сукупність кроків, конкретних умов і параметрів, необхідних для перевірки реалізації функції, яку тестують, або її частини.

Під тест-кейсом розуміють структуру такого вигляду:

Action > Expected Result > Test Result

(Дія > Очікуваний результат > Фактичний результат)

Основні поняття

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

  • Набір тест-кейсів і тестів (Test Case & Test Suite)
  • Дефекти / баг-репорти (Bug Reports / Defects)
  • План тестування (рівень 7)
  • План приймальних випробувань (рівень 8)
  • Опис дефектів (рівень 5)
  • Звіт про тестування
  • Чек-лист
  • Use cases / User stories

Як ви вже зрозуміли, три з цих артефактів настільки серйозні, що їм присвячено цілі рівні далі. Тож вони з нетерпінням чекатимуть на вас попереду.

Action
Expected Result
Test Result
passed/failed/blocked

Open page "login"

Login page is opened

passed

Складне визначення, подумати ви могли. А якщо сказати просто, то тест-кейс — це запис дій тестувальника. Як протестував, так і записав. Потрібно це для того, щоб будь-який інший тестувальник або навіть новачок, не знайомий з вашим продуктом, міг провести тестування за вашої відсутності. Також тест-кейси зручні для того, щоб розуміти, який обсяг роботи ви вже виконали і скільки залишилося, відстежувати та документувати процес роботи. Начальство, знаєте, дуже любить документи.

Стандартні атрибути тест-кейса

Давайте розберемо, що таке тест-кейс, на практиці. Тест-кейс — як борщ: у кожної господині він різний, хоча інгредієнти всі, здається, використовують однакові. Стовідсоткового еталонного тест-кейса не існує, тому ми розглянемо різні варіанти оформлення тест-кейсів, і тоді ви будете готові до будь-якого розвитку подій. Ось один із прикладів тест-кейса, написаний для тестування сайту з домашнього завдання:

13

1. Номер — унікальний ідентифікатор тест-кейса. Його зручно використовувати для чіткого розуміння, про яку перевірку йдеться (наприклад, дати посилання на цей тест-кейс в описі бага)

2. Назва — короткий опис суті перевірки. Має вміщатися в твіт і бути зрозумілою! Стисло, але ємно. Тут головне не захопитися стислістю: про що йдеться, має бути зрозуміло всім, а не лише вам.

3. Попередні кроки (PreConditions) — опис дій, які необхідно виконати, але які не мають прямого стосунку до перевірки (наприклад, зареєструватися в системі для перевірки створення елемента). Якщо попередніх кроків немає, цей розділ не заповнюється

4. Кроки — опис дій, необхідних для перевірки (наприклад, створення елемента)

5. Пост-кроки (PostConditions) — перелік дій, що повертають систему в початковий стан (стан до проведення тесту — initial state)

6. Очікуваний результат (Expected result) — сама перевірка: що ми очікуємо отримати після виконання кроків ("Елемент створено")

7. Результат тесту (Test Result) — passed/failed/blocked

8. Пріоритет тест-кейса (Test Case Priority) — це важливість тест-кейса. Важливість проставляють у вигляді числа від 1 до N або пріоритетів: minor, major, critical; є ще блокер (blocker), але він рідко застосовується до тест-кейса

Action
Expected Result
Test Result

PreConditions

do A1

verify B1

do A2

verify B2

Test Case Description

do A3

verify B3

PostConditions

delete this user

У наведеному прикладі кінцева перевірка — В3. Це означає, що саме вона є ключовою. Отже, A1 і А2 — це дії, що приводять систему в стан, придатний для тестування. А В1 і В2 — умови того, що система перебуває в стані, придатному для тестування. Таким чином маємо:

Виконання:
Action
Expected Result
Test Result
(passed/failed/blocked)

PreConditions

do A1

verify B1

passed

do A2

failed

verify B2

Test Case Description

do A3

blocked

verify B3

PostConditions

delete this user

У цьому прикладі під час проходження тест-кейса тестувальник не зумів виконати крок А2, і внаслідок цього система не перейшла в стан, придатний для тестування. У такому разі він заводить баг зі статусом "blocker" і проставляє всі подальші статуси як заблоковані — "blocked". Проходження такого тест-кейса відновиться лише після виправлення цієї помилки. Якщо виявлено баг, який не блокує подальші кроки, тест-кейс завжди проходять до кінця.

Ще приклади

Залежно від вимог до покриття функціоналу та правил написання тест-кейсів у конкретній компанії можна зменшувати деталізацію тест-кейсів:

Перевірка відображення сторінки

Дія

Очікуваний результат

Результат тесту

Відкрити сторінку "Вхід у систему"

- Вікно "Вхід у систему" відкрито

- Назва вікна — Вхід у систему

- Логотип компанії відображається у верхньому правому куті

- На формі 2 поля — Ім'я та Пароль

- Кнопка Вхід доступна

- Посилання "забув пароль" доступне

Назва вікна “вхід у”

Відкрив баг #BG23

Будь обережний із силами темряви. Темрява не дрімає і чекає на тебе в найнесподіванішому місці
Зміст тестового звіту
Переклад українською

Добрий день.

Коротке оновлення статусу тестування фічі backgroundperpage.

Цикл автоматизованого тестування:

Автоматизоване тестування реліз-кандидата 2.983.0 та фічі backgroundperpage — Pass QA.

Проте виникли проблеми з тестами для порівняння скриншотів GUI (впало 116 тестів). Причина падіння тестів — поява горизонтального scroll bar (прокручування). Скрол не з'являється, коли сайт відкривають уручну, тому було зроблено висновок, що баг в автотесті. Посилання на таблицю з результатами аналізу автотестів.

Цикл ручного тестування:

Було знайдено ще один критичний баг — WOH-9557 — Деякі з шаблонів сайтів не відображають фонове зображення.

Плани TODO:

- Запустити автотести з вимкненим експериментом

- Перевірити виправлення знайденої помилки

- Провести вибіркове регресійне тестування після виправлення всіх помилок

Blockers: проблема з появою горизонтального скролу в автотестах

З повагою, Магістр Обі-Ван Кенобі.

Недоліки чек-листів

Так-так. Попри всю привабливість чек-листів, не поспішайте використовувати їх із самого початку своєї кар'єри. У них таки є свої недоліки:

  • Початківці не завжди ефективно проводять тести без достатньо докладної документації
  • Чек-листи неможливо використовувати для навчання нових співробітників, оскільки в них недостатньо докладної інформації
  • Замовникові або керівництву може бути недостатньо того рівня деталізації, який пропонують чек-листи

Перелік функціональності (user stories) — це докладний список того, що користувач може робити в системі. Уся функціональність майбутнього продукту розбивається на найпростіші можливості у вигляді <хто> <що робить> <з чим>. Кожна з функцій має пріоритет, що визначає її важливість для загального успіху продукту. Крім того, для функції описують критерії приймання — реакцію на дії користувача, за якої вона вважається такою, що працює правильно.

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

Приклад Use Case
Види тест-кейсів
Негативний тест-кейс

Оперує як коректними, так і некоректними даними (щонайменше 1 некоректний параметр) і має на меті перевірку виняткових ситуацій (спрацювання валідаторів), а також перевіряє, що функція, яку викликає застосунок, не виконується, коли спрацьовує валідатор.

Позитивний тест-кейс

Використовує лише коректні дані та перевіряє, що застосунок правильно виконав функцію, яку було викликано.

Приклади
Test suite

Test suite (тестовий набір) – є контейнером, який містить набір тест-кейсів і допомагає тестувальникам структурувати, виконувати та звітувати про виконання тест-кейсів. Так само як тест-кейсам, тестовим наборам присвоюють статус виконання: Active, Inprogress, Completed.

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

Тест-кейс може бути доданий до кількох тестових наборів і тест-планів. Один набір може містити будь-яку кількість кейсів.

Структура тестової документації

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

Приклади тест-кейсів

Постався до цих прикладів не просто серйозно, а найсерйозніше. Витратьте на їх вивчення стільки часу, скільки потрібно. Зрозуміло, що читати тест-кейси — це вам не журнал "Галактичні красуні" гортати. Але вам необхідно зрозуміти правила створення тест-кейсів, і найкраще це зробити на реальних прикладах. Отож, до ваших послуг:

1. Тест-кейс у вигляді класичної таблиці

2. Тест-кейс у вигляді таблиці з варіантами

3. Тест-план із банком, понад 50 тест-кейсів. Це ж просто джекпот! (вкладка "Покриття тест-кейсами")

4. Тест-кейс у баг-трекінговій системі Jira

Приклад тест-кейса, створеного в баг-трекінговій системі Jira
Test Report — тестовий звіт

Test Report — це спосіб комунікації, спрямований на встановлення прозорості в діяльності QA-команди протягом доби або іншого часового циклу (спринту), і він містить інформацію як про знайдені дефекти, так і про результати пройдених тестів.

Тестовий звіт буває у вигляді:

• Надсилання Email/документа (найчастіше)

• Meeting/presentation. Зустріч і усний звіт або звіт із презентацією

• Звіт у блозі

• Одночасно щоденний email і щотижневий мітап

Зазвичай тест-репорт призначений для:

• Розробників

• Замовника проєкту

• Усіляких босів і тім-лідів

• Команди підтримки тестового середовища

• Бізнес-аналітика / продакт-менеджера та інших членів команди проєкту

Усі вони є одержувачами / учасниками зустрічі

• Кількість тестів, запланованих на звітний період

• Кількість тестів, виконаних у цей період

• Кількість тестів, виконаних загалом (із запланованого)

• Кількість дефектів, знайдених у цей період, та їхній поточний статус

• Загальна кількість дефектів, знайдених на цей момент, та їхній поточний статус

• Кількість відкритих критичних дефектів

• Blockers — проблеми тестового середовища (лише за їх наявності)

• Showstoppers – усе, що заважає працювати, наприклад, глючить ПК

• Додаток/посилання на документ із виконанням тестів

• Посилання на баг-репорт, на дефект, на ваш інструмент тестування

Як виглядає тім-лід, коли слухає твій тест-репорт

Практичні поради від магістра:

- Позначайте загальний стан тесту кольоровим індикатором. Наприклад: зелений – протестовано вчасно, помаранчевий – трохи із запізненням, червоний – тест затримується або заблокований.

- Включайте до звіту кілька простих показників, як-от: відсоток успішно пройдених тестів на цей момент, щільність дефектів у %, відсоток критичних дефектів від усіх; роблячи це, ви не просто даєте цифри, ви насправді даєте змогу зазирнути в якість продукту, який перевіряєте.

- Якщо більшу частину роботи завершено – згадайте про це.

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

- Якщо використовуєте презентацію, не забудьте додати кілька графіків, щоб зробити її суть зрозумілішою.

- Також можна згадати плани на найближче майбутнє в розділі TODO.

Давай розглянемо два приклади репортів. Це буде повчально.

Приклад таблиці тест-репорту

Коли однозначно потрібно використовувати таблицю? Якщо над заповненням працює кілька людей. Або якщо великий обсяг даних звіту. Давайте розглянемо приклад докладно:

1. Module — логічний розділ у функціоналі проєкту. Аналогічно прикладу тест-кейса №3

2. Scenarios — назва сценарію тесту. Аналогічно елементу чек-листа

3. Sub levels — під-сценарій тесту

4. Complexity — складність тесту

5. Responsible tester — відповідальна за виконання людинка

6. Date — дата виконання тесту

7. Status — pass/fail/locked/not executed (пройдено/не пройдено/заблоковано/не виконано). Далі буде без перекладу, будь ласка, вивчіть статуси!

8. Defect ID and brief description — ідентифікатор дефекту та його короткий опис

9. Severity/Priority — серйозність або пріоритет дефекту

10. Status — статус дефекту

Приклад листа з тест-репортом

Hello.

Short update about feature status.

In general Automation with 2.983 RC and backgroundperpage open - Pass QA.

But I met a problems with Image compare test (failed 116 tests), because appears scroll on screenshot from site with experiment. This don't reproduces manually.

So I've sent a letter to automation team because don't know how to handle this.

Link to investigation table

Manual QA cycle:

Founded one more critical bug - WOH-9557 - Some templates doesn't show background with experiment turned on

Plans TODO:

- Run image compare test with experiment on

- Check bug fix and perform Sanity cycle after

Blockers: 116 automation test fail due to automation bug. Autotest need be fixed.
Regards

Чек-лист

Чек-листи — один із фундаментальних інструментів тестування. Вони дають змогу не забувати про важливі тести, фіксувати результати своєї роботи та відстежувати статистику про статус програмного продукту.

Чек-листи призначені для тестувальників із досвідом і знанням продукту.

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

Важливо запам'ятати: попри всю свою стислість, чек-лист не допускає абстрактності та двозначності. Наприклад: "Перевірити коректність футера" — неправильно! Правильно — "Перевірити працездатність посилань та іконок соцмереж у футері сайту".

Переваги чек-листа

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

Які переваги чек-листів порівняно з тест-кейсами:

• Нівелювання ефекту пестициду в регресійному тестуванні

• Розширення тестового покриття за рахунок відмінностей під час проходження

• Скорочення витрат на утримання та підтримку тестів: не треба писати багато літер!

• Відсутність рутини, яку так не люблять кваліфіковані тестувальники

• Можливість проходити та комбінувати тести по-різному залежно від уподобань співробітників

Приклад чек-листа

Для того щоб перевірити верстку сайту, може використовуватися такий

чек-лист (він тобі знадобиться на рівні 9).

Для верифікації верстки будь-якої вебсторінки виконати такі перевірки:

  1. Відповідність вигляду сторінки макету
  2. Кросбраузерність, кодування та DOCTYPE
  3. Валідність, доступність, мікроформати
  4. Незалежність блоків у CSS: мінімізація каскаду, використання технік БЕМ/MCSS/SMACSS
  5. Сайт має нормально виглядати в усіх стандартних роздільних здатностях від 1024 і вище, не мати горизонтального скролу та вписуватися в екран мобільних пристроїв
  6. Коректна робота під час уведення реального тексту, надійність верстки
  7. Перевірка та оптимізація швидкості завантаження
  8. Наявність Win/Mac/Linux-аналогів шрифтів
  9. Доступність за вимкнених (або тих, що завантажуються) зображень
  10. HTML5-форми, лінкування, валідація
  11. Семантичність. Відсутність дурниць в html і css, одноманітність, акуратність
  12. Правильна структура заголовків (H1, H2, … тощо та TITLE)
  13. Працездатність за вимкненого JavaScript
  14. Працездатність за вимкненого Flash
  15. Відсутність багів за збільшеного шрифту
  16. І останній пункт – дрібні перевірки (детальніше нижче)

І ще один приклад чек-листа. У цьому випадку проводилася перевірка десктопного застосунку в різних ОС. Щоразу, коли на роботі доводиться виконувати кросплатформне тестування, ми створюємо чек-лист у Google Doc. У ньому кожен тестувальник відзначає статус своєї ділянки роботи. Докладніше на прикладі:

Use case

Use case (Варіанти використання) – описи поведінки системи під час її взаємодії із зовнішнім світом.

Use case описує те, як дійова особа намагається досягти певної мети, використовуючи програму.

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

Для чого використовуються use cases?
  • Дають уявлення про поведінку системи
  • Зрозумілі замовникам і розробникам
  • Дають змогу описати безліч альтернатив
    (винятків)
  • Перелік варіантів використання — це перелік функціональності системи

Дають змогу описувати функціонал ітеративно (перелік Use Cases -> Короткі описи ->
Основні потоки -> Розширення)

Структура Use case
  • Мета
  • Дійові особи
  • Передумови
  • Максимальні та мінімальні гарантії
  • Основний сценарій
  • Альтернативні сценарії

Складно? А хто казав, що буде легко? Не час здаватися, ідемо далі!

Як бачить Use Case менеджер

Case: Зареєструватися на сайті

Description: Сайт має надавати користувачеві можливість зареєструватися. Для реєстрації користувач повинен заповнити форму. Після реєстрації сайт має
надіслати на e-mail користувача підтвердження реєстрації

Як запише Use case QA

Опис у форматі Use Case

UC name: Зареєструватися на сайті

Дійова особа: користувач сайту

Передумови: користувач перебуває на головній сторінці
сайту

Основний сценарій:

- Користувач натискає кнопку "Зареєструватися"

- Сайт відображає форму реєстрації

- Користувач заповнює поля форми та підтверджує реєстрацію

- Сайт підтверджує правильність заповнення форми

- Сайт реєструє користувача та надсилає на його e-mail лист із підтвердженням реєстрації

Альтернативні сценарії:

1. Користувач реєструється за допомогою соцакаунта...

User story

Хвилиночку! Бачу, ви збираєтеся закінчувати рівень. Але мені ось незрозуміло, навіщо він потрібен, цей Use case?

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

А ось іще User story та Use case — назви такі схожі, то як же розібрати, де що?

Я поясню, мій кудлатий друже,

User Story — це один зі сценаріїв, тоді як Use Case — це набір сценаріїв

Use Case поєднує кілька сценаріїв і показує стосунки
між ними

По-справжньому він зрозуміє лише побачивши приклад. Ось use case, побудований на базі трьох user story: US1, US2, US3.

Приклад use case дам тобі я. Прочитай і спробуй розібратися, що до чого. Щоб тестування джедаєм стати, розбиратися в таких речах необхідно

Формула User Story

Користувацьку історію можна описувати по-різному. Але найпродуктивнішою для розуміння завдання, а також найкоротшою і водночас місткою виявляється така формула:

Я, як X, хочу Y, щоб Z.

X — це персонаж, від імені якого ведеться розповідь. Це користувач продукту. Це той, для кого буде будуватися функціональність. Y — це завдання, дія або властивість, яких потребує персонаж. Z — це кінцева бізнес-цінність, яку отримає персонаж.

Наприклад, користувацькі історії можуть виглядати так:

Як Падаван Тестування, проходжу курс Galaxy QA Academy, щоб навчитися тестувати.

Як магістр тестування, хочу бачити прогрес студентів і перевіряти їхні роботи, щоб бути впевненим у якості їхніх знань.

Основний сенс User Story для тестувальника — використовувати їх для генерації критеріїв приймання. Критерії приймання (acceptance criteria) — це вимоги від замовника; специфікація, за якою може бути перевірена система/user story. Фактично, критерії приймання — це бізнес-правила, яким підпорядковується історія користувача, що опрацьовується. А вже деталі приймальних тестів, описані в конкретних тестах, сформують приймальні тести, які й дадуть змогу виконати тестування вже готового продукту.

Магія перетворення вимог до продукту на конкретні тест-кейси і є роботою тестувальника. Давайте подивимося процес створення тест-кейсів на прикладі. Спочатку надходить загальна вимога до продукту. Наприклад: "Доступ до нової фічі мають лише керівні посади". Тоді я знаходжу всі ролі користувачів у ПЗ і розділяю їх на керівні та рядові посади. Для кожної посади створю тест-кейс: якщо вона керівна, то перевірю, що доступ є, в іншому разі доступу бути не повинно. А тепер у вигляді схеми:

Запитання та підсумки

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

Практичне завдання

Вітаю тебе, ти пройшов справді зубодробний рівень із теорії! І я знаю, що ти тепер зможеш звернути гори на практиці. Почнімо по порядку:

1. Пройди робочий тест-кейс магістра Кенобі

2. Напиши власний чек-лист для перевірки вже знайомого сайту з першого рівня

3. Тепер, коли ти набив руку на практиці, тобі не складе жодної праці відповісти на кілька теоретичних запитань

4. Заглянь до магістра Йоди — у нього для тебе є особисте завдання

Коли все виконаєш — надішли завдання до ради магістрів через форму. Магістри відзначили тебе як видатного учня. Порадуй їх гарною роботою

Практика створення тест-кейсів

Це завдання для двох. Тож тобі варто звернутися по допомогу до свого друга Чубаки.

Тобі доведеться створити тест-кейс для тестування купівлі солодощів (обожнюю солодощі). Вступний use case такий:

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

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

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

Потім ти обмінюєшся тест-кейсами з Чубакою: він перевірить твій тест-кейс, а ти пройдеш його тест-кейс і дасиш йому свою рецензію на нього — що ти хотів би покращити/виправити. Для того щоб це зробити — скопіюй собі цей документ і вкажи всі правки та коментарі там.

Також Чубака склав чек-лист для перевірки однієї сторінки сайту з печивом, щоб у тебе був приклад.

P.S. Подивися його тест-кейс, перш ніж надсилати свій.