Warning: Parameter 1 to wp_default_scripts() expected to be a reference, value given in /home/qalight/qalight.com.ua/lviv/wp-includes/plugin.php on line 601

Warning: Parameter 1 to wp_default_styles() expected to be a reference, value given in /home/qalight/qalight.com.ua/lviv/wp-includes/plugin.php on line 601
Ручне та автоматизоване тестування - QALight

База знань

Ручне та автоматизоване тестування

manualvsautomated
Розглянемо два основні підходи до виконання тестів: підхід ручного тестування і підхід автоматичного виконання (прогін) тестів. У наші дні, здається, автоматизовано практично всі, але в плані управління тестуванням не все повинно йти цим шляхом. Фактично в деяких випадках більш корисно повернутися до ручного тестування для перевірки деяких аспектів проекту. Єдина проблема для компаній полягає в розумінні, який метод в якій ситуації краще підходить.

Ручне  тестування (мануальне)

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

Проте, перед тим, як автоматизувати тестування будь-якої програми, необхідно спочатку виконати серію тестів вручну. Мануальне тестування вимагає значних зусиль, але без нього ми не зможемо переконатися в тому, чи можлива автоматизація в принципі. Один з фундаментальних принципів тестування свідчить: 100% автоматизація неможлива. Тому, ручне тестування – необхідність.

Міфи про ручне тестування:

  • “Хто завгодно може провести ручне тестування”.

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

  • “Автоматизоване тестування могутніше ручного”.

           Повна автоматизація неможлива. Необхідно використовувати також і ручне тестування.

  • “Ручне тестування – це просто”.

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

Автоматизоване тестування

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

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

Кращими з точки зору автоматизації є:

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

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

Існує кілька основних видів автоматизованого тестування:

  • автоматизація тестування коду (code-driven testing) – тестування на рівні програмних модулів, класів і бібліотек (фактично, автоматичні юніт-тести);
  • автоматизація тестування графічного інтерфейсу користувача (graphical user interface testing) – спеціальна програма (фреймворк автоматизації тестування) дозволяє генерувати дії користувача (натискання клавіш, кліки мишкою) і відслідковувати реакцію програми на ці дії – чи відповідає вона специфікації;
  • автоматизація тестування API (application programming interface) – тестування програмного інтерфейсу програми. Тестуються інтерфейси, призначені для взаємодії, наприклад, з іншими програмами або з користувачем. Тут знову ж таки, як правило, використовуються спеціальні фреймворки.

Для складання автоматизованих тестів, QA-фахівець повинен вміти програмувати. Автоматичні тести – це повноцінні програми, просто призначені для тестування.

Основними стадіями процесу автоматизації тестування є:

  1. прийняття рішення про автоматизоване тестування: оцінюються потенційні можливості і економічний ефект;
  2. вибір засобу автоматизованого тестування: попередньо визначається основний набір вимог до даного засобу;
  3. попереднє планування: визначаються і при необхідності модифікуються цілі, стратегії, а також види тестів, придатні для автоматизації, перевіряється сумісність засобів автоматизації та тестової програми, а також тестовогосередовища;
  4. планування: визначаються стандарти розробки тестових скриптів, посібників, вимоги до апаратного та програмного забезпечення, мережевого оточення, набори тестових даних. Складається попередній графік тестування, визначаються методи контролю тестових конфігурацій і оточення, а також система моніторингу дефектів системи;
  5. розробка тестових скриптів: попередньо визначаються методи тестування, умови тестування і проводиться оцінка кількості необхідних тестів;
  6. виконання тестових скриптів і документування помилок;
  7. звіти за результатами тестування.

Засобів автоматизованого тестування (комерційних і розповсюджуються вільно) досить багато. Серед них Rational Robot, Mercury Quick Test Pro, WinRunner, Computerware TestPartner, NeoLoad і ін.

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

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

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

Вручну можна протестувати практично будь-який додаток, в той час як автоматизувати варто тільки стабільні системи. Автоматизоване тестування використовується головним чином для регресії. Крім того, деякі види тестування, наприклад, ad hoc або дослідницьке (exploratory) тестування можуть бути виконані тільки вручну.

Мануальне тестування може бути повторюваним і нудним. У той же час, автоматизація може допомогти цього уникнути – за вас все зробить комп’ютер.

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

Крім того, якщо ви тестуєте речі, які вимагають людського розуміння (human touch), такі як юзабіліті (usability), то тестувальник-людина буде набагато краще. Тестувальникам, які мають мало досвіду в тестуванні, рекомендується починати саме з ручного тестування, і, як тільки вони усвідомлюють, що таке тестове покриття і оцінювання ризиків, їм слід приступати до автоматизованого тестування.

За словами Джона Овербаха, провідного senior SDEТ в Microsoft, автоматизовані інструменти тестування є сенс використовувати, тільки коли витрати на їх придбання, створення, і підтримку менші, ніж вигода, яку вони приносять.

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

 

Набагато більше інформації на курсі базовий модуль тестування