differences between unit testing
Детальне порівняння модульного, інтеграційного та функціонального тестування:
Для будь-якого програмного забезпечення дуже важливим є як тестування модулів, так і тестування інтеграції, оскільки кожен із них використовує унікальний процес тестування програмного додатка.
Але будь-який або навіть обидва не можуть замінити функціональне тестування в будь-який момент.
Що ви дізнаєтесь:
- Блокове тестування проти інтеграційного тестування проти функціонального тестування
- Що таке одиничне тестування?
- Що таке інтеграційне тестування?
- Блокове тестування проти інтеграційного тестування
- Функціональне тестування
- Точна різниця
- Висновок
- Рекомендована література
Блокове тестування проти інтеграційного тестування проти функціонального тестування
Блокове тестування означає окреме тестування окремих модулів програми (без будь-якої взаємодії із залежностями), щоб підтвердити, що код робить все правильно.
Інтеграційне тестування означає перевірку того, чи працюють різні модулі нормально, якщо їх об’єднати як групу.
Функціональне тестування означає тестування фрагмента функціональності в системі (може взаємодіяти із залежностями), щоб підтвердити, що код робить правильні дії.
Функціональні тести пов'язані з інтеграційними тестами, однак вони означають тести, які перевіряють функціональність усієї програми з усім кодом, що працює разом, майже суперінтеграційний тест.
Блокове тестування передбачає перевірку окремого компонента системи, тоді як тестування функціональності передбачає перевірку роботи програми з передбачуваною функціональністю, описаною в специфікації вимог системи. З іншого боку, інтеграційне тестування передбачає перевірку інтегрованих модулів у системі.
І, що найголовніше, для оптимізації рентабельності інвестицій (ROI) ваша база коду повинна мати якомога більше модульних тестів, менше інтеграційних тестів і найменшу кількість функціональних тестів.
Це найкраще проілюстровано у такій тестовій піраміді:
Модульні тести легше писати та швидше виконувати. Час та зусилля на впровадження та підтримку тестів збільшуються від модульного тестування до функціонального тестування, як показано у вищезазначеній піраміді.
Приклад:
Давайте розберемось у цих трьох типах тестування на спрощеному прикладі.
Наприклад, . Для функціонального мобільного телефону основними необхідними деталями є 'акумулятор' та 'сим-карта'.
Приклад модульного тестування - Акумулятор перевіряється на термін його служби, ємність та інші параметри. Сим-карту перевіряють на її активацію.
Приклад тестування інтеграції - Акумулятор та SIM-карта інтегровані, тобто зібрані для запуску мобільного телефону.
Приклад функціонального тестування - Функціональність мобільного телефону перевіряється з точки зору його характеристик та використання батареї, а також можливостей SIM-карт.
Ми бачили приклад, кажучи неспеціалістами.
Тепер давайте візьмемо технічний приклад сторінки входу:
Майже кожна веб-програма вимагає входу користувачів / клієнтів для входу. Для цього кожна програма повинна мати сторінку “Вхід”, яка містить такі елементи:
- Обліковий запис / ім’я користувача
- Пароль
- Кнопка входу / входу
Для модульного тестування наступними тестами можуть бути:
- Довжина поля - поля імені користувача та пароля.
- Значення поля введення повинні бути дійсними.
- Кнопка входу вмикається лише після введення дійсних значень (Формат і по довжині) в обидва поля.
Для інтеграційного тестування наступними тестами можуть бути:
- Користувач бачить привітальне повідомлення після введення дійсних значень та натискання кнопки входу.
- Користувач повинен перейти на сторінку привітання або домашню сторінку після дійсного введення та натискання кнопки Вхід.
Тепер, після завершення модульного та інтеграційного тестування, давайте подивимось додаткове тестові випадки, які розглядаються для функціонального тестування:
- Очікувана поведінка перевіряється, тобто чи може користувач увійти, натиснувши кнопку входу після введення дійсних значень імені користувача та пароля.
- Чи є привітальне повідомлення, яке має з’явитися після успішного входу?
- Чи є повідомлення про помилку, яке повинно з’являтися при недійсному логіні?
- Чи зберігаються файли cookie сайту для полів входу?
- Чи може неактивований користувач увійти в систему?
- Чи існує посилання «забутий пароль» для користувачів, які забули свої паролі?
Набагато більше таких випадків, які приходять у голову функціонального тестера під час виконання функціонального тестування. Але розробник не може взятись за всі справи, будуючи тестові кейси для модулів та інтеграції.
Таким чином, існує безліч сценаріїв, які ще не будуть протестовані навіть після модульного та інтеграційного тестування.
Настав час вивчити модульне, інтеграційне та функціональне тестування по одному.
Що таке одиничне тестування?
Як випливає з назви, цей рівень передбачає тестування «одиниці».
Тут модуль може бути найменшою частиною програми, яку можна перевірити, будь то найменша окрема функція, метод і т. Д. Розробники програмного забезпечення - це ті, хто пише модульні тестові приклади. Метою тут є відповідати вимогам та очікуваній поведінці підрозділу.
Нижче наведено кілька важливих моментів щодо модульного тестування та його переваг:
- Модульне тестування проводиться перед тестуванням інтеграції розробниками програмного забезпечення, що використовує техніки тестування білого ящика .
- Модульне тестування не тільки перевіряє позитивну поведінку, тобто правильність виводу у разі дійсного введення, але також помилки, які трапляються при недійсному введенні.
- Пошук проблем / помилок на ранній стадії дуже корисний, і це зменшує загальні витрати на проект. Оскільки модульне тестування проводиться перед інтеграцією коду, проблеми, виявлені на цьому етапі, можна вирішити дуже легко, і їхній вплив також набагато менший.
- Модульний тест тестує невеликі фрагменти коду або окремі функції, тому виявлені у цих тестових випадках проблеми / помилки є незалежними та не впливають на інші тестові приклади.
- Ще однією важливою перевагою є те, що модульні тестові кейси спрощують та полегшують тестування коду. Отже, вирішити проблеми на більш пізньому етапі стає легше, оскільки буде перевірено лише останню зміну коду.
- Блоковий тест дозволяє заощадити час і витрати, він багаторазовий і простий в обслуговуванні.
JUnit ( Фреймворк Java ), PHPUnit (фреймворк PHP), NUnit (фреймворк .Net) тощо - популярні інструменти модульного тестування, які використовуються для різних мов.
Що таке інтеграційне тестування?
Інтеграційне тестування - це тестування інтеграції різних частин системи разом. Спочатку інтегруються дві різні частини або модулі системи, а потім проводиться інтеграційне тестування.
Метою інтеграційного тестування є перевірка функціональності, надійності та продуктивності системи при інтеграції.
Тестування інтеграції проводиться на модулях, які спочатку перевіряються модулем, а потім інтеграційне тестування визначає, чи дає комбінація модулів бажаний результат чи ні.
Тестування інтеграції можуть проводити як незалежні тестери, так і розробники.
Існує 3 різні типи підходів до тестування інтеграції. Давайте коротко обговоримо кожен із них:
а) Підхід до інтеграції Великого вибуху
При цьому підході всі модулі або блоки інтегровані та перевірені як одне ціле. Зазвичай це робиться, коли вся система готова до інтеграційного тестування в один момент часу.
Будь ласка, не плутайте цей підхід інтеграційного тестування з тестуванням системи, протестується лише інтеграція модулів або модулів, а не всієї системи, як це робиться при тестуванні системи.
Основний підхід 'великого вибуху' перевага полягає в тому, що все інтегроване тестується одночасно.
Один основний недолік полягає в тому, що стає важко виявити несправності.
Приклад: На малюнку нижче блок 1 до блоку 6 інтегрований та протестований із використанням підходу Великого вибуху.
найкращий конвертер YouTube в mp3
б) Підхід зверху вниз
Інтеграція блоків / модулів тестується від верхнього до нижнього рівнів поетапно.
Перший блок перевіряється індивідуально шляхом письма тест STUBS . Після цього нижчі рівні інтегруються один за одним доти, доки останній рівень не буде зібраний та перевірений.
Підхід зверху вниз - це дуже органічний спосіб інтеграції, оскільки він узгоджується з тим, як все відбувається в реальному середовищі.
Єдиний занепокоєння при такому підході основна функціональність перевіряється в кінці.
в) Підхід знизу вгору
Блоки / модулі тестуються знизу до верхнього рівня, поетапно, поки всі рівні блоків / модулів не будуть інтегровані та перевірені як один блок. Викликаються програми стимуляторів ВОДІЇ використовуються в цьому підході. На нижчих рівнях легше виявити проблеми чи помилки.
Мер недолік цього підходу полягає в тому, що проблеми вищого рівня можна визначити лише в кінці, коли всі підрозділи інтегруються.
Блокове тестування проти інтеграційного тестування
Досить обговоривши питання модульного тестування та інтеграційного тестування, давайте швидко розглянемо відмінності між ними в наступній таблиці:
Одиничне тестування | Інтеграційне тестування |
---|---|
Проводиться на початковому етапі тестування, а потім може виконуватися в будь-який час | Потрібно проводити після модульного тестування та перед тестуванням системи |
Тестує окремий компонент всієї системи, тобто тестує одиницю ізольовано. | Перевіряє взаємодіючі компоненти системи, тобто перевіряє взаємодію декількох блоків. |
Швидше виконати | Може бігати повільно |
Відсутність зовнішньої залежності. Будь-яка зовнішня залежність висміюється або припиняється. | Потрібна взаємодія із зовнішніми залежностями (наприклад, база даних, обладнання тощо) |
Простий | Складні |
Проводиться розробником | Проводиться тестером |
Це різновид тестування білих скриньок | Це різновид тестування на чорну скриньку |
Дешеве обслуговування | Дороге обслуговування |
Починається із специфікації модуля | Починається із специфікації інтерфейсу |
Модульне тестування має вузький обсяг, оскільки воно просто перевіряє, чи кожен невеликий фрагмент коду робить те, що передбачається. | Він має ширший обсяг, оскільки охоплює всю заявку |
Результатом модульного тестування є детальна видимість коду | Результатом інтеграційного тестування є детальна видимість структури інтеграції |
Розкрийте проблеми, що стосуються функціональних можливостей окремих модулів. Не виявляє помилок інтеграції та загальносистемних проблем. | Розкрийте помилки, що виникають, коли різні модулі взаємодіють між собою, формуючи загальну систему |
Функціональне тестування
ДО техніка тестування чорної скриньки , де функціональність програми перевіряється для отримання бажаного результату при наданні певного входу, називається „Функціональне тестування”.
В нашому процеси тестування програмного забезпечення , ми робимо це, пишучи тестові кейси відповідно до вимог та сценаріїв. Для будь-якої функціональності кількість написаних тестових кейсів може коливатися від одного до багатьох.
Тестові кейси в основному складаються з наступних частин:
- Підсумок тесту
- Передумови (якщо такі є)
- Етапи введення тесту
- Дані тесту (якщо такі є)
- Очікуваний результат
- Примітки (якщо такі є)
'На основі вимог' та 'На основі бізнес-сценарію' це дві форми функціонального тестування, які проводяться.
У тестуванні на основі вимог тестові кейси створюються відповідно до вимоги та перевіряються відповідно. У функціональному тестуванні на основі бізнес-сценарію тестування проводиться з урахуванням усіх сценаріїв з точки зору бізнесу.
Однак майор недолік функціонального тестування - це ймовірна надмірність у тестуванні та можливість пропустити деякі логічні помилки.
Точна різниця
Давайте розглянемо їх відмінності.
Ось деякі з основних:
Блокове тестування | Інтеграційне тестування | Функціональне тестування | |
---|---|---|---|
Визначення та мета | Тестування найменших одиниць або модулів індивідуально. | Тестування інтеграції двох або більше блоків / модулів, об'єднаних для виконання завдань. | Тестування поведінки програми відповідно до вимоги. |
Складність | Зовсім не складний, оскільки включає найменші коди. | Трохи складніше, ніж модульні тести. | Складніше порівняно з модульними та інтеграційними тестами. |
Прийоми тестування | Техніка тестування білої скриньки. | Техніка тестування білої та чорної скриньок. Тестування сірої коробки | Техніка тестування чорної скриньки. |
Основна увага | Окремі модулі або блоки. | Інтеграція модулів або блоків. | Повна функціональність програми. |
Помилка / Висвітлені проблеми | Модульні тести виявляють проблеми, які часто можуть виникати в модулях. | Інтеграційні тести виявляють проблеми, які можуть виникнути при інтеграції різних модулів. | Функціональні тести виявляють проблеми, які не дозволяють програмі виконувати свої функціональні можливості. Сюди входять також деякі основні сценарії. |
Випуск втечі | Немає шансів втекти. | Менше шансів втекти. | Більше шансів уникнути проблеми, оскільки список тестів для запуску завжди нескінченний. |
Також читайте => Що таке тестування функцій
Висновок
Всі ці три типи тестування співвідносяться.
Щоб досягти повного охоплення, потрібно мати модульні тести для шляхів / рядків коду, функціональні та інтеграційні тести, щоб переконатися, що 'блоки' працюють злагоджено.
Сподіваюся, ця стаття дала б вам чітке уявлення про модульне, інтеграційне та функціональне тестування, а також про їхні відмінності, однак у цих формах тестування є набагато більше !!
Рекомендована література
- Найкращі засоби тестування програмного забезпечення 2021 р. (Засоби автоматизації тестування якості)
- Spock для інтеграції та функціональних випробувань із селеном
- Функціональне тестування проти нефункціонального тестування
- Тестування Праймера Завантажити електронну книгу
- 10 найкращих інструментів тестування інтеграції для написання тестів інтеграції
- Основні відмінності між тестуванням чорної скриньки та тестуванням білої скриньки
- Повне керівництво з функціонального тестування з його типами та прикладами
- Функціональне тестування проти тестування продуктивності: чи слід це робити одночасно?