当前位置: 首页 > news >正文

使用人工智能自动测试 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 执行的场景的步骤列表、屏幕截图和视频记录。

相关文章:

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

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

四、程序员指南:数据平面开发套件

REORDER LIBRARY 重排序库提供了根据其序列号对mbuf进行重排序的机制。 16.1 操作 重排序库本质上是一个对mbuf进行重新排序的缓冲区。用户将乱序的mbuf插入重排序缓冲区,并从中提取顺序正确的mbuf。 在任何给定时刻,重排序缓冲区包含其序列号位于序列…...

Go 之 captcha 生成图像验证码

目前 chptcha 好像只可以生成纯数字的图像验证码,不过对于普通简单应用来说也足够了。captcha默认将store封装到内部,未提供对外操作的接口,因此使用自己显式生成的store,可以通过store自定义要生成的验证码。 package mainimpor…...

【Java从入门到大牛】多线程

🔥 本文由 程序喵正在路上 原创,CSDN首发! 💖 系列专栏:Java从入门到大牛 🌠 首发时间:2023年11月18日 🦋 欢迎关注🖱点赞👍收藏🌟留言&#x1f4…...

UE5 C++报错:is not currently enabled for Live Coding

解决办法: 再次打开项目,以此法打开:...

mysql服务器数据同步

在Linux和Windows之间实现MySQL服务器数据的同步。下面是一些常见的方法和工具: 复制(Replication):MySQL复制是一种常见的数据同步技术,可用于将一个MySQL服务器的数据复制到其他服务器。您可以设置主服务器&#xff…...

Docker Golang 开发环境搭建指南

Docker Golang 开发环境搭建指南 概述 在 Golang 开发中,搭建合适的开发环境是非常重要的。然而,由于 Golang 的跨平台特性,不同操作系统之间的配置差异可能会导致环境搭建过程变得复杂。为了简化这个过程并保持开发环境的一致性&#xff0…...

MFC保存窗口客户区为图片

首先的窗口输出一些内容; 菜单单击函数代码; void CgetmypicView::OnTestGetmypic() {// TODO: 在此添加命令处理程序代码HWND hwnd this->GetSafeHwnd();HDC hDC ::GetWindowDC(hwnd);//获取DC RECT rect;::GetClientRect(hwnd, &rect)…...

JAVA安全之Shrio550-721漏洞原理及复现

前言 关于shrio漏洞,网上有很多博文讲解,这些博文对漏洞的解释似乎有一套约定俗成的说辞,让人云里来云里去,都没有对漏洞产生的原因深入地去探究..... 本文从现象到本质,旨在解释清楚Shrio漏洞是怎么回事&#xff01…...

有Mac或无Mac电脑通用的获取安卓公钥的方案

从2023年9月开始,所有上架应用市场的app都需要进行APP备案。 其中后端服务器在阿里云的可以在阿里云备案,后端服务器在腾讯云的可以在腾讯云备案。但无论你是在什么云厂商里做备案,无一例外的是,无论是上架安卓应用还是上架IOS应…...

电池故障估计:Realistic fault detection of li-ion battery via dynamical deep learning

昇科能源、清华大学欧阳明高院士团队等的最新研究成果《动态深度学习实现锂离子电池异常检测》,用已经处理的整车充电段数据,分析车辆当前或近期是否存在故障。 思想步骤: 用正常电池的充电片段数据构造训练集,用如下的方式构造…...

微服务和Spring Cloud Alibaba介绍

1、微服务介绍 1.1 系统架构演变 随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化。从互联网早起到现在,系统架构大体经历了下面几个过程: 单体应用架构 —> 垂直应用架构 —> 分布 式架构—>…...

【js】 lodash命名转换和封装

▒ 目录 ▒ 🛫 导读需求开发环境 1️⃣ lodash转换函数h3与underscore比较 2️⃣ 实战:对象属性名转换函数封装单元测试 🛬 文章小结📖 参考资料 🛫 导读 需求 爬虫中经常出现各种类型的命名,往往一个对象…...

RK3568驱动指南|第七篇 设备树-第67章 of操作函数实验:获取属性

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…...

vue3安装vue-router

环境 node 18.14.2 yarn 1.22.19 windows 11 vite快速创建vue项目 参考 安装vue-touter 官网 yarn add vue-router4src下新建router文件夹,该文件夹下新建index.ts // router/index.ts 文件 import { createRouter, createWebHashHistory, RouterOptions, Ro…...

〖大前端 - 基础入门三大核心之JS篇㊱〗- JavaScript 的DOM节点操作

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…...

【计算机基础】优雅的PPT就应该这样设计

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...

Vatee万腾的科技征程:Vatee数字化创新的前沿探讨

在Vatee万腾的科技征程中,我们目睹了一场数字化创新的引领之旅,探讨了Vatee在科技前沿的独到见解。Vatee万腾不仅仅是一家科技公司,更是一支前行不辍的冒险队伍,通过不断突破自我,探索未知领域,引领着数字化…...

【PB续命05】WinHttp.WinHttpRequest的介绍与使用

0 WinHttp.WinHttpRequest简介 winhttp.winhttprequest是Windows操作系统中的一个API函数,用于创建和发送HTTP请求。它可以用于从Web服务器获取数据,或将数据发送到Web服务器。该函数提供了许多选项,例如设置请求头、设置代理服务器、设置超…...

【Linux】进程间是这样通信的--管道篇

TOC 目录 进程间通信的介绍 进程间通信的概念 进程间通信的目的 进程间通信的本质 进程间通信的分类 管道 什么是管道 匿名管道 pipe函数 匿名管道使用步骤 管道读写规则 管道的特点 1、管道内部自带同步与互斥机制 2、管道的生命周期随进程 3、管道提供的是流式…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

测试markdown--肇兴

day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...