Jenkins集成appium自动化测试(Windows篇)

news2025/1/11 6:59:13

目录:导读

一,引入问题

二,搭建思路

三,具体步骤

1,搭建Jenkins

2,新建节点

3,配置节点

4,启动代理

5,新建任务

6,配置任务

7,调试

四,总结


一,引入问题

  • 自动化测试脚本绝大部分用于回归测试,这就需要制定执行策略,如每天、代码更新后、项目上线前定时执行,才能达到最好的效果,这时就需要进行Jenkins集成。

  • 不像web UI自动化测试可以使用无痕浏览器做到无界面,APP UI自动化需要用到真机或模拟器,在完全的linux环境下做Jenkins集成显得不太可能。

  • 可以在自己的工作电脑上搭建Jenkins,并运行APP UI自动化测试项目,但工作电脑关闭后就不能定时运行自动化项目,且工作的电脑还要用来做别的工作,这样显得极其不方便。

基于以上等原因,可以考虑向公司申请一台专门用于做自动化测试的本地电脑,搭建好本地电脑的测试环境,连接真机或模拟器;在公司的测试服务器上部署Jenkins,新建节点连接本地测试电脑,这样就可以利用Jenkins设置策略定时在本地测试电脑上构建测试项目。

注意:之所以不直接在专门用于测试的电脑上直接搭建Jenkins,是因为可能除APP自动化项目外,还有web自动化、接口自动化或者其他集成项目,Jenkins搭建在远程服务器上方便对所有需要Jenkins构建的项目进行管理。

本篇博客涉及的环境:远程Jenkins版本2.176.3,本地电脑 Windows 10

二,搭建思路

1,搭建Jenkins

2,新建节点

3,配置节点

4,节点启动代理

5,新建任务

6,配置任务(获取最新代码、关联从节点等)

7,调试构建

三,具体步骤

1,搭建Jenkins

不多赘述,网上教程很多,大家自行查阅。也有很多公司的测试服务器已经搭建好Jenkins,直接使用即可。注意,本博客示例的Jenkins版本为2.176.3

2,新建节点

登录Jenkins --> Manage Jenkins --> Manage Nodes --> 新建节点,具体步骤如下:

点击确定后,会跳转至节点配置页面。

3,配置节点

3.1,按下图中的说明进行配置,未进行说明的默认即可,再点击【保存】按钮。

注意

  • 远程工作目录,理论上可以填写本地测试电脑里的任意目录路径,但最好专门新建一个用于Jenkins工作的目录。

  • 我这里的Jenkins版本为2.176.3,启动方法中无 Launch agents Java Web Start 选项,网上查找资料后进入Manage Jenkins --> Configure Global Security 进行如下设置

但启动方法中仍然没有展示"Launch agents Java Web Start"选项。但其实这里选择"Launch agent by connecting it to the master"也是可行的。

3.2,点击保存后,跳转至Nodes页面,出现如下节点

4,启动代理

4.1,Nodes页面点击节点,跳转至如下页面:

4.2,这里有两种方法启动节点,我选择第一种,点击【Launch】,提示下载slave-agent.jnlp文件,将该文件下载保存至方便后面查找的目录里。

4.3,双击slave-agent.jnlp文件后点击运行,会出现如下图标

这个时候,在Jenkins主页我们会看到节点已经连接成功。

5,新建任务

新建一个自由风格的任务,步骤如下:

6,配置任务

对上一步新建的任务进行配置,步骤如下。

6.1,任务关联节点

标签表达式里可以填写配置时填入的标签名,也可以直接填写节点名称。

6.2,源码管理

6.2.1,因为我的代码通过git管理,所以选择Git选项

6.2.2,Repository URL,填入git中该测试项目的地址

6.2.3,Credentials,填入git账号跟密码。填写方法,点击【添加】按钮进入添加页面,添加git账号密码后,再选中即可,具体如下:

6.2.4,Branch Specifier (blank for 'any'),选择项目分支,可填写该项目需要运行的分支,没有其他分支的话,默认master即可

6.3,构建触发器(非必选)

可根据自己的需求来选择不同的项进行配置,也可不配置。如果需要定时构建运行项目,则勾选Build periodically,填入30 23 * * *,则表示每天晚上11点半开始运行项目,如下所示:

6.4,构建

点击【增加构建步骤】按钮,选择"Execute Windows batch command"

输入构建命令,即执行自动化测试项目的命令

注意,第一次配置构建命令时,可以随意配置,如:python run.py,保存配置后先进行第一次构建,第一次构建完成后,会在节点配置的远程工作目录里生成workspace文件夹,接下来会对第一次构建步骤具体介绍。

6.5,进行第一次构建

按照上面的步骤进行配置后,先点击【应用】再点击【保存】

保存成功后,跳转至test任务页面,点击【Build Now】,进行第一次构建

不用管第一次构建是否成功,构建完成后会在节点配置的远程工作目录里生成workspace、remoting两个文件夹,如下图

并在workspace中会自动生成两个以任务名命名的文件夹,如下图的test、test@temp

同时会从第6.2步中配置好的git仓库中下载项目代码保存在test文件夹中,如下:

至此,第一次构建的目的达到了。但是我们需要根据项目中run文件的具体路径,再次配置任务里的构建命令,后续才能正确地构建运行测试项目,这里配置如下,再点击应用、保存。

注意,执行python命令需要提前在本地测试电脑里配置好python。

7,调试

按照第6步配置任务完成后,先调试是否能跑通,调试成功后才可进行正式构建执行测试项目,进入任务主页面,点击【Build Now】按钮。

在构建历史中,还可选择点击某次构建进入控制台查看构建日志,如下:

至此,就可以通过远程Jenkins在本地测试电脑上集成构建测试任务了。

四,总结

注意

  • 配置节点时填写的远程工作目录,是本地测试电脑上的目录路径,即该Jenkins节点的工作目录。

  • 配置任务的源码管理时,根据实际需求,如果是git仓库就选择Git,如果是SVN就选择subversion

  • 进行第一次构建之前,由于还没有在远程工作目录里生成workspace并拉取代码,配置的构建命令并不需要真实的执行命令,如:python run.py

  • 第一次构建通常情况下会失败,但会生成remoting、workspace,并从远程代码仓库拉取代码存放在workspace中以节点名称命名的文件夹里

  • 第一次构建完成后,需要对任务重新配置正确的构建命令,如:python E:\autoTest\workspace\test\run.py

完整版文档下载方式:

这些资料,对于从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享。

在评论区和我互动交流或者私❤我【软件测试学习】领取即可,拿走不谢。

-------------------------------------------------

写在最后

这篇贴子到这里就结束了,最后,希望看这篇帖子的朋友能够有所收获。

都到这了记得三连支持一下吧。

 

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

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

相关文章

谁说菜鸟不会数据分析 | 学习笔记

一.前言 数据分析是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程 数据分析的目的是把隐藏在一大批看似杂乱无章的数据背后的信息集中和提炼出来,总结出所研究对象的内在规律。在实际工作中,数据分析能够帮助管理者进行判断和决策&…

WebDAV之葫芦儿•派盘+麻雀记

麻雀记 支持WebDAV方式连接葫芦儿派盘。 想要一款非常小巧的笔记软件?占用设备内存小,功能非常丰富。比如写便签、清单、图片、倒数日、名片、纪念日、心情、绘图、地址、等等,并且你还可以使用看板、标签以及四象限等功能来帮助你更好地将所写内容归纳整理,快来体验下麻…

不删除分区的情况下怎么合并分区?如何合并磁盘分区

不删除分区的情况下怎么合并分区??本文将向您展示使用 Diskpart 命令和分区管理工具合并磁盘分区的可靠解决方案。请继续阅读,以获得合并磁盘分区的相关信息。 一、合并磁盘分区 也许你的磁盘上,有一个空间很大的分区&#xff0c…

ctfshow 大吉大利杯

veryphp 看着思路很简单&#xff0c;就是利用post传参和extract函数来给需要的参数赋值&#xff0c;再利用call_user_func调用qwq中的oao静态方法。 感觉最麻烦的就是 preg_match(/^\-[a-e][^a-zA-Z0-8]<b>(.*)>{4}\D*?(abc.*?)p(hp)*\R(s|r).$/, $shaw_root)这个…

JavaScript进阶教程——包装对象、类型转换、作用域、闭包与模块化

文章目录包装对象类型转换显示转换隐式转换作用域let与const的用法&#xff1a;作用域链闭包与模块化封装包装对象 为什么原始类型可以使用方法和属性&#xff1a; toString()split()length属性 包装对象&#xff1a; new String()new Number()new Boolean() let num 123;…

Linux内存管理之UMA模型和NUMA模型

共享存储型多处理机有两种模型 均匀存储器存取&#xff08;Uniform-Memory-Access&#xff0c;简称UMA&#xff09;模型 (一致存储器访问结构) 非均匀存储器存取&#xff08;Nonuniform-Memory-Access&#xff0c;简称NUMA&#xff09;模型 (非一致存…

大学生阅读小说网页设计模板代码 柏书旧书网带登录表单 注册表单小说书籍网页作业成品 学校书籍网页制作模板 学生简单书籍阅读网站设计成品

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

python Graphillion简介

Graphillion是一个用于高效图集操作的Python库。与NetworkX等现有的图形工具不同&#xff0c;Graphillion被设计为一次只处理一个图形&#xff0c;而Graphillion则非常有效地处理一个大型的图形集。令人惊讶的是&#xff0c;使用Graphillion可以在一台计算机上处理数万亿的图形…

SQL注入漏洞 | sleep型

文章目录前言MySQL sleep型测试数据库名长度数据库名表名列名字段值总脚本文件前言 SQL注入漏洞 | bool型 if(SQL语句,sleep(),null) if()、sleep()的使用 select * from table where id1 and sleep(2) //执行查询id1&#xff0c;同时sleep(2)。浏览器显示数据库返回的结果…

MyBatis Mapper四步走

1. 定义承载结果的Java类充当领域对象&#xff08;不使用MyBatis的内置map&#xff09;。 2.开发Mapper组件&#xff0c;也就是接口XML&#xff08;或注解&#xff09; 3.获取SqlSession&#xff0c;在获取Mapper组件对象。 4.调用Mapper组件的方法操作数据库。 ----------…

CSDN客诉周报第13期|修复3个重大bug,解决10个次要bug,采纳1个用户建议

听用户心声&#xff0c;解用户之需。hello&#xff0c;大家好&#xff0c;这里是《CSDN客诉周报》第13期&#xff0c;接下来就请大家一同回顾我们最近几周解决的bug&#xff5e; 一、重大问题 1、【数据中台】搜索功能失效&#xff0c;无法搜出内容 反馈量&#xff1a;300 …

Linux下的进程类别(内核线程、轻量级进程和用户进程)以及其创建方式

【推荐阅读】 需要多久才能看完linux内核源码&#xff1f; 手把手教你如何编写一个Makefile文件 了解ixgbe网卡驱动— 驱动注册&#xff08;纯代码分享&#xff09; 关于如何快速学好&#xff0c;学懂Linux内核。内含学习路线 Linux内核CPU调度域内容讲解 Linux进程类别 虽然我…

图像处理之《基于生成对抗网络和梯度下降逼近的鲁棒无覆盖隐写术》论文精读

一、相关知识 1、图像隐写术分类 本文对图像隐写术又做了新的分类&#xff0c;可以分为传统图像隐写术、无载体图像隐写术和基于深度学习的图像隐写术。 本文又将基于深度学习的图像隐写术又分为四种&#xff1a;基于嵌入的方法(即将传统的隐写术如LSB与生成模型相结合&…

clickhouse doris 实时OLAP数据库的对比与选型

背景介绍 ClickHouse 是俄罗斯的搜索公司 Yandex 开源的 MPP 架构的分析引擎&#xff0c;号称比事务数据库快 100-1000 倍&#xff0c;团队有计算机体系结构的大牛&#xff0c;最大的特色是高性能的向量化执行引擎&#xff0c;而且功能丰富、可靠性高。 Apache Doris 是由百度…

【SpringBoot图书馆管理系统项目开发教程 1 】项目规划和启动

&#x1f466; 作者简介&#xff1a;码上言 &#x1f947;代表教程&#xff1a; 1、Spring Boot vue-element 开发个人博客项目实战教程 2、基于SpringBoot智能图书馆管理系统项目开发教程 &#x1f4d4;我的文档网站&#xff1a;http://xyhwh-nav.cn/ 基于SpringBoot Vue 的…

Python xlwings模块

一 xlwings安装与功能介绍 使用特定模块前&#xff0c;需要在程序最前面进行模块导入,和JAVA导入依赖包一样。 import 模块名 也可以加上from语句导入特定的子模块(主要是防止某些模块太大影响加载速度&#xff09; from 模块名 import 函数名(也可以用*代表所有) 1.1 os模块 o…

终极 Microsoft 365 管理工具——M365 Manager Plus

由于疫情原因&#xff0c;我们的工作方式也发生了很大的改变&#xff0c;相比以往的办公方式&#xff0c;未来线上远程办公将成为一种全新的方式。但目前对于很多企业来说&#xff0c;施行线上办公模式还面临着很多困难。Microsoft 365是企业最普遍选择的基于云的工作组件&…

文件上传漏洞之upload-labs靶场实战通关

目录 pass-01 pass-02 pass-03 pass-04 pass-06 pass-07 pass-08 pass-09 pass-10 pass-11 pass-12 pass-13 pass-14 pass-15 pass-16 pass-17 pass-18 pass-19 pass-20 pass-21 pass-01 pass-02 前端删除完验证函数后通过burp修改 content-type的类型 pa…

web前端 html+css+javascript 绿色的随行旅游网页设计实例 企业网站制作

&#x1f468;‍&#x1f393;学生HTML静态网页基础水平制作&#x1f469;‍&#x1f393;&#xff0c;页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码&#xff0c;这是一个不错的旅游网页制作&#xff0c;画面精明&#xff0c;排版整洁&#xff0c;内容…

Span抽取和元学习能碰撞出怎样的新火花,小样本实体识别来告诉你!

近日&#xff0c;阿里云机器学习平台PAI与华东师范大学高明教授团队、达摩院机器智能技术NLP团队合作在自然语言处理顶级会议EMNLP2022上发表基于Span和元学习的小样本实体识别算法SpanProto。这是一种面向命名实体识别的小样本学习算法&#xff0c;采用两阶段的训练方法&#…