使用人工智能自动测试 Flutter 应用程序

移动应用程序开发的增长速度比以往任何时候都快。几乎每个企业都需要移动应用程序来保持市场竞争力。由于像 React Native 这样的跨平台移动应用程序开发框架允许公司使用单一源代码和单一编程语言构建 iOS 和 Android 应用程序,  Flutter是 Google 支持的另一个热门跨平台移动应用程序开发框架。

Flutter 是一个开源、多平台的移动 SDK,可用于使用相同的源代码构建 iOS 和 Android 应用程序。Flutter 已经存在相当长一段时间了,但自从 Google 发布第一个稳定版本以来,它受到了更多关注。使用 Flutter 构建的应用程序看起来几乎像原生应用程序,这可能是阿里巴巴、 Groupon等大公司开始使用它的原因。Flutter 应用程序可以使用各种测试层进行测试。

颤动应用程序
Flutter 应用程序使用的技术与市场上常用的技术堆栈略有不同。Flutter 使用Dart编程语言来开发跨平台应用程序,这对于开发人员来说不是通用的编程语言。然而,设置第一个 Flutter 应用程序并不那么困难。

让我们创建一个演示 Flutter 应用程序。Flutter 有  关于如何安装和设置 iOS 和 Android 应用程序环境的丰富文档,我们可以轻松地进行演示。安装 Flutter SDK 的过程非常简单:您需要下载 SDK 并将其添加到本地 PATH 中。这里有安装 Flutter SDK 的详细说明。一旦可以全局访问 Flutter,接下来就是设置iOS和Android环境。该命令将引导您完成整个设置。完成所有设置后,您可以运行以确保没有设置问题。  flutter doctor flutter doctor

Flutter 可以通过运行单个命令为示例应用程序生成样板。让我们使用以下命令创建一个 Flutter-Bitbar 应用程序。

这将在 flutter_bitbar 目录中创建一个 Flutter 应用程序。如果我们打开了 iOS 模拟器或 Android 模拟器,那么我们可以使用以下命令简单地运行 Flutter 应用程序

1
$  cd flutter_bitbar && flutter run


 您将看到 Flutter 应用程序在模拟器中运行。


此应用程序是 Flutter 团队创建的演示应用程序,每次按 + 按钮时都会有一个计数器递增。

测试 Flutter 应用程序
Flutter 提供了一些令人惊叹的测试功能来测试开发的应用程序。您可以在单元、小部件和集成级别测试 Flutter 应用程序。Widget 测试是 Flutter 提供的一项新功能,可以像单元测试一样快速地运行 UI 测试。Flutter 还具有 UI 测试,称为集成测试,可以在模拟器或真实设备上运行。有关测试的Flutter 文档详细介绍了所有类型的测试层以及置信度和速度矩阵。总结起来,Flutter 的测试主要分为三个层次。

单元测试
Flutter 单元测试涵盖了在不同条件或参数下运行良好的单个单元或方法。运行 Flutter 应用程序的单元测试需要flutter_test包。

小部件测试
这是Flutter 引入的独立测试 Flutter widget的新测试方式之一。您可以启动小部件作为测试的一部分,并像真实用户在小部件上执行的操作一样执行操作。小部件测试断言被测小部件的状态。小部件测试的运行速度与单元测试一样快,尽管它涉及用户界面。

集成测试 
在 Flutter 世界中,UI 测试被称为集成测试。Flutter 集成测试的行为与Xcode UI 测试或 Android Espresso测试非常相似,它们通过 UI 执行特定操作。Flutter集成测试在单独的进程中运行,可以在真实设备上运行,也可以在模拟器或仿真器上运行。Flutter 提供了一个单独的包Flutter Driver来驱动这些测试。

我们将在后面的博客文章中详细介绍每种测试方法,但在本教程中,我们将使用 Bitbar AI Testbot来测试 Flutter 应用程序,而无需任何测试配置。

用于测试 Flutter 应用程序的人工智能
人工智能和机器学习(AI/ML)等技术已开始出现在软件测试中。Bitbar是业内第一个推出AI测试解决方案的公司。AI Testbot可用于执行移动应用程序的快速健全性和健康检查。您可以在我们之前的文章中详细了解人工智能在现有移动测试工作中的作用。

为 AI Testbot 准备 Flutter 应用
为了为 Bitbar AI Testbot 准备 Flutter 应用程序,我们需要首先分别为 Android 和 iOS 构建 APK 或 IPA 文件。出于本教程的目的,我们将使用一个简单的命令创建一个 Android APK 文件:

1
$ flutter构建 apk


此命令将为我们刚刚创建的演示应用程序构建 APK。


该命令将在“ build/app/outputs/apk/ ”目录中生成APK文件,我们可以使用该文件在Bitbar云上进行基于AI的测试。至此,我们的 Flutter 应用程序(Android)已准备好在 Bitbar 云上执行。

Bitbar AI 测试机器人
为了使用 Bitbar AI Testbot 测试您的 Flutter 应用程序,您需要访问 Bitbar 平台,您可以在此处免费注册。一旦您访问 Bitbar 平台,您就可以启动新的 AI Testbot 运行来测试您自己的移动应用程序。您可以从 Bitbar 设备云创建新的测试运行并选择 AI Testbot 选项。请注意,AI Testbot 不需要任何测试文件,这意味着您不必编写任何测试来对应用程序执行快速健全性检查。


在接下来的步骤中,我们可以上传刚刚从 Flutter 应用程序创建的 APK,并选择运行 AI 测试的设备。


您可以进行其他测试配置,例如提供测试凭据,但在此阶段,我们的 Flutter 应用程序不需要任何测试用户凭据。让我们开始测试并等待结果。几分钟后,AI Testbot 将在仪表板中报告测试结果,其中包括 AI Testbot 执行的场景的步骤列表、屏幕截图和视频记录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/151158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【前端知识】Node——使用fs模块对文件、文件夹的操作

一、fs的三种读取文件内容的方式 const fs require(fs);// 1.同步读取 const res1 fs.readFileSync(../test.txt, {encoding: utf-8 }); console.log(res1);// 2.异步读取:回调函数 fs.readFile(../test.txt, {encoding: utf-8 }, (err, data) > {if(err){con…

二十三种设计模式全面解析-深入解析模板方法模式的奇妙世界

在软件设计的奇妙宇宙中,有一种设计模式如一颗流星般划过,留下绚丽的光芒,它就是——模板方法模式(Template Method Pattern)。这个模式不仅令代码更加灵活,而且蕴含了一种设计哲学,本文将深入研…

最大子段和(分治法+动态规划法)

求最大子段和 此类问题通常是求数列中连续子段和的最大值,经典的股票问题就是考察的这个思想及拓展。 例题: AcWing:1054. 股票买卖 Leetcode:53. 最大子数组和 分治法O(nlogn) 此类问题时分适合采用分治思想,因为所有子区间 [ s t a r t …

要事第一:如何通过6个步骤确定项目的优先级

当收到很多项目请求并且每个请求都是重中之重时,该怎么办?从最易完成的开始?还是先解决最大的问题? 实际上两种做法都不对。确定项目优先级的更好方法是评估以下内容,而不是关注项目规模或完成时长: ● 每…

【计算机网络】P2 性能指标

性能指标 性能指标1 - 速率性能指标2 - 带宽性能指标3 - 吞吐量性能指标4 - 时延性能指标5 - 时延带宽积性能指标6 - 往返时延 RTT性能指标7 - 利用率 性能指标1 - 速率 速率,即数据率,或称数据传输率或比特率,指连接在计算机网络上的主机在…

DBeaver连接本地MySQL

原文: DBeaver21.3.0安装与连接本地MySQL_dbeaver创建本地数据库_傅大胖的博客-CSDN博客 其他: mysql 的驱动下载地址: Central Repository: mysql/mysql-connector-java ​​​​​​​

二十三种设计模式全面解析-职责链模式的高级应用-日志记录系统

在软件开发领域,职责链模式(Chain of Responsibility Pattern)是一种强大而灵活的设计模式,它能够将请求的发送者和接收者解耦,提高代码的灵活性和可维护性。本文将深入探讨职责链模式的优点和缺点,并提供更…

学习Opencv(蝴蝶书/C++)代码——2.OpenCV初探

文章目录 0. 图像读取与显示1. 视频文件读取与操作1.1 示例代码1.1 OpenCV支持的视频格式2. 加入滑动条2.1 示例代码2.2 报错/Warning2.3 关于toolbar3. 简易视频播放器3.1 OpenCV检测方向键被按下3.1.1 Windows下3.1.2 linux下3.1 方向键控制视频变化4. 简单的变换5. 写视频5.…

三相异步电机动态数学模型及矢量控制仿真

文章目录 三相异步电机动态数学模型及矢量控制仿真1、异步电机三相方程2、坐标变换3、磁链3/2变换推导4、两相静止坐标系下的方程5、两相旋转坐标系下的方程6、以 ω-is-Ψr 为状态变量的状态方程7、矢量控制及 matlab 仿真 原文链接需要仿真的同学请关注【Qin的学习营地】 三相…

JMeter基础

JMeter工具基础使用 JMeter的三个重要组件线程组HTTP请求查看结果树 JMeter参数化用户定义的变量用户参数CSV数据文件设置函数四种参数化方式的不同 JMeter断言JMeter关联正则表达式XPath提取器JSON提取器 JMeter属性JMeter录制脚本JMeter直连数据库JMeter逻辑控制器JMeter定时…

百云齐鲁 | 云轴科技ZStack成功实践精选(山东)

山东省作为我国重要的工业基地和北方地区经济发展的战略支点,在“十四五”规划中将数字强省建设分为数字基础设施、数字科技、数字经济、数字政府、数字社会、数字生态六大部分,涵盖政治、经济、民生等多个方面,并将大数据、云计算、人工智能…

【错误记录】Uncaught TypeError: m.nodeName.toLowerCase is not a function

描述:在控制台输出上述错误~ 原因:在页面中,使用jQuery 开发时,命名不能和jQuery一起方法属性冲突,比如这里的nodeName,这里换一个不冲突的名字,就解决问题了。

统一身份认证平台之SSO建设

前言 上篇说道Passwordless无密码技术,也提到了数字时代密码管理的难度,其实在日常的生活中,很多用户也会因为忘记某些网站的登录密码而烦恼。为了方便记忆,很多人都在不同的站点使用相同的用户名和密码,虽然也可以减少…

uvm环境获取系统时间的方法和使用案例

背景: 有时候我们想统计一下验证环境中某个步骤总共花费了多少时间,有什么比较方便的方法呢,利用$realtime理论上也是能做到的,不过这个和timescale绑定起来了,需要手动换算成单位是秒的数,现在提供一种利用…

未来之路:互联网技术驱动汽车行业的创新浪潮

在互联网迅猛发展的今天,它的触角已延伸至各行各业,其中最引人注目的莫过于汽车行业。随着互联网技术的融合,汽车正变得越来越智能,预示着一场关于出行方式的革命。 首先,自动驾驶技术的发展正日益成熟。依托先进的传感…

josef约瑟 闭锁继电器 LB-7DG 100V 50HZ 导轨安装

LB-7型闭锁继电器 闭锁继电器LB-7导轨安装 一、用途 LB-7型闭锁继电器(以下简称继电器)用于发电厂及变电所内高压母线带电时防止和接地刀闸。 二、结构和工作原理 1、继电器按整流式原理构成,该继电器由变压器、电阻器、整流桥、滤波电容、极化继电器及指示灯组…

新人报到

文章目录 自我介绍博客平台写一些什么?为什么写博客? 自我介绍 计算机硕士研究生在读(研二),研究方向为神经网络模型量化、模型部署、深度学习和计算机视觉等。 博客平台 CSDN:_leoatliang 2022年5月12…

【C++初阶】STL详解(四)vector的模拟实现

本专栏内容为:C学习专栏,分为初阶和进阶两部分。 通过本专栏的深入学习,你可以了解并掌握C。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C 🚚代码仓库:小小unicorn的代码仓库&…

Looking up a deactivated widget‘s ancestor is unsafe

背景: showCupertinoModalPopup中使用Navigator.of(context).pushNamedAndRemoveUntil(RouteName.login, (route) > false); 报错:Looking up a deactivated widget’s ancestor is unsafe 解决方案:先将CupertinoModal关闭,再…

使用Lychee搭建个人图片存储系统并进行远程访问设置实现公网访问本地私人图床

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站,可以看做是云存储的一部分,既可…