Detox:用于 react-native 应用程序的灰盒端到端测试自动化框架

本文主要是介绍Detox:用于 react-native 应用程序的灰盒端到端测试自动化框架,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先决条件

Node.js

使用Homebrew命令brew install node

(注意:安装 Node.js v12.0 或更高版本。如果您需要管理安装在单机上的节点版本,请使用nvm )

Android Studio

使用终端创建和启动模拟器:

$ANDROID\_HOME/tools/bin/avdmanager create avd -n <emulatorname> -d pixel — package “system-images;android-30;google\_apis;x86”

$ANDROID\_HOME/emulator/emulator -verbose @<emulatorname>

Xcode

使用终端创建和启动模拟器:

xcrun simctl list

open -a Simulator — args -CurrentDeviceUDID <UDID>

Detox命令行工具( detox-cli ) [可选]

应该全局安装 detox-cli,以便在 npm 脚本之外使用命令行工具。

npm install -g detox-cli

Detox设计原则


无需 Web 驱动程序 - Detox 使用 Google 开发的 EarlGrey 和 Espresso 帮助我们编写清晰的测试,并让我们能够与应用程序同步并在应用程序空闲时与之交互。

灰框——表示测试人员对被测系统的内部结构有部分了解。

对 RN 的支持 - React Native 开发人员会喜欢 Detox,因为它更快、可调试,并且可以与 Jest/Mocha 等任何测试运行程序一起使用。Detox 可以轻松集成到任何 React Native 应用程序中。最初的设置工作比任何其他工具都要少得多。

对应用程序的期望 - Detox 不依赖于在 Node.Js 上运行的测试脚本,它直接在测试的应用程序中评估期望。Detox 直接在模拟器或设备上运行的测试应用程序中本地评估预期,而不是在 node.Js 上运行的测试脚本。

Goggle 的 Espresso 和 EarlGrey

由 Google 创建的Espresso是用于 Android 自动化测试的原生框架。

  • Espresso 的 UI 元素和测试动作的自动同步。Espresso 有一个简单而轻量级的 API。
  • Espresso 不需要服务器通信,Espresso 允许将自动化的 Android UI 测试编译到单独的 APK 中,即测试套件将在设备上的应用程序旁边运行。

EarlGrey是 Google 创建的原生 iOS UI 自动化测试框架。

  • EarlGrey 自动与 UI、网络请求和各种队列同步。
  • 与 XCUITest 相比,EarlGrey 更快更有效。

Detox与Appium


灰盒测试是指测试人员对被测系统的内部结构有部分的了解。监控应用程序的状态意味着 Detox 会监控应用程序以了解它何时处于空闲状态。如果应用程序繁忙,测试将无法继续到下一行。通过监控应用程序的状态来解决不稳定测试的问题。


黑盒测试定义为一种测试技术,其中测试了应用程序的功能,而无需查看内部代码结构。缺乏对应用程序状态的监控可能会导致不稳定。

Detox架构

测试套件在应用程序外部运行,并使用 Web 套接字通过网络与应用程序通信,而 Detox 服务器充当代理,如上图所示。测试运行程序调用方法后,Detox 服务器从 iOS 的 EarlGrey 测试框架或 Android 的 Espresso 测试框架调用相应的原生测试方法。

Appium架构

它使用了公开REST API的Web服务器,如上图所示。它从客户端接收连接,聆听命令,在移动设备上执行这些命令,并以HTTP响应响应代表命令执行的结果。

正在测试的 RN 申请

如果您已经有一个要设置排毒框架的应用程序,请忽略本节。对于实践动手的人们,请随时使用此样本反应反馈应用程序。


通过运行以下命令来创建一个反应的项目:

npx react-native init <project_name>

以下面的包裹为开发依赖项:

npm install -D @react-native-community/checkbox
npm install -D react-native-radio-buttons-group

在您的app.js中添加以下代码:

在模拟器 /模拟器中运行您的应用程序:

npx react-native run-ios npx react-native run-android

在 react-native 项目中设置Detox
安装Detox节点模块作为第一步:

npm install -D detox

设置一个测试跑步者(使用Jest / Mocha):

npm install -D jest

设置测试代码支架:

npx detox init -r jest

Detox iOS 配置 (.detoxrc.json)

为iOS配置Detox仅包括更新“ .detoxrc.json”文件


在“ binaryPath ”键下,您应该提供要使用的 .app 包的路径。在密钥“构建”下,为您的项目指定XcodeBuild命令。“构建”命令将在“二进制路径”下指定的路径中输出应用程序捆绑包。

Detox安卓配置

在“ .detoxrc.json ”文件中:


在您的root buildscript中添加以下代码(即Android/build.gradle)

Note: add the 'allproject' section if it doesn’t exist  
projects {  repositories {  // ...  google()  maven {  // All of Detox' artifacts are provided via the npm module  url "$rootDir/../node\_modules/detox/Detox-android"  }  }

在应用程序的buildScript(即Android/app/build.gradle)中添加以下代码

dependencies {// ...androidTestImplementation('com.wix:detox:+')
}

并将其添加到DefaultConfig子款中

android {// ...defaultConfig {// ...testBuildType System.getProperty('testBuildType', 'debug')  // This will later be used to control the test apk build typetestInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'}
}

创建一个Detox-Test 类:Detox 需要单个 Android 原生测试的虚拟实现。

  1. 将一个新文件添加到您的项目中,在此路径和名称下 => android/app/src/androidTest/java/com/[your.package]/DetoxTest.java。仔细检查路径是否正确!
  2. 将RN 的 detox 示例应用程序中的等效文件的内容复制并粘贴到其中。不要忘记将包名更改为您项目的包名!

编写Detox测试脚本

  • 定位器策略:

为了消除使用各种 Inspector 在 Android/iOS 中定位元素所涉及的困难,建议定义和使用testID(Android/iOS 通用)。

  • 添加测试用例:

我们现在将自动化步骤来填写和提交反馈。

此测试脚本将在 android 和 iOS 上顺利运行,无需任何特定于平台的更改。

  • 在 Emulator/Simulator 中运行测试:

在下面的视频中,我再次解释了.detoxrc.json 文件中的配置。使用以下命令在 Android 和 iOS 中构建应用程序包并运行测试脚本。

detox build -c android
detox test -c android

要生成测试工件,请运行以下命令。

detox test --record-videos all --take-screenshots all -c ios
  • 探索 Detox 提供的 API,优点和问题:

这是一个可选部分,解释了有关使用 detox 提供的各种 API 和文档编写有效测试脚本的附加信息。

这篇关于Detox:用于 react-native 应用程序的灰盒端到端测试自动化框架的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/199198

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

native和static native区别

本文基于Hello JNI  如有疑惑,请看之前几篇文章。 native 与 static native java中 public native String helloJni();public native static String helloJniStatic();1212 JNI中 JNIEXPORT jstring JNICALL Java_com_test_g

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地

如何使用Ansible实现CI/CD流水线的自动化

如何使用Ansible实现CI/CD流水线的自动化 持续集成(CI)和持续交付(CD)是现代软件开发过程中的核心实践,它们帮助团队更快地交付高质量的软件。Ansible,作为一个强大的自动化工具,可以在CI/CD流水线中发挥关键作用。本文将详细介绍如何使用Ansible实现CI/CD流水线的自动化,包括设计流水线的结构、配置管理、自动化测试、部署、以及集成Ansible与CI/CD工具(如Jen