在持续迭代开发中,开发写代码,将新的功能加入到app中,这样需要测试新的功能。我们需要一个新的可以测试的app包,进行测试。
用自动化构建,最好是能完成一些基础功能的测试(回归测试,保证新的迭代不影响旧的功能),基础功能测试通过后,说明这个测试包可以用,接下来可以测试新的功能。
在传统的测试中,往往UI自动化测试要滞后于手工测试,UI自动化测试验证的功能往往是已有的功能。
现有的自动化体系中,UI自动化测试往往测试的是回归的功能,已有的功能。
目标:app每天build打包,build发布,build UI自动化测试,通过技术手段做一些杂活,节省时间、节省人力、物力。
重复性定时任务,减少人力参与,提升工作效率
Build不再是阻碍测试进度的因素
自动化重用率高,维护频率低
部署独立的打包构建+自动化运行环境,让独立运行的帮助团队“干活”
Android App构建
Android SDK使用
安卓模拟器或真机
Appium自动化测试
Jenkins持续集成
Shell脚本开发
Java程序开发
Git (github使用 )
App持续集成体系:全自动化打包、发布、部署、测试的实现思路
安卓App的构建、打包方法
安卓App部署与自动化测试实践
利用Jenkins平台进行持续集成演练
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
DK
Android SDK
Gradle
[root@mylinux1 app]# git clone [email protected]: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
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
源码位置:https://gitee.com/zhilongya/iAppBVT_Python.git
开发工具:pycharm
UI自动化框架:appium
测试执行框架:pytest
appium运行配置DesireCap的获取:pytest-testconfig配置文件读取
app可安装
app可启动
app首页预期元素存在
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
a、新建项目:0902_build_android_app
c、源码管理
d、检出到子目录
目的:将源码checkout到AndroidSampleApp目录下
e、添加构建步骤
cd AndroidSampleApp
gradlew clean assembleDebug
f、添加构建后操作,选择归档成品
目的:将app测试包输出到控制台,方便其他人下载测试
a、新建项目:0902_bvt_android_app
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
{
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
实现完成打包任务之后,运行自动化测试任务,安装新包,并运行UI自动化测试验证新安装包的正确性