移动端App持续集成体系构建实战

这里写目录标题

  • 一、目标
    • 1、前言
    • 2、优势:
    • 3、涉及技术点
    • 4、目标
  • 二、测试app构建、打包过程
    • 1、安卓打包的环境要求
  • 三、演示安卓源码打包
  • 四、演示安卓App部署
    • 1、前提条件
    • 2、命令控制apk安装与卸载
  • 五、安卓UI自动化测试
    • 1、Appium app自动化测试-Python
    • 2、实现的验证点:
    • 3、演示
  • 六、安卓App持续集成体系建设实战
    • 1、将之前的内容所做的事情用jenkins任务实现
    • 2、实现流程图
    • 3、jenkins配置
    • 4、安卓App自动部署
    • 5、测试任务
    • 6、添加邮件通知
  • 七、App打包任务与自动部署、自动化测试任务关联

一、目标

1、前言

在持续迭代开发中,开发写代码,将新的功能加入到app中,这样需要测试新的功能。我们需要一个新的可以测试的app包,进行测试。

用自动化构建,最好是能完成一些基础功能的测试(回归测试,保证新的迭代不影响旧的功能),基础功能测试通过后,说明这个测试包可以用,接下来可以测试新的功能。

在传统的测试中,往往UI自动化测试要滞后于手工测试,UI自动化测试验证的功能往往是已有的功能。

现有的自动化体系中,UI自动化测试往往测试的是回归的功能,已有的功能。

目标:app每天build打包,build发布,build UI自动化测试,通过技术手段做一些杂活,节省时间、节省人力、物力。

2、优势:

重复性定时任务,减少人力参与,提升工作效率
Build不再是阻碍测试进度的因素
自动化重用率高,维护频率低
部署独立的打包构建+自动化运行环境,让独立运行的帮助团队“干活”

3、涉及技术点

Android App构建
Android SDK使用
安卓模拟器或真机
Appium自动化测试
Jenkins持续集成
Shell脚本开发
Java程序开发
Git (github使用 )

4、目标

App持续集成体系:全自动化打包、发布、部署、测试的实现思路
安卓App的构建、打包方法
安卓App部署与自动化测试实践
利用Jenkins平台进行持续集成演练

二、测试app构建、打包过程

a、android应用
b、源码:https://gitee.com/zhilongya/androidSamplePython
c、安卓打包的目标文件:app-debug.apk文件
d、安卓打包命令:gradlew clean assembleDebug
e、安卓安装包的输出路径:/root/app/AndroidSampleApp/app/build/outputs/apk/debug

1、安卓打包的环境要求

DK
Android SDK
Gradle

三、演示安卓源码打包

[root@mylinux1 app]# git clone git@gitee.com:zhilongya/AndroidSampleApp.git
正克隆到 'AndroidSampleApp'...
remote: Enumerating objects: 67, done.
remote: Counting objects: 100% (67/67), done.
remote: Compressing objects: 100% (60/60), done.
remote: Total 67 (delta 2), reused 0 (delta 0), pack-reused 0
接收对象中: 100% (67/67), 591.43 KiB | 751.00 KiB/s, done.
处理 delta 中: 100% (2/2), done.[root@mylinux1 app]# ls
AndroidSampleApp[root@mylinux1 app]# cd AndroidSampleApp/
[root@mylinux1 AndroidSampleApp]# ls
app           gradle             gradlew      license.txt   README.md    settings.gradle
build.gradle  gradle.properties  gradlew.bat  README.en.md  ScreenShots
[root@mylinux1 AndroidSampleApp]# sh gradlew clean assembleDebug
Starting a Gradle Daemon (subsequent builds will be faster)BUILD SUCCESSFUL in 46s
27 actionable tasks: 25 executed, 2 up-to-date[root@mylinux1 AndroidSampleApp]# cd app/build/outputs/apk/
[root@mylinux1 apk]# cd debug/
[root@mylinux1 debug]# ls
app-debug.apk  output.json
[root@mylinux1 debug]# pwd
/root/app/AndroidSampleApp/app/build/outputs/apk/debug

四、演示安卓App部署

1、前提条件

  • 安卓实体机或者安卓模拟器
  • 安卓SDK

目标:通过命令安装/卸载app

2、命令控制apk安装与卸载

  • 安装:adb install <file_path>
  • 卸载:adb uninstall <package_name>
D:\androidSamplePython>adb install D:\jenkins_CICD\workspace\BuildAndroidSample_Pipeline_paral\AndroidSampleApp\app\build\outputs\apk\debug\app-debug.apk
Performing Push Install
D:\jenkins_CICD\workspace\BuildAndroidSample_Pipeline_para...le pushed, 0 skipped. 609.5 MB/s (1736320 bytes in 0.003s)pkg: /data/local/tmp/app-debug.apk
Success

五、安卓UI自动化测试

1、Appium app自动化测试-Python

源码位置:https://gitee.com/zhilongya/iAppBVT_Python.git
开发工具:pycharm
UI自动化框架:appium
测试执行框架:pytest
appium运行配置DesireCap的获取:pytest-testconfig配置文件读取

2、实现的验证点:

app可安装
app可启动
app首页预期元素存在

3、演示

from appium import webdriver
import unittest
import time
from pytest_testconfig import configclass TestAppSample:def setup(self):desired_caps = {}desired_caps['platformName'] = 'Android'desired_caps['deviceName'] = '127.0.0.1:7555'desired_caps['udid'] = '127.0.0.1:7555'desired_caps['appActivity'] = '.launch.LaunchSplashActivity'desired_caps['appPackage'] = 'com.tencent.wework'self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)def tearDown(self):self.driver.quit()def test_demo(self):time.sleep(3)self.driver.find_element(AppiumBy.ID,"com.tencent.wework:id/cjz").click()tip=self.driver.find_element(AppiumBy.ID,"com.tencent.wework:id/adn").textassert "微信登录"==tip

六、安卓App持续集成体系建设实战

1、将之前的内容所做的事情用jenkins任务实现

  • jenkins平台源码构建、打包、发布app测试包
  • jenkins自动部署、测试新app测试包
  • jenkins通知运行结果

2、实现流程图

在这里插入图片描述

3、jenkins配置

a、新建项目:0902_build_android_app

b、限制项目的运行节点:app_CICD_node
在这里插入图片描述

c、源码管理

在这里插入图片描述

d、检出到子目录
目的:将源码checkout到AndroidSampleApp目录下
在这里插入图片描述

在这里插入图片描述

e、添加构建步骤

在这里插入图片描述

cd AndroidSampleApp
gradlew clean assembleDebug

f、添加构建后操作,选择归档成品

目的:将app测试包输出到控制台,方便其他人下载测试

在这里插入图片描述

g、构建产生的文件
在这里插入图片描述

4、安卓App自动部署

a、新建项目:0902_bvt_android_app

b、限制项目的运行节点:app_CICD_node
在这里插入图片描述

c、源码管理
在这里插入图片描述
d、检出到子目录
目的:将源码checkout到iAppBVT_Python目录下
在这里插入图片描述
e、构建步骤

adb uninstall com.appsflyer.androidsampleapp
adb install D:\jenkins_CICD\workspace\0902_build_android_app\AndroidSampleApp\app\build\outputs\apk\debug\app-debug.apk

在这里插入图片描述

构建步骤优化

{adb uninstall com.appsflyer.androidsampleapp}||{adb install D:\jenkins_CICD\workspace\0902_build_android_app\AndroidSampleApp\app\build\outputs\apk\debug\app-debug.apk}
adb install D:\jenkins_CICD\workspace\0902_build_android_app\AndroidSampleApp\app\build\outputs\apk\debug\app-debug.apk

5、测试任务

{adb uninstall com.appsflyer.androidsampleapp}||{adb install D:\jenkins_CICD\workspace\0902_build_android_app\AndroidSampleApp\app\build\outputs\apk\debug\app-debug.apk}
adb install D:\jenkins_CICD\workspace\0902_build_android_app\AndroidSampleApp\app\build\outputs\apk\debug\app-debug.apkcd iAppBVT_Python
pip install -r requirements.txt
pytest -sv test/test_bvt.py

在这里插入图片描述

6、添加邮件通知

在这里插入图片描述

邮件通知结果
在这里插入图片描述

七、App打包任务与自动部署、自动化测试任务关联

实现完成打包任务之后,运行自动化测试任务,安装新包,并运行UI自动化测试验证新安装包的正确性

父子任务
在这里插入图片描述
构建后操作:选择子任务
在这里插入图片描述
当运行完父任务后,自动触发子任务的执行

在这里插入图片描述

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

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

相关文章

OpenCV(二十一):椒盐噪声和高斯噪声的产生

目录 1.图像噪声介绍 2.椒盐噪声的产生 3.高斯噪声的产生 1.图像噪声介绍 噪声介绍 图像噪声是指在图像中存在的不期望的、随机的像素值变化&#xff0c;这些变化来源于多种因素。噪声可能导致图像细节模糊、失真或难以分辨。 以下是几种常见的图像噪声类型&#xff1a; 1…

《vue3实战》运用push()方法实现电影评价系统的添加功能

目录 前言 电影评价系统的添加功能是什么&#xff1f; 电影评价系统的添加功能有什么作用&#xff1f; 一、push&#xff08;&#xff09;方法是什么&#xff1f;它有什么作用&#xff1f; 含义&#xff1a; 作用&#xff1a; 二、功能实现 这段是添加开始时点击按钮使…

阿里云服务器退款政策及退款流程解析

阿里云服务器如何退款&#xff1f;云服务器在哪申请退款&#xff1f;在用户中心订单管理中的退订管理中退款&#xff0c;阿里云百科分享阿里云服务器退款流程&#xff0c;包括申请退款入口、云服务器退款限制条件、退款多久到账等详细说明&#xff1a; 目录 阿里云服务器退款…

应用在汽车新风系统中消毒杀菌的UVC灯珠

在病毒、细菌的传播可以说是一个让人敏感而恐惧的事情。而对于车内较小的空间&#xff0c;乘坐人员流动性大&#xff0c;更容易残留细菌病毒。车内缺少通风&#xff0c;残留的污垢垃圾也会滋生细菌&#xff0c;加快细菌的繁殖。所以对于车内消毒就自然不容忽视。 那么问题又来…

Vue + Element UI 前端篇(十):动态加载菜单

Vue Element UI 实现权限管理系统 前端篇&#xff08;十&#xff09;&#xff1a;动态加载菜单 动态加载菜单 之前我们的导航树都是写死在页面里的&#xff0c;而实际应用中是需要从后台服务器获取菜单数据之后动态生成的。 我们在这里就用上一篇准备好的数据格式Mock出模…

高忆管理:证券账户国债逆回购怎么操作?

国债逆回购的本质就是一种短期贷款&#xff0c;个人经过国债回购商场把自己的资金借出去&#xff0c;取得固定的利息收益&#xff0c;那么&#xff0c;证券账户国债逆回购怎样操作&#xff1f;怎样在股票账户上买国债逆回购&#xff1f;下面高忆管理为我们准备了相关内容&#…

论文阅读_扩散模型_DM

英文名称: Deep Unsupervised Learning using Nonequilibrium Thermodynamics 中文名称: 使用非平衡热力学原理的深度无监督学习 论文地址: http://arxiv.org/abs/1503.03585 代码地址: https://github.com/Sohl-Dickstein/Diffusion-Probabilistic-Models 时间: 2015-11-18 作…

发光太阳聚光器的蒙特卡洛光线追踪研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Github 下载指定文件夹(git sparse-checkout)

比如要下载这里的 data_utils 步骤 1、新建空文件夹&#xff0c;并进入新建的空文件夹。 2、git init 初始化 3、git remote add origin 添加远程仓库 4、git config core.sparsecheckout true 允许稀疏检出 5、git sparse-checkout set 设置需要拉取的文件夹&#xff08;可…

【Python】pytorch,CUDA是否可用,查看显卡显存剩余容量

CUDA可用&#xff0c;共有 1 个GPU设备可用。 当前使用的GPU设备索引&#xff1a;0 当前使用的GPU设备名称&#xff1a;NVIDIA T1000 GPU显存总量&#xff1a;4.00 GB 已使用的GPU显存&#xff1a;0.00 GB 剩余GPU显存&#xff1a;4.00 GB PyTorch版本&#xff1a;1.10.1cu102 …

本地开机启动jar

1&#xff1a;首先有个可运行的jar包 本地以ruiyi代码为例打包 2&#xff1a;编写bat命令---命名为.bat即可 echo off java -jar D:\everyDay\test\RuoYi\target\RuoYi.jar 3&#xff1a;设置为开机自启动启动 快捷键winr----输入shell:startup---打开启动文档夹 把bat文件复…

IntelliJ IDEA创建Web项目并使用Web服务器----Tomcat

&#x1f3c6;IntelliJ IDEA创建Web项目并使用Web服务器----Tomcat 以下是本篇文章正文内容&#xff0c;下面案例可供参考&#xff08;提示&#xff1a;本篇文章属于原创&#xff0c;请转发或者引用时注明出处。&#xff09;&#xff0c;大家记得支持一下&#xff01;&#xff…