Android与IOS的相爱相杀之客户端测试

一、Android

Android 是google公司主导的一个开放的手机操作系统,不过目前已经超过了手机的局限,而定位于移动设备的操作系统。目前用于手机,平板,智能电视,智能导航,智能手环,智能眼镜以及智能家居设备
底层以Linux内核工作为基础,由C语言开发,只提供基本功能

1.1、Android四层架构

● Applications:应用程序层
● Application Framework:应用程序架构层
● Libraries:android运行库层
● linux kernel:底层linux内核
在这里插入图片描述

1.2、Android各版本特点

在这里插入图片描述

1.3、Android SDK

Android SDK,即Android Software Development Kit,是android的软件开发工具包。
它提供了在Windows/Linux/Mac平台上开发Android应用的开发组件。包含了在Android平台上开发移动应用程序的各种工具集。

1.3.1、下载并配置SDK

● 环境变量配置
○ 新建ANDROID_HOME :sdk路径
○ path添加三个变量
■ %ANDROID_HOME%
■ %ANDROID_HOME%\platform-tools
■ %ANDROID_HOME%\tools
● 验证adb
○ 只要不提示内部或外部命令,即表示配置成功
在这里插入图片描述

1.3.2、ADB介绍

● ADB全称Android Debug Bridge(安卓调试桥), 是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备(手机 平板 电视 智能导航…)
● 它的主要功能有:
○ 运行设备的shell(命令行)
○ 管理模拟器或设备的端口映射
○ 计算机和设备之间上传/下载文件
○ 将本地apk软件安装至模拟器或android设备

1.3.3、ADB常用命令

1.3.3.1、查看设备

adb devices //查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示

1.3.3.2、安装apk

adb install <apk文件路径>
adb install -r <apk文件路径> //覆盖安装,保留缓存
adb install -t <debug包文件路径> //安装debug包

1.3.3.3、卸载apk

adb uninstall <包名>
adb uninstall -k <包名> //若加 -k 参数,则卸载软件但是保留配置和缓存文件

1.3.3.4、查看应用包名

adb shell pm list packages //列出手机中所有应用的包名
adb shell pm list packages -s //列出系统应用的包名 -s=system系统			
adb shell pm list packages -3 //列出第三方应用的包名
adb shell pm list packages <关键词> //根据关键词搜索包名

1.3.3.5、打开应用查看包名以及打开页面的名称

//activity页面 findstr根据字符串进行查找 mResumed当前显示的Activity页面
adb shell dumpsys activity | findstr mResumedActivity 
adb shell dumpsys activity | findstr mFocusedActivity 

1.3.3.6、登陆设备shell

adb shell //因为Android手机的内核就是一个轻量级的Unix内核,可以进行命令行式的交互要退出交互式 shell,按 Ctrl + D 键或输入 exit
adb shell <command命令> //后面加<command命令>将是直接运行设备命令, 等同于执行远程命令

1.3.3.7、adb logcat

Android的Java 崩溃基本都会包含着这个字段FATAL EXCEPTION

adb logcat -v time process | findstr 包名 > D:/log/aa.txt(v表示详细程度-v –v -v) //获取某个应用的日志输出到本地文件中
adb -s 设备名称 logcat -v time process | findstr 包名 > D:/log/bb.txt //有多台设备时adb选择设备 -s
adb logcat *:W //显示所有优先级大于等于“warning”的日志//-- V : Verbose (明细);//-- D : Debug (调试);//-- I : Info (信息);//-- W : Warn (警告);//-- E : Error (错误);//-- F: Fatal (严重错误);//-- S : Silent(Super all output) (最高的优先级, 可能不会记载东西)

1.3.3.8、清除应用缓存

adb shell pm clear <packageName> //清除应用数据和缓存

1.3.3.9、截图

adb shell screencap /sdcard/screen.png
//然后可以使用 adb pull /sdcard/screen.png copy下来
//前两年的直播答题就是利用不断的截屏和图像分析完成的

1.3.3.10、录制屏幕

screenrecord 实用程序的局限性:
● 音频不与视频文件一起录制。
● 不支持在录制时旋转屏幕。如果在录制期间屏幕发生了旋转,则部分屏幕内容在录制时将被切断。

adb shell screenrecord /sdcard/demo.mp4
//按 Ctrl + C 键(在 Mac 上,按 Command + C 键)可停止屏幕录制;如果不手动停止,到三分钟或 --time-limit 设置的时间限制时,录制将会自动停止。

1.3.3.11、启动停止adb

adb start-server //启动adb
adb kill-server //停止adb

1.3.4、随机压力测试Monkey

1.3.4.1、Monkey介绍

Monkey就是猴子,Monkey测试,就像一只猴子, 在电脑面前,乱敲键盘在测试。猴子什么都不懂,只知道乱敲(随机测试)
通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压力测试(足够多次),检测程序多久的时间会发生异常

1.3.4.2、Monkey的用途

Monkey 主要用于Android 的随机压力测试,是一个自动的压力测试小工具,主要目的就是为了测试android app是否会Crash(崩溃)

1.3.4.3、Monkey命令详解

adb shell monkey -p <packageName> --ignore-crashes --ignore-timeouts --throttle 100 --pct-touch 50 --pct-motion 50 --pct-syskeys -v -v -v -s 666 1000 >D:\login\monkey.log

在这里插入图片描述

1.3.4.4、Monkey实例

● -p 指定应用的包名
● --throttle事件之间的延时毫秒 一般100
● --ignore忽略-crashes崩溃,默认情况下monkey遇到crash会自动退出
● --ignore-timeouts超时,默认情况下monkey遇到超时自动退出
● --pct分配-touch点击事件,70—>70%
● --pct-motion滑动事件,20—>20%
● --pct-syskeys 系统事件比例
● -v -v -v日志详细程度
○ verbose详细
● -s=seed种子 ,复现bug,种子一样monkey事件一致的1.3.4.5、Monkey异常日志分析
Monkey 测试出现错误后,一般的分析步骤:
● 看Monkey的日志
○ 程序无响应的问题: 在日志中搜索 “ANR”
○ 崩溃问题:在日志中搜索 CRASH/Exception(例如果出现空指针NullPointerException)
■ Monkey 执行中断,在log最后也能看到当前执行次数
在这里插入图片描述

1.3.5、app性能数据

1.3.5.1、CPU

adb shell top //获取全部CPU信息
adb shell dumpsys cpuinfo //查看手机整个CPU消耗
adb shell dumpsys cpuinfo | findstr <packageName> //查看应用CPU消耗

在这里插入图片描述
PID:progress identification,应用程序ID
进程的状态:其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数
THR:程序当前所用的线程数 thread
VSS:Virtual Set Size虚拟耗用内存(包含共享库占用的内存)
RSS:Resident Set Size实际使用物理内存(包含共享库占用的内存)
PCY:前台(foreground)和后台(background)进程
UID:User Identification,用户身份ID
Name:应用程序名称

1.3.5.2、内存

adb shell dumpsys meminfo <packageName> //查看某个应用内存使用情况

在这里插入图片描述
dalvik:dalvik使用的内存
native:native堆上的内存,指C\C++堆的内存(android 3.0以后bitmap就是放在这儿)
other:除了dalvik和native的内存,包含C\C++非堆内存······
Pss:该内存指将共享内存按比例分配到使用了共享内存的进程
allocated:已使用的内存
free:空闲的内存
private dirty:非共享,又不能被换页出去的内存(比如linux系统中为了提高分配内存速度而缓冲的小对象,即使进程已经退出,该内存也不会被释放)
share dirty:共享,但有不能被换页出去的内存

1.3.5.3、启动时长

手机APP的启动时长是一个很容易被用户感知的性能指标,启动时长过长会让用户极不愿意继续等待。因此启动时长是一项比较靠前的性能指标。
APP的启时长分为两种情况:
一种是冷启动时间(通常是系统重启,即在启动前没有该App进程的情况)
一种是热启动,即App从后台被切换到前台(点back退出后再点击图标启动)

adb shell dumpsys activity | findstr mFocusedActivity //查看当前显示界面所属包名及名称

在这里插入图片描述

adb shell am start -W com.kwad.kwadsdk/com.kwad.demo.open.splash.TestSplashScreenViewActivity

在这里插入图片描述
WaitTime:就是总的耗时,包括前一个应用Activity pause的时间和新应用启动的时间
ThisTime:表示一连串启动Activity 的最后一个 Activity 的启动耗时
TotalTime:表示新应用启动的耗时,包括新进程的启动和 Activity 的启动,但不包括前一个应用Activity pause 的耗时。也就是说,一般只要关心 TotalTime 即可,这个时间才是自己应用真正启动的耗时
总结:这种测试方法简单容易,并且可以准确的计算出系统启动这个Activity的时间。但是缺点是不包括点击icon到系统接收到消息的时间,也就是说这个时间并不能完整的模拟用户操作场景的启动时间

1.3.5.4、帧率——有无卡顿

手机帧速率(fps)是帧速率也称为FPS(Frames Per Second)的缩写——帧/秒。
手机帧速率是指每秒钟刷新的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次。
如果具体到手机上就是指每秒钟能够播放(或者录制)多少格画面。同时越高的帧速率可以得到更流畅、更逼真的动画。
每秒钟帧数(FPS)越多,所显示的动作就会越流畅。捕捉动态视频内容时,此数字愈高愈好。
进入开发者选项 开启GPU呈现分析:各种颜色的线表示渲染这一帧用了多长时间,时间越长表示卡顿明显,绿色横线为标准线,app流畅运行应该在标准线以下。
https://www.zhihu.com/question/288980837

1.3.5.5、获取电量

adb shell dumpsys battery //查看电量
adb shell dumpsys battey set status 1 //将充电模式改为非充电模式,status=2代表充电

在这里插入图片描述
有的手机设置菜单里面会有流量和电量统计类,只需在测试前后记录下电量值,亦可获取消耗电量数值。

1.3.6、真机测试

● 数据线依次连接手机与电脑(原装数据线)
● 打开设置,找到关于手机,连续点击8—10次版本号,打开隐藏的开发者模式
● 进入开发者模式,开启开发者选项及USB调试选项
● 状态栏中USB传输切换为“传输文件”或“传输照片”
● 界面弹出是否允许USB调试时,选择确认
● 执行adb devices查看手机与电脑是否连接
● 注意:以上操作如果电脑与手机还不能够连接,电脑上下载对应手机助手软件(例如华为手机助手,Oppo手机助手),使用手机助手连击,驱动将会自动安装到电脑上,再次使用adb指令依次杀死adb和打开adb即可连接(推荐360手机助手)

二、IOS

iOS是由苹果公司开发的移动操作系统。苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad上。iOS与苹果的macOS操作系统一样,属于类Unix的商业操作系统。

2.1、IOS架构

在这里插入图片描述
● UI层: 主要有SpringBoard、Spotlight等UI交互界面
● 应用框架层:主要有 Cocoa Touch
● 核心框架层:主要有 OpenGL、Quartz等图形、多媒体组件
● Darwin:操作系统核心,包括XNU内核和UNIX shell

2.2、手机品牌国内占比

在这里插入图片描述

2.3、IOS系统版本占比

在这里插入图片描述

2.4、IOS日志查看

● 在mac电脑上,直接使用xcode工具(ios开发的工具)进行查看
● 在windows电脑上,可以下载安装itools,通过itools—工具箱,工具箱中有一个实时日志和崩溃日志,查看
在这里插入图片描述

2.5、IOS monkey了解

https://blog.csdn.net/czc1009/article/details/49513359

三、手机云端兼容性测试

Android App兼容性测试,是一个比较重要的App评价内容,兼容性测试主要是对App在各类机型上的兼容、适配等情况进行测试。搞清楚这一阶段的测试重点后,因此,Android App在进行兼容性测试前,一定要做好其前序测试内容,否则兼容性测试效果将会较差。
在这里插入图片描述

3.1、机型适配问题

Android兼容测试一定要做到宽范围覆盖,如果做不到这个,那么就违背了兼容性测试的目标——测试App在各类机型、系统上的运行是否兼容、适配。
因此,兼容性测试必须要在各个机型、系统上对App进行运行、测试,查看相关UI是否适配、功能是否正常。所以,必须要为兼容性测试配备尽可能多的机型。这是不是意味着,你的公司要去购置各类机型设备?当然不是。对于一般的公司或者开发者,这将会是一大笔开销,为了节约资金而造成进行覆盖率较低的话,则失去了兼容性测试的意义。另外,这也是没必要的,因为往往你就一个或两三个App,为了这少量App测试,而去购置如此大量的设备,无疑是一种资源浪费。除此,还有一个原因,将在兼容性测试如何展开里去说。除此,机型量的多少也是一个权衡的过程,目前,通用的兼容性测试一般覆盖Top100-300的机型,对于实在是小量机型或者老旧机型,用户量非常小,在一定程度上,是否需要覆盖则需要权衡,总的来说,Top排名的手机基本足够。

3.2、兼容性测试如何展开

这是一个经验性的过程,可以去借鉴业界大型互联网公司的成熟App的测试方法。目前,无论是国际知名App,还是国内知名App,谷歌、Facebook,BAT等,他们都有大量的App对外推出,对于App兼容性要求非常高,因此,他们的做法是非常值得借鉴的。这些公司的兼容性测试,都有一个相同的解决方案,那就是自动化测试框架与平台的实现。通过浏览上述公司在各种大会公布的内容,或者通过论坛知识分享,都能看到,他们不仅有自己的测试实验室,拥有大量的手机,除此,还有一整套的自动化测试平台,来完成兼容性测试。
目前很多的公司,已经提供了兼容性云测服务,例如TestIn、TestBird,除此,大型公司也对外推出自己的测试工具,比如谷歌、腾讯WeTest、百度MTC、阿里MQC等等…

举例腾讯WeTest使用:
1.使用QQ登录腾讯WeTest
2.选择云测兼容性,上传测试的apk文件,选择机型,等待2-4小时,查看兼容性测试报告

3.3、App崩溃率标准

在这里插入图片描述

四、第三方应用性能测试

4.1、PerfDog之Android/IOS/小程序测试

在这里插入图片描述
在这里插入图片描述

4.2、SoloPi之android/IOS测试

(业界大多采用perfdog与solopi收集分析客户端性能指标,但由于性能狗不仅支持收集客户端性能数据,还支持小程序测试;由于工作原因:听说快手新组成了一个名为“最懂小程序的小程序团队”,故个人偏向性能狗稍多些)
SoloPi也是一个不错的选择,这里不再赘述。

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

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

相关文章

[iPhone高级] 基于XMPP的IOS聊天客户端程序(IOS端三)

前两篇介绍了如何通过XMPP来发送消息和接收消息,这一篇我们主要介绍如何来美化我们的聊天程序,看一下最终效果呢,当然源程序也会在最后放出 好了,我们来看一下我们写的程序 这里我们自定义了TableViewCell 一行是显示发布日期,一行是显示发送的消息,还有一个是背景 -(id…

写综述如何降低查重率?

经过好几个月的打磨&#xff0c;论文终于写完了&#xff0c;你以为这就完事了&#xff1f;MO!下面就来到了很重要的一步——查重。很多小伙伴写完后还蛮开心的&#xff0c;可是看到这查重率&#xff0c;很多人是欲哭无泪。辛辛苦苦写的综述怎可重复率那么高&#xff01;重复率过…

多智能体强化学习-G2ANet

Multi-Agent Game Abstraction via Graph Attention Neural Network 论文地址 代码地址 摘要 本文通过一个完整的图来建模智能体之间的关系&#xff0c;并创新性地提出一种基于两阶段注意力网络&#xff08;G2ANet&#xff09;的游戏抽象机制&#xff0c;表明两个智能体之间…

chatgpt赋能python:Python画轨迹图:认识、用法与优势

Python画轨迹图: 认识、用法与优势 Python的数据可视化能力十分强大。画图工具虽然千千万&#xff0c;但其中&#xff0c;轨迹图是同时准确又美观的图形表现。本文将向读者介绍Python画轨迹图的好处、如何使用以及如何在项目合适的地方使用轨迹图。 了解Python轨迹图 为了更…

爬取古诗文网的推荐古诗

爬取古诗文网的推荐古诗 思路分析完整代码结果展示 思路分析 本次的主要目的是练习使用正则表达式提取网页中的数据。 该网站的推荐古诗文一共有10页&#xff0c;页码可以在URL中进行控制&#xff0c;比如说&#xff0c;下面的URL指的是第一页。 https://www.gushiwen.org/def…

Python程序写诗【训练1分钟】古诗生成

原创AI程序写诗&#xff1a;训练 一分钟&#xff0c;诗词一秒成&#xff01; 先看看写出来什么诗~ 文章目录 来看看程序语料下载地址关于程序的一些基础更多诗词创作山水田园宫廷别塞战争抒情春节 来看看程序 from gensim.models import Word2Vec # 词向量 from random impor…

最全中华古诗词数据库,收录30多万诗词

诗词诗人数据库 mysql文件 收录13136个诗人 305131个诗词&#xff0c;还有诗词赏析和注解等&#xff0c;需要的同学可以下载 可以搜索微信小程序 诗词成语大全 看数据效果 下载地址 人们习惯用史料来描述文学史的高峰状态&#xff0c;而在当今大数据时代&#xff0c;我们或可尝…

Python爬取古诗词

一、需求 爬取网址&#xff1a;https://www.gushiwen.org/ 需求&#xff1a; &#xff08;1&#xff09;获取侧边栏【类型】信息&#xff1b; &#xff08;2&#xff09;获取每个类型中古诗文详情页信息&#xff1b; &#xff08;3&#xff09;提取详情页数据&#xff1a;古诗…

最新C#调用Google即时翻译

主要是调用谷歌的翻译API进行翻译&#xff0c;WebRequest的请求&#xff0c;将获取到的翻译提取出来。下面上代码 需要用到一个的js文件&#xff1a;对获取到数据的过滤&#xff0c;命名为gettk.js var b function&#xff08;a&#xff0c;b&#xff09;{for&#xff08;var…

机器自动翻译古文拼音 - 十大宋词 - 江城子·乙卯正月二十日夜记梦 苏轼

【苏轼】江城子乙卯正月二十日夜记梦||纪录片剪辑 江城子乙卯正月二十日夜记梦 宋苏轼 十年生死两茫茫&#xff0c;不思量&#xff0c;自难忘。 千里孤坟&#xff0c;无处话凄凉。 纵使相逢应不识&#xff0c;尘满面&#xff0c;鬓如霜。 夜来幽梦忽还乡&#xff0c;小轩窗&…

汉译英翻译,中译英翻译古诗词有哪些要求?

作为中华民族优秀传统文化的代表——中国古诗词&#xff0c;受到了越来越多翻译人员的关注&#xff0c;将中文古诗词翻译成英文&#xff0c;对于促进中国古典文化在西方的传播有重大意义。那么&#xff0c;在中译英翻译过程中&#xff0c;如何才能准确翻译古诗词?提升古诗英译…

机器自动翻译古文拼音 - 宋词 - 桂枝香 金陵怀古 王安石

桂枝香金陵怀古 北宋王安石 登临送目&#xff0c;正故国晚秋&#xff0c;天气初肃。 千里澄江似练&#xff0c;翠峰如簇。 归帆去棹斜阳里&#xff0c;背西风&#xff0c;酒旗斜矗。 彩舟云淡&#xff0c;星河鹭起&#xff0c;画图难足。 念往昔、繁华竞逐&#xff0c;叹门外…

机器自动翻译古文拼音 - 十大宋词 - 水调歌头 明月几时有 苏轼

水调歌头明月几时有 北宋苏轼 明月几时有&#xff0c;把酒问青天。 不知天上宫阙&#xff0c;今夕是何年。 我欲乘风归去&#xff0c;又恐琼楼玉宇&#xff0c;高处不胜寒。 起舞弄清影&#xff0c;何似在人间&#xff1f; 转朱阁&#xff0c;低绮户&#xff0c;照无眠。 不应…

5.5 万首唐诗、26 万首宋诗、2.1 万首宋词 Python助力中华古典文集数据库

熟悉橡皮擦的朋友都知道&#xff0c;橡皮擦最爱写的文章是关于 Python 的&#xff0c;但是呢&#xff0c;橡皮擦确实是一个产品经理&#xff0c;哈哈&#xff0c;所以每次给大家分享 Python 相关知识的时候&#xff0c;总想着自己是一个前端工程师&#xff08;好迷糊&#xff0…

模拟登录古诗词网

主要思路&#xff1a; 对登录界面发送请求&#xff0c;网址&#xff1a;https://so.gushiwen.cn/user/login.aspx?fromhttp://so.gushiwen.cn/user/collect.aspx由于该网址密码输错三次会有验证码&#xff0c;我们就需要第三方平台帮忙破解验证码。小编采用的斐斐打码平台&am…

随机古诗词

利用HTML CSS js 制作的随机游戏 <html> <head><meta charset"utf-8" /><title>随机古诗词</title><style>#box {width: 1000px;margin: 0 auto;background: rgb(3, 0, 7);color: rgb(11, 160, 224);height: 1000px;line-height…

机器自动翻译古文拼音 - 十大宋词 - 声声慢 寻寻觅觅 李清照

声声慢寻寻觅觅 宋李清照 寻寻觅觅&#xff0c;冷冷清清&#xff0c;凄凄惨惨戚戚。 乍暖还寒时候&#xff0c;最难将息。 三杯两盏淡酒&#xff0c;怎敌他、晚来风急。 雁过也&#xff0c;最伤心&#xff0c;却是旧时相识。 满地黄花堆积&#xff0c;憔悴损&#xff0c;如今…

app 上架到苹果应用商店

https://appstoreconnect.apple.com/ 登陆 可供销售 就是我的app提交申请并通过的状态 添加新建APP 信息 填写完就创建 按照提示进行填写 注意上传图片可以用苹果手机截屏 在做作图软件 做成需要得像素上传 重点记录 构建版本&#xff08;别的挺简单&#xff09; 打开m…

【考研初试】问题汇总及解答

●信息搜集 Q&#xff1a;哪里可以找考研资料&#xff1f; A&#xff1a;wx公众号、b站、知乎、csdn、王道论坛&#xff08;计算机考研&#xff09; &#xff08;资料一般是以百度网盘链接的形式分享&#xff0c;其实找网课视频最方便的是找到那种定期更新资料的网盘群&#x…

复试-专业问题

这是我的学长&#xff0c;SDZ学长整理&#xff0c;我就发出了&#xff0c;如果你们有幸去了浙大软科记得谢谢他&#xff0c;哈哈哈 这两种方法在形式上相像&#xff0c;其区别在于&#xff1a;pa是指针变量&#xff0c;a是数组名。值得注意的是&#xff1a;pa是一个可以变化的…