Англійський словник для Detox Mobile Testing
Вивчіть англійські терміни і фрази, які використовують розробники мобільних додатків під час написання, запуску і обговорення повних тестів за допомогою фрейму тестування Detox.
Detox — це сірий блок end-to-end тестування фреймворку для React Native застосунків. Це дозволяє розробникам писати автоматизовані тести, які запускаються безпосередньо на симуляторі або пристрої, взаємодіючи з інтерфейсом так само, як і справжній користувач. Якщо ви працюєте з Detox і співпрацюєте англійською мовою, правильний словник допоможе вам написати чіткіші плани тестування, обговорити невдачі тестування і підтримати практику тестування у вашій команді.
Ключовий словник
** Тестування сірих скриньок ** Тестування сірих скриньок відноситься до підходу до тестування, який має певний огляд внутрішньої роботи програми під час тестування, не маючи повного доступу до вихідного коду. Detox описується як grey-box, тому що він може контролювати внутрішній стан програми (наприклад, чи не зайнятий потік JavaScript) для надійної синхронізації тестових взаємодій.
- Приклад: “Подхід Detox з сірою коробкою означає, що він знає, коли програма готова до наступної взаємодії, що робить тести набагато більш надійними, ніж підходи, засновані на часі.” *
Синхронізація
У Detox, синхронізація відноситься до здатності фрейму чекати, поки програма досягне стану бездіяльності перед виконанням наступної тестової дії. Це виключає необхідність ручних викликів sleep і робить тести більш стабільними.
- Приклад: « Detox обробляє синхронізацію автоматично — перед переходом до наступного запитання він чекає на завершення мережевих запитів і анімації. » *
- Схоже
Відповідник — це запит, який визначає елемент інтерфейсу користувача у тесті Detox. Елементи можна знайти за їхнім ідентифікатором тестування, міткою доступності, текстовим вмістом або іншими атрибутами.
Приклад: “Ми використовуємо атрибути
testIDна наших компонентах, щоб зробити їх легкими для цільового використання в Detox matchers.”
Акція Дія — це взаємодія з елементом інтерфейсу у тесті Detox, наприклад, натискання, переміщення пальцем, введення тексту або прокрутка. Дії застосовуються до елементів, знайдених за допомогою збігів.
- Приклад: « Після знаходження кнопки реєстрації за допомогою відповідника, ми застосовуємо дію натискання, щоб імітувати натискання користувачем цієї кнопки. » *
Ожидание Очікування — це твердження у тесті Detox, яке перевіряє, чи знаходиться інтерфейс користувача у очікуваному стані після виконання дії.
- Приклад: « Після надсилання форми, ми очікуємо, що на екрані буде показано повідомлення про успіх ». *
Поширені сценарії, де використовується ця мова
На встрече по планированию тестов: «Ми додаємо тести Detox для критичних подорожей користувачів — входу, входу і потоку покупок. Я почну з щасливого шляху для кожної подорожі, а потім ми додамо краї випадків у другому проході»
** При обговоренні тесту на лусочки: **
“Тест на детоксикацію checkout-flow неодноразово провалювався в ЦИ. Підозрюю, що це проблема синхронізації — тест взаємодіє з кнопкою оплати до того, як стан завантаження буде очищено. Я додам явне очікування на те, що елемент буде ввімкнено»
В обзоре кода:
“Я помітив, що цей тест використовує sleep(2000) замість того, щоб дозволити Detox управляти синхронізацією. Ми повинні вилучити сон — Detox буде чекати автоматично, поки запит мережі завершиться»
** Під час налаштування Detox у новому проекті: ** «Достатньо правильно налаштувати Detox, щоб зробити певні зусилля — вам потрібно налаштувати налаштування тестового запуску, збудувати певний бінарний файл для тестування і налаштувати симулятор. Я можу поєднатися з вами, щоб отримати початкову настройку зроблено.”
Використовується для тестування криптосистем
- «Detox запускає тести end-to-end на реальному симуляторі, взаємодіючи з інтерфейсом, як це зробив би користувач»
- «Ми написали Detox тести для всіх наших критичних потоків користувачів — входу, входу і виходу»
- «Тест є неоднозначним — він провалюється приблизно один раз з десяти в CI. Я думаю, це проблема синхронізації»
- «Ми використовуємо
testIDреквізити на інтерактивних елементах, щоб зробити їх надійними в тестах» - «Detox обробляє синхронізацію автоматично, тому нам не потрібні ручні затримки в наших тестах»
- «Порівнювач знаходить елемент за його
testID, а потім ми застосовуємо до нього дію натискання» - «Після дії, ми стверджуємо, що екран успіху видимий за допомогою очікування»
- «Detox тести повільні в порівнянні з тестами модулів — ми запускаємо їх тільки на запити pull до головної гілки.»
- «Ми використовуємо Detox в поєднанні з Maestro для деяких потоків — Detox для JavaScript-важких взаємодій, Maestro для простіших потоків інтерфейсу користувача»
- «The CI job runs the Detox tests on an iOS 17 simulator and an Android 14 emulator.» (англійською)
Запис описів тестів
Хороші описи тестів Detox допомагають команді зрозуміти, що тестується і чому невдача має значення. Використовуйте формат « даний/ коли/ тоді » або опис природньою мовою, який чітко визначає сценарій.
Слабкий: it('should work correctly')
10000000000000000♠0,0000000000000000000♠0,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Назва тесту повинна бути достатньо конкретною, щоб, якщо запуск CI зазнає невдачі, людина, яка переглядає звіт про помилку, негайно зрозуміла, що не працює і на яку поведінку користувача це впливає.
Під час написання коментаря, у якому пояснюється складне налаштування тесту, будьте чіткими: « Нам потрібно перейти до вікна параметрів перед цим тестом, оскільки функція, яку ми тестуємо, доступна лише з цього вікна. Блок beforeEach обробляє цю навігацію»
Практичні рекомендації
Пройдіться критичним шляхом користувача у мобільній програмі, якою ви регулярно користуєтесь, наприклад, створіть обліковий запис, надішліть повідомлення або зробіть покупку. Написати план тестування Detox англійською мовою (не код, а структурований опис простою мовою), який міститиме: мету тестування, попередні умови, покрокові дії користувача, які слід імітувати, твердження, які слід зробити після кожної дії, і всі відомі краї випадків для тестування. Такий тип документа планування тестів є цінним як для написання тестів, так і для перегляду їх з нетехнічними зацікавленими сторонами.
Навигація по лінії — практичний підхід
Погляньмо правді в очі, навіть з сильним розумінням концепцій Detox, таких як інструменти і взаємодія пристроїв, ефективне спілкування в команді розробників є ключовим. Часто нерозуміння виникають не з технічних труднощів, а з тонких відмінностей у тому, як ми виражаємо себе, особливо при обговоренні результатів тестів або запитів на зміни. Не-рідні носії англійської мови можуть знайти швидкий обмін зворотнім зв’язком особливо складним. Це більше, ніж просто точний опис того, що * сталося *; це про оформлення вашого запитання про ясність і продемонструвати активний підхід до вирішення проблем.
Розглянемо цей сценарій: Сара, молодший тестувальник мобільних додатків, помічає нерівний тест під час автоматичного запуску. Замість того, щоб просто сказати: «Цей тест не витримує», вона могла б надати багатший контекст. Ефективнішим підходом було б щось на зразок: «Я спостерігав періодичні невдачі в login_flow тесті Детокс. Здається, що він періодично перевищує час очікування — можливо, пов’ язано з затримкою мережі або неоднозначним станом пристрою. Я збираюся далі досліджувати, запускаючи його на декількох пристроях і зосереджуючись на початкових кроках налаштування. “Це демонструє, що Сара розуміє * чому * може статися невдача, показує ініціативу (дослідження) і чітко сформулює проблему. Аналогічно, коли ви отримуєте зворотній зв’язок від рецензента, замість того, щоб реагувати оборонно, спробуйте сформулювати свою відповідь з власником: “Дякую за вказівку на непослідовні дані в результатах тесту. Я розгляну інтеграцію джерела даних і забезпечу належну синхронізацію»
Інша поширена ситуація під час перегляду коду. Розробник може залишити коментар на зразок « Потрібно більш надійне оброблення помилок ». Краще було б сказати: « Чи не могли б ми додати блоки try- catch навколо мережевих запитів, щоб елегантно обробляти потенційні помилки? Це покращить стабільність тестування і надає більш чітку діагностичну інформацію, якщо щось не так». Друга фраза конструктивна, конкретна і пропонує чіткий шлях вперед. Пам’ятайте, що мета полягає не тільки в тому, щоб виправити негайну проблему, але і побудувати стійкість до ваших тестів - ключовий принцип мобільного тестування.
Нарешті, під час написання описів PR уникайте нечітких тверджень на зразок « Виправлено вади ». Замість цього будьте точні: « Впроваджено поліпшену логіку повторних спроб для викликів API у потоці payment_processing, щоб вирішити проблему переривчастих перевиконань часу очікування, спостережених під час тестування навантаження ». Це надає контекст і дозволяє рецензентам швидко зрозуміти обсяг змін.
Ось приклад використання Detox для діагностики тесту на лущення:
detox per-test run --preset=login_flow --tag=flaky
Ця команда спеціально призначена для набору login_flow, фільтрує тести з позначкою « flaky » і виконує їх окремо. Аналіз виводу (зазвичай, записаного у журнал консолі) дасть вам цінну інформацію щодо часу аварій, можливих станів пристроїв або станів мережі, які спричинили проблему. Перегляд цих журналів разом з налаштуваннями тестування надає важливі дані для розв’ язання проблем.