Detox — це сірий блок end-to-end тестування фреймворку для React Native застосунків. Це дозволяє розробникам писати автоматизовані тести, які запускаються безпосередньо на симуляторі або пристрої, взаємодіючи з інтерфейсом так само, як і справжній користувач. Якщо ви працюєте з Detox і співпрацюєте англійською мовою, правильний словник допоможе вам написати чіткіші плани тестування, обговорити невдачі тестування і підтримати практику тестування у вашій команді.
Ключовий словник
Grey-box testing Тестування сірих скриньок відноситься до підходу до тестування, який має певний огляд внутрішньої роботи програми під час тестування, не маючи повного доступу до вихідного коду. 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 » і виконує їх окремо. Аналіз виводу (зазвичай, записаного у журнал консолі) дасть вам цінну інформацію щодо часу аварій, можливих станів пристроїв або станів мережі, які спричинили проблему. Перегляд цих журналів разом з налаштуваннями тестування надає важливі дані для розв’ язання проблем.
Продовжуй практику
Закріпи прочитане вправами
П’ятихвилинні вправи з миттєвим фідбеком — на такій самій реальній IT-лексиці.
Поширені запитання
Про що ця стаття "Англійський словник для Detox Mobile Testing"?
Вивчіть англійські терміни і фрази, які використовують розробники мобільних додатків під час написання, запуску і обговорення повних тестів за допомогою фрейму тестування Detox.
Чи безкоштовна ця стаття?
Так. Усі статті на CoderSlingo, включно з цією, доступні безкоштовно без реєстрації.
Скільки часу займає читання "Англійський словник для Detox Mobile Testing"?
Приблизно 7 min.
Коли опубліковано цю статтю?
Цю статтю опубліковано у 2026 році.