Підручник з тестування додатків для Android з рамкою автоматизації

Зміст:

Anonim

Чому тестування Android?

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

Не має значення, скільки часу ви витрачаєте на розробку та впровадження, помилки неминучі, і з’являться помилки.

У цьому підручнику ви дізнаєтесь-

  • Чому тестування Android?
  • Стратегія тестування Android
    • Блокові тести
    • Інтеграційні тести
    • Експлуатаційні тести
    • Системні тести
  • Автоматизоване тестування Android
    • Фреймворк для тестування Android
    • Робоелектрична система тестування
  • Міфи тестування Android
  • Кращі практики тестування Android

Стратегія тестування Android

Правильна стратегія тестування Android повинна включати наступне

  1. Юніт-тест
  2. Інтеграційний тест
  3. Експлуатаційний тест
  4. Тест системи

Блокові тести

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

Платформа Android поставляється з попередньо інтегрованою структурою Junit 3.0. Це фреймворк з відкритим кодом для автоматизації модульного тестування. Android Testing Framework - це потужний інструмент для розробника для написання ефективної програми модульного тестування.

Інтеграція фреймворку Android та JUnit

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

Поширені дії користувальницького інтерфейсу щодо програми

Поширеним способом перевірки ефективності інтерфейсу користувача на пристрої є Android Instrumentation. Але це має проблеми з продуктивністю. Одним з найкращих інструментів для проведення тестування інтерфейсу користувача на Android є Robotium.

Інтеграційні тести

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

Типи інтеграційного тесту на Android

Для проведення інтеграційного тесту для Android використовується багато платформ тестування, таких як Troyd, Robolectric, Robotium.

Експлуатаційні тести

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

Системні тести

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

В Android системне тестування зазвичай включає

  • Тести графічного інтерфейсу
  • Тести на зручність використання
  • Тести продуктивності
  • Стрес-тести

У наведеному вище списку Тестуванню продуктивності приділено більше уваги. Ви можете використовувати такі інструменти, як Traceview, для проведення тесту продуктивності на Android. Цей інструмент може допомогти вам налагодити вашу програму та профілізувати її ефективність.

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

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

Переваги автоматизованого тестування Android

  • Скоротіть час на виконання тестів
  • Збільште продуктивність процесу розвитку
  • Раннє виявлення помилок, економія витрат на обслуговування програмного забезпечення
  • Швидко знаходимо та виправляємо помилки при реалізації
  • Забезпечити якість програмного забезпечення

Ми вивчимо наступні 2 основи

  • Фреймворк для тестування Android
  • Структура роботизованого тестування

Фреймворк для тестування Android

Однією із стандартних платформ тестування для програми Android є платформа тестування Android . Це потужна та проста у використанні система тестування, яка добре інтегрована з інструментами Android SDK.

Архітектура тестування Android

  1. Пакет програм - це ваша цільова програма, яку потрібно протестувати
  2. InstrumentationTestRunner - це програма для запуску тестів, яка виконує тест на цільовій програмі. Це включає:

2a) Тестові інструменти: інструменти SDK для побудови тесту. Вони інтегровані в Eclipse IDE або працюють як командний рядок.

2b) MonkeyRunner: інструмент, який надає API для написання програми, яка керує пристроєм Android або емулятором поза кодом Android.

  1. Тестовий пакет організований у тестові проекти. Цей пакет відповідає правилам іменування. Якщо тестова програма має ім'я пакета "com.mydomain.myapp", тоді тестовий пакет повинен бути "com.mydomain.myapp.test". Тестовий пакет включає 2 об'єкти, як показано нижче:

3a) Класи тестових кейсів: включають методи тестування, що виконуються в цільовій програмі.

3b) Фіктивні об’єкти: включає фіктивні дані, які будуть використовуватися як вхідні дані для тестування.

Класи тестових кейсів для Android

Схема класу AndroidTestCase

  1. TestCase включає методи JUnit для запуску тесту JUnit
  2. TestSuite використовується для запуску набору тестових кейсів
  3. InstrumentationTestSuite - це TestSuite, який вводить Instrumentation у InstrumentationTestCase перед їх запуском.
  4. InstrumentationTestRunner - це тестовий кейс, який виконує тестовий кейс у цільовій програмі.
  5. AndroidTestCase розширює JUnit TestCase. Він містить методи доступу до таких ресурсів, як контекст активності.
  6. ApplicationTestCase перевіряє класи програми в контрольованому середовищі.
  7. InstrumentationTestCase перевіряє певну особливість або поведінку цільової програми, наприклад, перевіряє вихідний інтерфейс програми.
  8. ActivityTestCase - базовий клас, який підтримує тестування діяльності додатків.
  9. ProviderTestCase - це клас для тестування одного ContentProvider.
  10. ServiceTestCase використовується для тестування класів обслуговування в середовищі тестування. Він також підтримує життєвий цикл обслуговування.
  11. SingeLauchActivityTestCase використовується для тестування окремих дій за допомогою InstrumentationTestCase.
  12. ActivityUnitTestCase використовується для перевірки одиничної ізольованої активності.
  13. ActivityInstrumentationTestCase2 розширює клас JUnit TestCase. Він пов’язує вас із цільовим додатком з контрольно-вимірювальними приладами. За допомогою цього класу ви можете отримати доступ до компонента графічного інтерфейсу програми та надіслати подію інтерфейсу користувача (натискання клавіші або подія дотику) до інтерфейсу користувача.

Нижче наведено приклад ActivityInstrumentationTestCase. Він перевіряє роботу інтерфейсу користувача програми Калькулятор, перевіряє правильність виходів інтерфейсу.

Приклад тестування ActivityInstrumentationTestCase2

Робоелектрична система тестування

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

Robolectric framework дозволяє запускати тести Android безпосередньо на JVM без потреби в пристрої чи емуляторі.

Попередні можливості Robolectric

Заняття з роботоелектричних тестів

Робота Роболектрика

  • Як показано вище, Robolectric може виконувати такі дії:
  • Зареєструйтесь і створіть клас Тінь
  • Перехопіть завантаження класу Android
  • Використовує javaassist для заміни тіл методів класу Android
  • Прив’язати об’єкт Тінь до класу Android
  • Це дозволяє тестованому коду виконуватись без середовища Android.

Інші рамки тестування

Окрім тестових фреймворків, які були згадані вище, існує безліч інших тестових фреймворків, таких як:

  • Android Junit Report, спеціальна програма для тестування приладів для Android, яка створює звіти XML для інтеграції з іншими інструментами.
  • Expresso
  • Аппіум

Міфи тестування Android

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

Міф №1: Усі пристрої Android однакові ... достатньо тесту на емуляторах

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

Збій програми під час виконання на реальному пристрої

Емуляторів недостатньо для мобільного тестування. Ви повинні протестувати свій додаток на реальних пристроях.

Міф No2: Тестування на деяких загальноприйнятих пристроях досить

  • На різних пристроях ваша програма виглядає по-різному, оскільки різні пристрої мають різне обладнання, розміри екрану, пам’ять тощо. Ви повинні протестувати свою програму на різних пристроях, версіях ОС, мережах операторів та місцях розташування.

Міф №3: Достатньо дослідницького тестування безпосередньо перед запуском

  • Як правило, під час тестування ми розробляємо тестові кейси, а потім виконуємо їх. Але під час дослідницьких випробувань, проектування та виконання випробувань все буде виконуватися разом.
  • При дослідницькому тестуванні немає плану і підготовки, тоді випробувач проводить тести, які хоче зробити. Деякі функції перевірятимуться неодноразово, тоді як деякі функції не перевірятимуться взагалі.

Міф No4: Якщо в програмі є деякі помилки, користувачі зрозуміють

  • Якщо програма не працює та має помилки, користувачі видаляють її
  • Проблеми з якістю - це перша причина поганого розгляду в Google Play. Це впливає на вашу репутацію, і ви втрачаєте довіру клієнта.

Тому важливо мати відповідну стратегію тестування Android

Кращі практики тестування Android

  • Розробники додатків повинні створювати тестові кейси одночасно, коли вони пишуть код
  • Усі тестові приклади слід зберігати в контролі версій разом із вихідним кодом
  • Використовуйте постійну інтеграцію та запускайте тести щоразу, коли код змінюється
  • Уникайте використання емуляторів та корінних пристроїв