这里写目录标题
- 一、目标
- 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 config
class 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").text
assert "微信登录"==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.apk
cd iAppBVT_Python
pip install -r requirements.txt
pytest -sv test/test_bvt.py
6、添加邮件通知
邮件通知结果
七、App打包任务与自动部署、自动化测试任务关联
实现完成打包任务之后,运行自动化测试任务,安装新包,并运行UI自动化测试验证新安装包的正确性
父子任务
构建后操作:选择子任务
当运行完父任务后,自动触发子任务的执行