一、app项目
灰度发布
所谓灰度发布,就是在发布生成环境过程当中,先发布其中几台服务器,如果这几天服务器功能运行一段时间后能够正常,name再把其他未升级或者未发布的服务器进行生成环境发布;如果先发布的机台服务器运行有问题,那么就需要 回顾到原来的版本。
app项目发布平台
- android 安装app的后缀名是 apk
- ios 苹果app的后缀名是 ipa
获取app安装包文件的方式一:
- android 可以直接找开发给对应的apk安装包
- ios 直接将手机给开发人员,让开发人员安装对应的ipa包
获取app安装包文件的方式二
测试包生成值后会上传到蒲公英平台,然后生成一个链接地址(二维码)
生成app安装包的获取
android app安装包、豌豆荚、应用宝、360手机助手
敏捷开发:
以用户的需求为核心,采用迭代、循环渐进的方式进行软件开发
在敏捷开发过程中,如今项目在构建初期会被切分成不同的子系统以及不同的迭代,各个子项目的成果警告测试,具备可视,具备可视,可集成和可运行的特征。
分迭代
? v1.0 用户模块— 用户注册、 用户登录
? v2.0 用户模块— 哼唧VIP、三方登录
安装 Android-SDK
https://www.androiddevtools.cn/
应用内测分发平台
在实际测试工作中,为了方便测试程序包的安装和管理,可以使用一些免费的应用内测分发平台。将应用测试包上,传到这些平台上,可以生产对应的二维码,直接扫码进行应用安装。
app应用测试流程
参与需求评审 评审前一定要看需求文档
指定测试计划 一般由测试负责人或测试主管制定
设计编写测试用例 有小公司 由于人力时间紧张,可以不写用例,需要写测试点。
执行用例,跟踪缺陷 (执行之前,用例评审、搭建环境、冒烟测试(可做、也可不做))
编写提交版本测试报告 根据报告 确定是否合格 可以上线
app测试要点
appium自动化框架原理
python开发工具— appium服务器—手机
?
appium服务器与手机 通过 adb交互
appium-client 使用 是HTTP协议 向 appium服务器 建立连接
1、自动化测试环境搭建
tools 目录 有 uiautomatorviewer命令 查看app元素
platform-tools目录 有 adb 工具
build-tools\29 aapt 工具 获取app的包名 启动名
验证:
java -version
uiautomatorviewer
adb
appium服务可执行文件,默认安装在C盘
启动之前,需要先配置jdk android-sdk 目录
安装方式:
? pip install appium-client-python
adb 客户端–电脑上
adb 守护进程–手机中
adb 服务器–电脑上
2、adb命令
? 不在先就是offline
会先查看adb-server是否启动,没有启动就去启动
没有信息输出是正常的
没有信息输出是正常的
获取包名、界面名
包名: app包名,是app唯一识别,
界面名:相当于web网页中的地址,在app当中,每个界面都有一个名字
adb shell dumpsys window findstr “app名”
在手机或模拟器上打开app
app 安装
adb install 路径/包名
app 卸载
adb uninstall 包名
上传下载文件
讲电脑上的文件上传到手机
adb push 电脑文件路径 手机的路径
adb push ./a.txt /sdcard
下载文件
从手机上下载文件到本地
adb pull 手机文件路径 电脑文件路径
一、app业务功能测试
1、测试点拆分
根据软件说明,设计文档、用户需求 验证App的各个功能的实现。
如果产品已经上线了,且没有需求文档,
要了解项目:1、则一定要去问人 2、自己使用研究
需求来源:
-
显性需求:文档中明确的说出来的需求 -
隐性需求:没有明确写出来,但是需要考虑
相关业务,功能影响到的相关业务
分支流程、逆向操作、异常操作
发布心情功能–拆分小功能点
输入文本:字符长度、特殊字符
图片:图片数量,
选择分类:
发布与取消:
发布评论功能–拆分小功能点
评论内容:长度、特殊字符、超链接、标签
点赞
2、app测试要点
-
功能测试 -
兼容测试 -
安装、卸载、升级测试 -
交叉事件测试 -
PUSH测试 -
性能测试 CPU、内存、浏览、电量、流畅度、启动速度 -
用户体验测试 -
稳定性测试
二、测试
1、兼容性测试
Android、IOS
覆盖主流版本,排名前3的版本测试
不知道 就去百度 查看 线上排名网站
https://mtj.baidu.com/data/mobile/device
不可能去做全兼容的测试,但是可以去做深度兼容测试。需要借助于第三方云测平台,testin云测,我们把app提交到云测平台,帮我们做测试,云测平台有很多的手机。是收费的 拿到测试报告。
或者我们自己来对各个手机类型,做功能测试,做到深度测试。
2、安装卸载升级测试
app是一个客户端程序,客户端在使用前是需要安装的,因此需要测试 安装、卸载、升级的操作。
? 异常场景:
? 1、正在运行时卸载
? 2、取消卸载
? 3、卸载关机
? 4、卸载之后数据是否保留
? 从低版本升级到高版本,从app内升级,从app应用商城升级
异常场景:
跨版本升级,关机,升级之后数据检查
3、交叉测试
交叉测试 又称为冲突测试、或者干扰测试
交叉事件:
? 1、app运行时接打电话
? 2、app运行时收发短信
? 3、app运行时接到视频通话
? 4、app运行时收到推送通知
? 5、app运行时连接蓝牙
4、push消息测试
消息推送场景:
- 资讯类通知,让用户实时获取到自己感兴趣的新闻,从而增加用户的粘性
- 商城类通知,让用户获取到商城的促销活动,提高用户成交率
- 流程类通知,让用户及时获取处理工作的内容。
推送原理:由服务器主动推送消息到app端,是一个长连接
推送服务器:使用第三方推送服务器(极光或者信鸽)
中小企业不会自己搭建推送服务器,一般使用的都是第三方。
消息推送的关注点:
-
push消息(消息推送)是否按指定业务规则发送。 -
检查 是否按特定用户去进行推送 -
设置不接受推送消息,确认是否正常 -
推送消息的打开、展示、跳转是否正常 -
app是否运行,查看消息推送是否能收到
5、性能测试
设置----关于手机/平板—版本号 多点击几次
直到提示:您已进入开发者模式
在设置中 会出现:开发者选项–》调试 USB打开 和 输入 指针位置贷款
系统用户—文件管理器—上方 有三个横岗 —点击 齿轮 --高级 访问默认:改为超级管理员
5.1 性能工具介绍
GT APP 随身调试平台 开源网站
https://www.oschina.net/p/great-tit
GT工具可以进行基础的性能测试
GT工具提供了查看日志的功能,通过查看相关日志来分析和定位app功能异常以及crash等问题。
出现了问题:不要已出现问题就提交bug,要首先确定是前端的问题、还是后端的问题。如果是后端的问题,也不一定是需要修改代码的问题,可能是环境、数据问题,因此要重复多方面测试,在确认出现错误的真正原因。
5.2 CPU测试
GT 工具提供了两个CPU监考指标:CPU jiffes
CPU指标就是当前手机中 cpu的整体使用率
jiffief 指标 表示 开机以来,程序消耗的CPU时间片的总数
CPU问题的影响:
? 1、CPU使用长时间处于90%以上 非常卡
? 有的公司 认为70% 就有影响,有的认为80%有影响
? 不同的公司,对性能指标数据要求不高。
2、手机发热、耗电量增加
3、反应变慢,引起ANR(假死状态)
AUT 选择 要测试app
其他指标 选择 CPU
参数 出参 勾选
日志 logcat 打开
在返回AUT 然后 点击启动
三、appium自动化测试
1、appium自动化框架原理
代码直接发给手机 是识别不了,appium可以把代码转成手机识别的指令。
appium-client 向 appium 发送命令,appium 通过adb 向手机通信。
手机通过adb把结果返回给appium, appium在返回给appium-client。
2、环境搭建
3、adb命令
进入开发者模式,就可以方便的适应adb命令。
设置–关于平板电脑/手机—版本号 打击 五六下 直到出现 进入开发者模型
设置–开发者选项-- 调试 --USB调试 输入 —指针位置
adb客户端:用来发送指令
server服务端 adb.exe执行后会启动该服务,通过这个服务端与手机上的adb守护进程沟通
adb守护进程 随着android系统的启动而启动,当android系统关闭之后它才会关闭
3.1 常用命令
android自带模拟器 端口号默认是 5000
夜神模拟器端口号:62001
海马模拟器端口号:26944
逍遥模拟器端口号:21503
MuMu模拟器端口号:7555
天天模拟器端口号:6555
# 命令行输入 连接 逍遥模拟器
adb connect 127.0.0.1:21503
-
adb start-server -
adb kill-server -
获取包名
包名: app应用的唯一识别,操作系统 根据包名来区分 应用app
界面名:相当于web页面,app中一个界面一个名字
adb shell dumpsys window windows | findstr mFocusedApp
或者使用
adb shell dumpsys window windows | findstr "usedApp"
结果是:
mFocusedApp=AppWindowToken{87bc1b7 token=Token{f5d10b6 ActivityRecord{20c5051 u0 io.manong.developerdaily/io.toutiao.android.ui.activity.MainActivity t15}}}
表示的意思是: 包名是 io.manong.developerdaily
界面名是 :io.toutiao.android.ui.activity.MainActivity
使用aapt.exe来获取包名和界面名
aapt dump badging apk路径
3.2 安装与卸载
adb install apk路径
# 案例
adb install E:\迅雷下载\110_00faf2f0dc72397153f010f09ad66ff7.apk
adb uninstall 包名
# 案例
adb uninstall com.qq.reader
3.3 上传下载文件
将电脑上的文件上传到手机
adb push 电脑上文件路径 手机路径
#案例
adb push a.txt /sdcard
从手机上下载文件到本地
adb push 手机的文件路径 电脑的文件夹路径
# 案例
adb pull /sdcard/a E:\IDE
3.4 查看日志信息
为什么要获取日志信息:
查看出现错的原因,然后给开发人员分析
adb logcat 查看日志文件
# 使用管道符 写日志到文件中
adb logcat > log.txt
3.5 测试app的启动速度
如果一个app启动的速度太慢也不行
adb shell am start -W 包名/界面名
首先要获取到包名、启动页名
adb shell dumpsys window windows | findstr "usedApp"
拿到包名 启动页名
io.manong.developerdaily/io.toutiao.android.ui.activity.MainActivity
然后查看启动速度
adb shell am start -W io.manong.developerdaily/io.toutiao.android.ui.activity.MainActivity
结果是:
C:\Users\fan\Desktop>adb shell am start -W io.manong.developerdaily/io.toutiao.android.ui.activity.MainActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=io.manong.developerdaily/io.toutiao.android.ui.activity.MainActivity }
Warning: Activity not started, its current task has been brought to the front
Status: ok
Activity: io.manong.developerdaily/io.toutiao.android.ui.activity.MainActivity
ThisTime: 192
TotalTime: 192
WaitTime: 201
Complete
C:\Users\fan\Desktop>
ThisTime:该界面Activity启动耗时(毫秒)
TotalTime:应用自身启动耗时= ThisTime+应用app等资源启动时间
WaitTime:系统启动应用耗时=TotalTime+系统资源启动时间
我们使用TotalTime作为app的启动时间
这个时间,会多次测试,然后取平均值
3.6 稳定性测试
monkey 集成在了 adb中,主要用来做稳定性测试用的,使用java语言编写的。
主要用来测试app会不会出现crash(崩溃)的情况
相当于让一个猴子随机操作app,所有的情况都可能出现,长时间的操作来测试app会不会出现问题。
monkey常用参数
-p 参数 对指定的app进行测试
add shell monkey -p 包名 100 (100次随机操作)
100次随机事件,不一定都是点击
-v 参数 表示记录信息的级别
level 0 默认级别 -v
level 1 -v -v 打印出的信息比较详细,只打印本程序相关的日志信息
level 2 -v -v -v 打印出的信息会更多,会显示其他程序运行的信息
我们一般选择level1 级别的日志打印,只关系自己app的日志
adb shell monkey -p io.manong.developerdaily -v -v 100
-s 用来指定伪随机数,如果两次随机数相同,那么两次操作步骤、流程、操作事件完全一样。
主要作用,就是用来复现上次的问题
adb shell monkey -p io.manong.developerdaily -v -v -s 10 100
–throttle 用于指定随机事件的间隔时间,单位是毫秒
adb shell monkey -p io.manong.developerdaily --throttle 500 --pct-touch 10 --pct-motion 50 -v -v -s 100 300 > log1.txt
–pct-touch 数值: 触摸 (整个随机事件中的百分比)
–ptc-motion 数值: 滑屏 (整个随机事件中的百分比)
组合使用
adb shell monkey -p io.manong.developerdaily --throttle 500 --pct-touch 10 --pct-motion 50 -v -v -s 100 300 > log1.txt
稳定性测试,那需要很长事件,8个小时时间做稳定性测试
如果在日志里面,出现ANR(application not responsing)
如果入日志中出现了Exception
|