绕过界面限制直接测试服务器步骤:
1.设置断点
2.修改请求
3.修改响应
请求之前设置断点:
修改请求
设置断点:响应之后
修改响应
七。互联网公司知识
1.迭代模型
速度不同:开发模型不一样
传统行业:瀑布模型
互联网行业:敏捷模型
敏捷开发(scrum)模型
Scrum
:
是一个敏捷开发框架,是一个增量的,迭代的开发过程
迭代(sprint):项目开发过程中最小周期,每个sprint周期建议为2-4周。在scrum框架 中,整个开发周期包括若干个小的迭代周期。
产品功能列表( Backlog
):在
Scrum
中,将产品
Backlog
按
商业价值
排出需求列表
Scrum
三种角色:
Product Owner(产品负责人
) :定义需求,进行需求排期
Scrum Master(项目经理
) :管理项目,确保scrum
顺利执行
Dev Team(
开发团队
)
实现客户需求
成员:开发、测试、UI
。
团队人数:一般5
人到
9
人。开发测试比一般为:
3:1 — 5:1
2.发布策略
![](https://i-blog.csdnimg.cn/blog_migrate/2729e66ada5f0efcbd5a5c641fd29d5a.png)
3.APP软件包类型
![](https://i-blog.csdnimg.cn/blog_migrate/8bfb24ee1e046fad102f79ff9762ce46.png)
4.APP客户端(内部)发布平台
在实际测试工作中,为了方便测试程序包的安装和管理,可以使用一些应用内测分发平台。如:蒲公英、Testlink等
操作步骤:
Ø
开发将应用测试包上传到这些平台上
Ø
平台可以生成对应的二维码
Ø
测试直接扫码进行应用安装
5.APP客户端(线上)发布平台
产品测试完成后要在线上进行发布,让用户进行下载使用。下面是安卓和
IOS
应用常用的发布平台和渠道
Ø
安卓应用:豌豆荚、应用宝、
360
手机助手、各类手机品牌商城等;
Ø
IOS
应用: 主要有
App store
、
iTools
l
操作步骤:
Ø
开发者账号注册,申请在发布平台(各种应用商店)上架
Ø
针对不同的发布平台,在软件包中加入对应的平台ID(渠道ID),上传到发布平台
Ø
平台审核通过后,用户即可在应用商店中下载
l
一般线上发布过程,由开发人员负责。
l
在软件包加入平台ID后,上传到发布平台时,需要测试人员验证核心的业务功能
六。APP测试基本知识
1.APP应用环境与web项目环境对比
相同点:1. APP和web使用的后端服务器是相同的
2. 前后端都使用HTTP协议进行交互(也有部分APP用socket来交互)
不同点:1. APP是C/S结构,web浏览器是B/S结构
2. APP前后端交互的数据格式以Json 为主,web前后端交互的数据格式为Json/HTML都有
C/S结构(Client/Server结构)是一种分布式计算模型,其中客户端应用程序和服务器应用程序通过网络进行通信。在C/S结构中,客户端负责处理用户界面和用户输入,并向服务器发送请求,而服务器负责处理客户端请求并提供相应的服务。这种结构通常涉及两个独立的应用程序,即客户端应用程序和服务器应用程序。
B/S结构(Browser/Server结构)是一种Web应用程序的架构模式。在B/S结构中,客户端使用Web浏览器作为用户界面,而服务器提供网站的功能和服务。客户端通过浏览器向服务器发送请求,并接收由服务器生成的HTML等响应。这种结构使得用户可以通过浏览器访问服务器上的应用程序,而无需在本地安装任何特定的客户端软件。
总结:
- C/S结构是一种分布式计算模型,涉及独立的客户端和服务器应用程序之间的通信。
- B/S结构是一种Web应用程序的架构模式,涉及通过浏览器访问服务器上的应用程序。
- C/S结构和B/S结构在应用场景和通信方式上存在差异,选择哪种结构取决于具体的需求和应用程序的特点。
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。采用完全独立于编程语言的文本格式来存储和表示数据。
JSON最常用的格式是对象的键值对。例如:
{"firstName": "Brett", "lastName": "McLaughlin"}
2。APP项目测试内容介绍
功能测试:1.业务测试 2.功能模块测试
专项测试:1.安装卸载升级 2.push消息推送 3.交叉事件测试 4.用户体验测试 5.兼容性测试
性能测试:1.CPU、内存占用 2.启动速度 3.流量、电量消耗 4流畅度 5稳定性
3.模拟器
Mumu模拟器是一款专门用于在电脑上模拟安卓操作系统的软件。它允许用户在电脑上运行安卓应用程序和游戏,提供了一个虚拟的安卓环境。
Mumu模拟器的主要用途如下:
-
运行安卓应用程序:Mumu模拟器允许用户在电脑上运行安卓应用程序,包括社交媒体应用、通讯应用、办公工具、娱乐应用等。用户可以在大屏幕上更便捷地使用安卓应用程序,并享受与手机类似的体验。
-
玩安卓游戏:Mumu模拟器提供了一个虚拟的安卓环境,可以在电脑上玩安卓游戏。用户可以通过键盘、鼠标或游戏手柄等设备来控制游戏角色,享受更大屏幕和更流畅的游戏体验。
-
开发和测试应用程序:对于安卓应用程序的开发人员和测试人员来说,Mumu模拟器是一个方便的工具。它提供了一个虚拟的安卓环境,可以用于应用程序的开发、调试和测试,加快开发过程并提高测试效率。
-
录制和分享操作:Mumu模拟器支持屏幕录制功能,可以将操作过程录制下来,方便用户进行操作教学、游戏攻略录制等用途。用户可以录制屏幕操作并将其分享给其他人。
七。APP专项测试
1。安装卸载升级 2.兼容性 3.push消息推送 4.交叉事件 5.用户体验
1。安装卸载升级
安装卸载升级:
APP是客户端程序,客户端程序就需要提前进行安装才能使用,因此需要测试安装、卸载、升级操作
安装测试关注点:
l
正常场景:
Ø
在不同的操作系统版本上安装
Ø
从不同的安装渠道安装(APP商城、手机助手 、直接下载apk或者ipa文件安装)
Ø
不同的安装路径(安装到手机上、安装到SD卡 上)
l
异常场景:
Ø
安装时出现异常(关机、断网),恢复后能否 继续安装
Ø
安装时存储空间不足
Ø
安装时手动取消后再次安装
Ø
正在运行时覆盖安装
Ø
低版本覆盖安装高版本
Ø
卸载后安装
卸载测试关注点:
Ø
正常卸载(APP手动卸载、工具卸载)
Ø
运行时卸载
Ø
取消卸载
Ø
卸载异常中断
Ø
卸载后无数据残留
升级测试关注点:
Ø
从临近版本升级
Ø
跨版本升级
Ø
不同渠道升级(应用商场、手机助手)
Ø
升级提醒成功(可不提醒、可以提示升级、强 制升级)
Ø
应用内升级时非WIFI提醒 l 升级后要观察升级前的数据正常(当数据结构改 变而开发没有处理好时很容易出现升级前的数据混乱)
2.兼容性
APP在不同的机型上由于软件、硬 件等不同可能出现各种各样的问题, 因此需要做兼容性测试
手机型号
覆盖市场主流机型(Android:三星、小米、
OPPO、华为)考虑APP线上排名
系统版本
安卓系统:4.4、5.1、6.0、7.0 ...
ios系统:9.X、10.X、11.X、12.X...
分辨率
分辨率:1080x1920、720x1280...
屏幕尺寸
屏幕尺寸:5.5、4.7...
网络
2G\3G、4G、WIFI...
应用兼容性
手机硬件、外部硬件、操作系统、其他APP
app应用兼容性
与手机硬件兼容性:home键、电源键、音量调节等
与操作系统软件兼容
与外部硬件兼容性:耳机,蓝牙
与操作系统软件兼容性:wlan设置、系统时间调节、LBS定位等
与其他APP兼容
与其他app兼容性:后台在播放音乐时,进入动态页面点击动态视频的播放, 系统如何处理
如何选择品牌、机型、系统、分辨率网络?
l
查看线上排名网站(流量研究院:
https://mtj.baidu.com/data/mobile/device
)
如何执行兼容性测试?
l
一般情况下,在公司中会存在各种型号的手机,使用真机进行兼容性测试即可
l
如果项目的用户量非常大,真机无法覆盖完全,可以找第三方的兼容性平台进行测试
Ø
如:线上云测平台testin(https://www.testin.cn/)
3.push消息推送
什么是Push消息?
l
Push消息:是APP给你推送的各种消息。
l
通常手机中“设置”-“通知”就是进行push消息的设置 ,因此需要进行push消息测试。
什么时候会使用Push消息?
消息推送场景:
l
产品角度:功能需要,如:资讯类产品的新闻推送、工具类产品的公告推送、快递签收通知,等等
l
运营角度:活动运营需要,如:电商类产品的促销活动;召回用户 / 提高活跃度等等
push消息推送的本质:服务器有更新消息,推送服务器,client app 用户
常见的推送服务器分类
操作系统级别的消息推送服务器
•
IOS:
APNs(Apple Push Notification service)
•
Android:
C2DM(Cloud to Device Messaging)
自己搭建推送服务器
•
好处:性能强、安全性高
•
缺点:成本高
第三方推送平台
•
手机厂商类:小米推送、华为推送。
•
第三方平台类:友盟推送、极光推送、 云巴(基于MQTT)
•
BAT大厂的平台推送:阿里云移动推送 、腾讯信鸽推送、百度云推送
Push消息推送的设置:
l
APP服务器设置:
Ø
推送内容
Ø
推送时机
Ø
推送频率
Ø
推送人群(全部用户/部分用户)
l
手机端设置:
Ø
是否接收通知
Ø
提醒位置等
push消息测试关注点:
l
APP服务器设置测试点:
Ø
Push消息是否按指定业务规则发送
Ø
当Push消息是针对特定用户时,检查收到的Push与用户
身份是否相符等
l
手机端设置测试点:
Ø
设置不接收推送消息时,用户是否会收到Push消息
Ø
设置push消息显示的位置,是否与配置一致
Ø
收到push消息,是否能正常打开跳转等
l
其他测试:
Ø
APP在前台使用时,收到push消息如何提示
Ø
APP在后台运行时,收到push消息如何提示
Ø
APP离线,是否能收到PUSH消息。
服
4.交叉事件
交叉测试:
又叫冲突测试或者干扰测试,是指一个功能正在执行过程中,另外一个事件或操作对该过程进行干扰的测试
。例如:在App前台/后台运行同时接听来电或者下载文件等等。
交叉事件测试关注点:
Ø
APP运行时接打电话;
Ø
APP运行时收发信息;
Ø
APP运行时查看应用推送
Ø
APP运行接上蓝牙设备
Ø
APP运行时接收文件弹窗提醒
Ø
APP运行时旋转屏幕
Ø
APP运行时切换网络(4G、Wi-Fi);
Ø
App运行时使用相机、计算器等手机自带应用;
Ø
App运行时电量告警、插拔充电器。
注意事项
模拟用户使用场景,所有可能会影响APP正常运 行的场景 都是交叉事件
注
5.用户体验
用户体验:
以主观的普通消费者的角度去感知产品或服务的舒适、有用、易用、友好亲切程度。
UI界面测试:对照
UI
交互设计文档,检查每个界面 设计菜单、对话框、窗口、风格、布局等
易用性测试:•
是否有空数据界面设计,引导用 户去执行操作
•
菜单层次是否太深
•
完成业务操作的步骤是否过多
•
界面中按钮可点击范围是否适中
关注手机应用上的其他辅助功能:可以重点关注“放大字体”、“反 色”、“语音转换”、多点触碰等功 能
横竖屏测试:横竖屏的切换是否正常(特别要关注 APP中有表格,因为横竖屏的显示宽 度不一样)
l
用户体验测试较为主观,描述问题时尽量具体,需要有一定依据
注意事项
黑马程序员-软件测试
传智
八。APP性能测试
1.SoloP性能测试
SoloPi
:
是一个无线化、非侵入式的 Android 自动化工具,具备录制回放、性能测试等功能。
作用如下:
基础性能测试
:能够记录待测应用的各项指标,可以在悬浮窗中观察实时更新的数据,也可以对性能数据进行录制,在录制结束后查看图
表;同时,还支持性能加压,能够对CPU、内存与网络环境进行限制,复现应用在性能较差、网络环境不佳场景下的表现。
录制回放
:通过SoloPi执行用例步骤,能够将用户的操作记录下来,支持在各个设备上进行回放,这一切都能够在手机上独立完成。
一机多控:
支持通过操作一台主机设备来控制多台从机设备,不需要在各个设备上分别进行重复冗杂的兼容性测试,能够极大提升兼容性
测试的效率。
SoloPi
安装:
l
可独立安装的 SoloPi(APK,IOS无该版本),像普通APP一样安装。
(1)打开SoloPi,选择性能测试
(2)选择被测应用,勾选监控指标,勾选后悬浮窗会出现在手机屏幕
(3)点击开始监控,随后打开被测APP应用,开始测试
2.APP性能指标
1.内存 2.CPU 3.流量 4.电量 5.启动速度 6.流畅度 7.稳定性
1.内存
每个程序运行时都需要将代码和数据放入内存中,内存不足则程序无法正常运行。
SoloPi工具提供了两个内存的监控指标:PSS和Private dirty
Private dirty(私有内存):
进程独占内存,也就是进程销毁时可以回收的内存容量。
PSS(实际使用内存):
将跨进程共享页也加入进来, 进行按比例计算PSS。这样能够比较准确的表示进程占用的实际物理内存。
常见的内存问题:
l
内存泄漏:
Ø
内存泄露 memory leak,是指程序在申请内存后 ,无法释放已申请的内存空间,一次内存泄露危 害可以忽略,但内存泄露堆积后果很严重,无论 多少内存,迟早会被占光。
l
内存溢出:
Ø
内存溢出 out of memory,是指程序在申请内存 时,没有足够的内存空间供其使用,出现out of
memory Ø memory leak会最终会导致out of memory!
内存问题产生的影响:
l
程序实际使用的内存PSS持续增长 —— 可能是 内存泄漏
l
程序出现crash(崩溃) —— 可能是内存溢出
2.CPU
每个程序运行都需要占用CPU,那么单CPU的机器是如何同时运行多个程序的?
l
时间片即CPU分配给各个程序的时间,每个程序被分配一个时间段,称作它的
时间片
,即该程序允许运行的时间
SoloPi工具提供了两个CPU的监控指标:全局占用CPU和应用进程CPU
全局占用CPU:
l
整机的CPU使用水平,即当前手机的CPU整体使用率。
l
计算公式:
Ø
在 Linux 系统下,CPU 利用率分为用户态、系统态和空闲态
Ø
用户态:表示 CPU 处于应用程序执行的时间
Ø
系统态:表示系统内核执行的时间
Ø
空闲态:表示空闲系统进程执行的时间。
Ø
CPU 使用率 = CPU 执行非系统空闲进程使用量 / CPU 总的使用量
应用进程CPU:
l
表示自开机以来,应用程序消耗的CPU时间片的总数
CPU出现问题产生的影响:
l
CPU使用长时间处于90%以上
l
手机发热、耗电量增加
l
反应变慢、引起ANR(Application Not Responding)
3.流量
手机上网时消耗的流量需要收费的,因此流量测试是app性能测试中比较重要的一项。
流量(指网络流量):
用手机打开APP进行互联网操作时,会和服务器之间交换数据,手机流量就是指这些数据的总大小。
数据报文是包含手机上下行的报文
注意:上行消息是APP发送给服务器的报文,下
行消息是APP接收的服务器的报文 但上行消息不一定都是请求消息 例如:用百度网盘上传资料
SoloPi工具提供了流量监控指标:网络
网络
:
即网络流量,可以自动统计APP每秒上行和下行的报文大小
常用的流量测试方法:
l
统计测试法
Ø
利用工具获取应用程序收发的数据报文,统计出对应的流量
流量优化方法
:
Ø
数据的压缩
Ø
不同数据格式的采用
Ø
控制访问的频次
Ø
只获取必要的数据
Ø
缓存机制
Ø
针对不同的网络类型设置不同的访问策略
4.电量
相对于PC来说,移动设备的电池电量是非常有限的,因此电量测试是app性能测试中比较重要的一项。
电量测试:
l
就是测试移动设备电量消耗快慢的一种测试方法。
l
一般是用平均电流来衡量电量消耗速度(电池生产厂家一般都采用mAh来标记电池容量大小,平均电流越小,说明设备
使用时间就越长)
常见的耗电量大的场景:
定位,尤其是调用 GPS 定位。
网络传输,尤其是非 Wi-Fi 环境。
屏幕亮度
CPU 运算:复杂的运算逻辑、死循环等会直接导致CPU负载过高,会导致耗电;
wake_locker(锁屏-解锁)时间和次数
常用的电量测试方法:
l
系统自带接口
Ø
最新的IOS和Android系统内置的Setting里可以查看各个APP的电池消耗
Ø
该方案不能检测固定某一时间段内的电池精准消耗。
l
硬件检测
Ø
通过硬件可以精准地获得应用的电量消耗(如: PowerMonitor 硬件设备)
Ø
该方案测试时需要拆机,成本太高比较麻烦。
l
软件工具检测
Ø
通过第三方的软件来获取应用的电量消耗(如: AccuBattery、360省电王、SoloPi等)
Ø
该方案取决于第三方软件的计算准确性。
l
通过API计算应用电量消耗
Ø
通过代码方式调用电量相关API接口,获取应用维度精细的电量消耗
Ø
该方案计算准确,但是计算方式复杂,难度高。
电量的测试结果分析:
我们可以根据不同的业务场景测试出对应的电量消耗数据,但是是否有问题需要对比分析,对比方法:
与基准数据对比。(基准数据来自于产品经理,或者以往数据积累)
横向对比,拉上竞品一起测(目前多数采用这种方法)
Ø
同样的网络、手机,相似的测试场景,最后对比我们的产品和竞品在耗电量方面的差距,给出优化建议。
黑马程序员-软件测试
5.启动速度
APP启动测试:
测试从启动app到主页面显示的时间,打开一个app等待的时间过长时就会有一种较差的体验
APP启动:
分为冷启动,热启动
。
冷启动:
指app被后台杀死后,在这个状态打开app,这种启动方式叫做冷启动。
热启动:
指app没有被后台杀死,仍然在后台运行,通常我们再次去打开这个app,这种启动方式叫热启动。
启动速度测试方法(Android):
l
格式:adb shell am start -W 包名/Activity名
l
TP商城单商户包名/Activity名为:
com.tpshop.malls/com.tpshop.malls.SplashActivity
l
该命令获取3个关键指标:
Ø
ThisTime: 当前activity的时间。
Ø
TotalTime:应用的启动时间,包括创建进程、App初始化、
Activity初始化到界面显示。
Ø
WaitTime:前一个应用activity pause的时间+TotalTime
热启动和冷启动的启动速度测试命令完全相同
冷启动的时间 一般
大于
热启动的时间
6.流畅度
FPS:
l
即Frames per second:GPU在一秒内绘制的帧数。(简单理解为一秒内呈现给用户的图片数)
FPS值越高画面越流畅
流畅度问题产生的影响:
l
想要让大脑觉得动作是连续的,至少是每秒10-12帧的速度
l
想达到流畅的效果,至少需要每秒24帧
l
60帧每秒的流畅度是最佳的,我们的目标就是让程序的流畅度能接近60帧每秒
当页面多为静态时,FPS值很小是正常的
l
页面数据多为动态加载时,FPS值比较大(建议在24帧以上)
7.稳定性
稳定性测试:
通过长时间对应用程序进行无序操作,检验应用程序是否会出现异常。如闪退crash、无响应
ANR等。
稳定性测试工具——Monkey:
l
Monkey是一个命令行工具,是由安卓官方提供的。
l
测试人员可以通过Monkey来模拟用户的
触摸
、
点击
、
滑动
以及
系统按键
等操作(操作事件都是随机的),从而实现对
APP压力的测试和稳定性测试。(具体Monkey的使用在后续app自动化章节介绍)
l
开发人员结合monkey 打印的日志和系统打印的日志,修改测试中出现的问题。
稳定性测试的时机:
l
一般需要等产品稳定了,bug比较少的时候,再用monkey去测试待测试应用的稳定性。
3.ADB命令
1.显示系统中全部设备:
adb devices
这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示
2.开启或关闭ADB服务:
adb start-server
adb kill-server
3.连接设备:
adb connect IP
如果是USB连接,直接会连接ADB,如果是想通过网络连接(有线或者无线),则需要在
同一个局域网
,通过
IP
连接。上
面192.168.1.61替换成想要连接设备的IP即可
4.安装、卸载软件包
安装软件:adb install - (APK路径)
-r 代表如果apk已安装,r重新安装apk并保留数据和缓存文件。apk路径则可以直接将apk文件拖进cmd窗口,记得加
空格。
卸载软件:adb uninstall (apk包名)
如果卸载 app 但需要保留数据和缓存文件:adb uninstall -k (apk包名)
5.获取软件包名
列出手机装的所有app的包名:
adb shell pm list packages
列出系统应用的所有包名:
adb shell pm list packages -s
列出除了系统应用的第三方应用包名:
adb shell pm list packages -3
显示当前打开的软件包名(如右图):
Windows:adb shell dumpsys window | findstr mCurrentFocus(需要打开目标软件)
Mac/Linux:adb shell dumpsys window | grep mCurrentFocus
6.获取APP日志
格式:adb logcat >指定路径
举例:
① adb logcat >C:\Users\18810\Desktop\1.txt
② 执行完后Ctrl+C结束日志获取
③ 查看获取的1.txt文档即可
7.获取APP启动时间
格式
:adb shell am start -W 包名/activity名
常见参数
:
-S:表示每次启动前先强行停止
-R:表示重复测试次数
常见的三个指标
Ø
ThisTime: 当前activity的时间。
Ø
TotalTime:应用的启动时间,包括创建进程、App初始化、Activity初始化到界面显示。
Ø
WaitTime:前一个应用activity pause的时间+TotalTime
8.获取内存
格式:adb shell dumpsys meminfo <包名>
(1) Native/Dalvik 的 Heap 信息
如果发现这个值一直增长,则代表程序可能出现了内存泄漏(Out of
memary)。
(2) Total 的 PSS 信息
这个值是应用真正占据的内存大小,通过这个信息,可以轻松判别手
机中哪些程序占内存比较大
9.查看CPU占用情况
1.格式:adb shell top -s 列号
(-s 按指定行排序)
参数含义:
PID : 应用程序ID
S : 进程的状态(S表示休眠,R表示正在运行,Z表示僵死状态,N表示
该进程优先值是负数)
#THR : 程序当前所用的线程数
VSS : 虚拟耗用内存(包含共享库占用的内存)
RSS : 实前台际使用物理内存(包含共享库占用的内存)
PCY : (fg)和后台(bg)进程
UID : 用户身份ID
Name : 应用程序名称
10.获取APP使用流量
1.获取进程pid
win
: adb shell ps | findstr 包名
mac
: adb shell ps | grep 包名
如:adb shell ps | grep com.tpshop.malls
2.获取流量
adb shell cat /proc/{pid}/net/dev
3.查看
Wlan0:是网卡-wifi
Receive是接收、Transmit是发送
在日志里搜索ANR是bug反馈
![](https://i-blog.csdnimg.cn/blog_migrate/adfd9abf250474281152b22df1211fa3.png)
如果只是adb shell am -W 包名/启动名的话会报错,提示不能识别-W。
4.Monkey
1、什么是monkey
•
顾名思义,Monkey就是猴子, Monkey测试,就像一只猴子 在电脑面前,乱敲键盘在测试。
2、monkey作用
•
通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压力测试,检测
程序多久的时间会发生异常。
3、monkey异常情况分析
•
Monkey 测试出现错误后,一般的分析步骤 看Monkey的日志:
Ø
程序无响应的问题: 在日志中搜索 “ANR”
Ø
崩溃问题:在日志中搜索 “NullPointerException”
4、monkey环境
Ø
Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径
/system/framework/monkey.jar;
adb shell monkey -p 包名 –v 模拟次数 > 路径/log.txt
-s参数:只要两次-s参数值一样,monkey测试过程就能复现
![](https://i-blog.csdnimg.cn/blog_migrate/244b45611aa347de4a735534e6eb0bac.png)
九。APP抓包--Charles
十。微信小程序概念
十一。微信小程序与APP对比