Найбільш трудомісткою частиною роботи по створенню нового програмного забезпечення є зовсім не написання коду, а процес його налагодження і виправлення помилок. Код пишуть люди, а люди можуть помилятися. За статистикою, на кожну тисячу рядків коду припадає від 5 до 15 помилок, і ось відлов цих помилок якраз займає левову частку часу. Саме для цього і існує налагодження.
Первинне налагодження коду йде паралельно з його написанням і займаються ним самі програмісти. У міру готовності окремі програмні модулі надходять до штатних тестувальників компанії розробника, які починають їх перевіряти за допомогою спеціальних систем автоматизованого тестування. Зазвичай, на вході програмного модуля задається певний набір параметрів і при цьому відомо, що повинно бути на виході при правильній роботі програми. Якщо на виході виявляться інші результати, тестувальник починає пошук помилок за допомогою відлагоджувача або з використанням оточення, яке допомагає швидко виявляти знайдені помилки.
Після того як окремі програмні модулі готові, вони об'єднуються в якесь єдине ціле. Це ще не повнофункціональна програма, але вона вже здатна працювати і виконувати, хоча б частково, свої головні завдання. Такий варіант програми і називають альфа-версією.
Поняття альфа-тестування
Альфа-тестування (alpha testing) – це вид приймального тестування, яке зазвичай проводиться на пізній стадії розробки продукту і включає імітацію реального використання продукту штатними розробниками або командою тестувальників. Зазвичай альфа-тестування полягає в систематичній перевірці всіх функцій програми з використанням технік тестування «білого ящика» і «чорного ящика».
Переваги альфа-тестування:
- Забезпечує краще уявлення про надійність програмного забезпечення на ранній стадії.
- Допомагає моделювати поведінку користувача і навколишнє середовище в режимі реального часу.
- Виявляє багато серйозних помилок.
- Дає можливість раннього виявлення помилок щодо дизайну і функціональності.
Недоліки альфа-тестування:
- Функціональність не може бути перевірена на всю глибину, оскільки програмне забезпечення все ще знаходиться на стадії розробки. Іноді розробники і тестувальники незадоволені результатами альфа-тестування.
Поняття бета-тестування
Бета-тестування (beta testing) – інтенсивне використання майже готової версії продукту з метою виявлення максимального числа помилок в його роботі для їх подальшого усунення перед остаточним виходом (релізом) продукту на ринок, до масового споживача. Бета-тестування є реально працюючою версію програми з повним функціоналом. І завдання бета-тестів – оцінити можливості і стабільність роботи програми з точки зору її майбутніх користувачів.
На відміну від альфа-тестування, проведеного силами штатних розробників або тестувальників, бета-тестування передбачає залучення добровольців з числа звичайних майбутніх користувачів продукту, яким доступна згадана попередня версія продукту (так звана бета-версія).
Такими добровольцями (їх називають бета-тестерами) часто керує цікавість до нового продукту, задля якої вони цілком згодні миритися з можливістю випробувати наслідки ще не знайдених (а тому і не виправлених) помилок. Крім цікавості, мотивація може бути обумовлена бажанням вплинути на процес розробки і в підсумку отримувати більше задоволення їхніх потреб в продукті. Дуже добре, якщо це люди, які вже мають досвід роботи з програмами такого типу, а ще краще – з попередньою версією цієї ж програми. Зазвичай у компаній вже є певне коло осіб, з якими вони постійно співпрацюють.
Бета-тестування може бути:
- Закритим: Програма тестується в невеликій групі користувачів за запрошеннями.
- Відкритим: Цей варіант дозволяє протестувати додаток в більшій групі і отримати великий обсяг зворотного зв'язку. Будь-який користувач зможе приєднатися до відкритого бета-тестування і відправити особистий відгук.
Відкрите бета-тестування, наприклад, може використовуватися як частина стратегії просування продукту на ринок (наприклад, безкоштовна роздача бета-версій дозволяє залучити широку увагу споживачів до остаточної дорогої версії продукту), а також для отримання попередніх відгуків про нього від широкого кола майбутніх користувачів.
Треба сказати, що розробники не відчувають нестачі в бажаючих взяти участь в такій роботі. Такого роду співпраця приносить користь обом сторонам, адже виправлення простіше зробити в процесі роботи, а не коли вона вже завершена, до того ж зауваження і побажання користувачів дозволяють зробити програмне забезпечення кращим і якіснішим.
Переваги бета-тестування:
- Знижує ризик виходу продукту з ладу в процесі валідації клієнта.
- Бета-тестування дозволяє компанії тестувати інфраструктуру після запуску.
- Підвищує якість продукції завдяки зворотному зв'язку з клієнтами.
- Є економічним методом збору даних в порівнянні з аналогічними методами.
- Створює доброзичливість з клієнтами і підвищує задоволеність клієнтів.
Недоліки бета-тестування:
- Управління тестуванням – проблема. У порівнянні з іншими типами тестування, які зазвичай виконуються всередині компанії в контрольованому середовищі, бета-тестування виконується в реальному світі, де у компанії рідко є контроль.
- Пошук правильних користувачів бета-версії і підтримання їх участі може викликати труднощі.
Фази тестування
Пре-альфа: програмне забезпечення є прототипом. Інтерфейс завершений, але не всі функції є такими. На цьому етапі програмне забезпечення не публікується.
Альфа: розробка програмного забезпечення підійшла до кінця і програмне забезпечення внутрішньо перевірено на наявність помилок і проблем.
Бета: програмне забезпечення стабільно і випущено обмеженому числу користувачів. Мета полягає в тому, щоб отримати відгуки клієнтів про продукт і внести відповідні зміни в програмне забезпечення.
Реліз-кандидат: на основі відгуків бета-тесту вносяться зміни в програмне забезпечення і перевіряється виправлення помилок. На цьому етапі функціональність радикально не змінюється. Реліз-кандидат також виставляється громадськості.
Випуск: все працює, програмне забезпечення випущено для загального користування.
Відмінності між альфа- і бета-тестуванням
Альфа-тестування | Бета-тестування |
Що робить | |
Підвищує якість продукту і забезпечує готовність до бета-тестування. | Підвищує якість продукту, інтегрує дані про клієнта в готовий продукт і забезпечує готовність до випуску. |
Коли проводиться | |
Ближче до кінця процесу розробки, коли продукт перебуває в майже повністю працездатному стані. | Безпосередньо перед запуском. |
Як довго проводиться | |
Зазвичай дуже довго протягом багатьох ітерацій. Альфа-тестування нерідко триває в 3-5 разів більше тривалості бета-тестування. | Зазвичай тільки кілька тижнів (іноді до декількох місяців) з невеликою кількістю основних ітерацій. |
Що включає в себе | |
Майже виключно включає перевірку якості ПЗ (баги, баги, баги). | Зазвичай включає в себе маркетинг, підтримку, документацію, якість і інжиніринг (в основному, всю групу продуктів). |
Хто проводить | |
Зазвичай виконується тестувальниками, розробниками, а іноді і «друзями і сім'єю». Фокусується на тестуванні, яке буде емулювати ~ 80% клієнтів. | Випробувано в «реальному світі» з «реальними клієнтами» і зворотний зв'язок може охоплювати кожен елемент продукту. |
Що отримують тестувальники | |
Безліч помилок, збоїв, відсутніх документів і функцій. | Кілька помилок, менше збоїв, більшість документації і функцій завершені. |
Налагодження | |
Більшість відомих критичних проблем виправлені, деякі функції можуть бути змінені або додані в результаті раннього зворотного зв'язку. | Велика частина зібраної зворотного зв'язку розглядається і/або застосовується в майбутніх версіях продукту. Виконуються тільки важливі/критичні зміни. |
Як тестують | |
Тестують за методологією, показниками ефективності. Хороший альфа-тест задає чітко визначені критерії і вимірює продукт по відношенню до цих орієнтирів. | Тестують із застосуванням реальності та уяви. Бета-тести досліджують межі продукту, дозволяючи клієнтам досліджувати кожен елемент продукту в своєму рідному середовищі. |
Результат | |
Є відмінне уявлення про те, як працює продукт і чи відповідає він критеріям дизайну (і чи «бета-готовий» він). | Є уявлення про те, що ваш клієнт думає про продукт і про те, що він може відчувати, коли купує його. |
Подальші дії | |
Бета-тестування. | Реліз. |