当前位置: 首页 > news >正文

实战|智能家居行业移动应用性能分析

随着移动互联网和物联网技术的成熟,智能家居再度成为全球制造业转型升级的焦点,传统制造业巨头和新兴互联网巨头纷纷布局,据调研机构statista数据显示,截至2016年10月,全球智能家居市场收入为168.17亿美元,中国市场仅次于美国,达到11.84亿美元。未来几年,中国智能家居产业的复合增长率预计为每年62.5%,到了2021年市场规模将达134.29亿美元。

图片描述

而早前一份中国智能家居行业的调查数据显示,虽然用户对智能家居的感兴趣程度高达95.2%,但却有87.5%的用户对智能家居现状不满,表示跟预期完全不符、或低于预期,智能家居的“智能化”仍停留在家庭设备的联网协同上,远没有真正提升人们的生活感受,最直观的表现就是智能家居APP的用户体验差。应用作为人机交互的全新入口,其用户体验的重要性随着智能设备的普及越来越重要,那么如何才能通过持续优化用户体验,提高用户满意度,提升用户留存等关键业务指标呢?

下面就由云智慧应用性能优化专家跟大家聊聊智能家居行业移动应用性能分析的那些事,内容分为三方面:1、行业APP常见性能问题;2、行业APP应用性能对比;3、APP应用性能诊断分析。
行业APP常见性能问题

春节将至,大家最关注的一件事就是抢火车票,然而12306的官方应用很难用,我们模拟春运抢票的付款场景:

图片描述

是什么原因导致这种问题呢?利用透视宝对主流移动应用进行诊断,发现以下几个维度出现了问题:关键业务流程慢、页面交互响应慢、登录缓慢、支付缓慢失败、图片加载失败等等。原因可能有:兼容性问题、网络问题、资源加载慢等情况。影响结果:订单成功率下降、支付成功率下降、用户体验不好、用户流失……

你知道看起来不起眼的APP交互性能慢会造成多少用户流失吗?

图片描述

一项移动用户调查显示,60%的用户会对加载时间超过 3 秒钟的APP失去兴趣,74%的受调查者表示等待时间不会超过 5 秒钟,当遇到一个性能表现很差的APP应用时,1/3 的受访者表示将转向竞争对手的应用,性能问题会造成平均每天5%的用户流失!

产品经理或运营同学也许会希望通过用户反馈来优化用户体验、改进产品,然而数据显示这并不靠谱,下面再来看一下有多少用户遇到问题会反馈给我们的客服:

图片描述

200万的用户样本中,透视宝监测到有22%的用户遇到了糟糕的用户体验,却只有2%的用户会进行意见反馈,剩下的用户要么是默默忍受,要么转身离开。所以,我们需要持续不断的进行模拟用户行为测试,持续不断的提升APP用户体验!

为了及时、准确的发现APP的性能问题,为APP提供改进和优化建议,云智慧智能家居行业客户基于以下关键业务环节:

l 智能商城:在APP端嵌入H5页面,灵活展示所有智能家居产品,通过商城查看产品详情、下单与付款;

l 智能设备:展示设备遥控面板,可以增加多个设备,并通过控制面板遥控智能家居设备。

对APP测评提出了以下要求:

Ø 通过同行业APP的横向性能比较,了解行业用户对性能的平均容忍度;

Ø 通过不同纬度的测评分析报告,为APP改进和优化提供支撑依据;

Ø 通过测评准确定位产品缺陷、问题,提升APP用户体验,提高业务营收;

Ø 通过测评分析优化APP性能,提升行业竞争力排名,最终提高产品竞争力;

针对客户的行业特点和需求,我们制定的测试方案如下:

1、 在参测产品APP端植入透视宝Smart SDK,进行客户端真实用户体验数据的实时采集;

2、 通过监控宝对客户产品和竞品的服务接口质量按照重点地域进行监测;

3、 在150部手机上安装参测产品,用不同账户对所有功能页面进行反复点击,对关键业务流程:登录、设备与商城页面进行代码级性能检测。

在测试开始之前,先设定几个小目标:

² 用1分钟查找终端用户与APP最热门的交互视图与最慢的交互视图;

² 用3分钟定位APP崩溃问题与原因;

² 用1分钟定位影响APP加载缓慢的原因;

行业APP应用性能对比
首先,核对客户产品与竞品APP相同的关键业务,如:设备、商城; 然后,通过抓包工具获取客户与竞品APP关键业务的相关数据,如url接口、参数等;最后,使用监控宝API、网页监控对设备接口与商城H5页面进行监控,监控周期为3天;经过对所有数据的响应时间进行加权平均获取整体性能指标数据,具体如下图:

图片描述

从图中我们可以看出:智能家居行业整体应用性能在13.81 s,而客户产品(图中蓝色线)的整体应用性能的平均值却远高于竞品性能,整体性能越差对终端用户体验的影响越大。
通过监控宝的监测点,按照客户提供的主要业务区域进行各个产品页面与API接口的区域用户体验监测,整体结果如下:

图片描述

客户产品(见中间截图)在被测省份的整体访问体验基本在20 s以上,而竞品4在被测省份的整体体验基本在10 s以下。通过对比得出结论,客户产品要想在竞争中脱颖而出,产品应用性能的优化已经迫在眉睫。

透视APP应用性能分析

经过一轮模拟测试,透视宝对客户app给出了整体性能评分:

图片描述

从评分可知,客户产品问题主要集中在页面响应时间过慢、产品崩溃率较高,另外有部分用户出现http错误与网络失败的问题,具体到代码级的问题总结一下:

1、慢交互:监测发现群组聊天页面加载缓慢:ImGroupChatViewController (群组聊天) 平均耗时:1278s 出现一条慢的请求;
2、崩溃:150个终端用户中有31个终端共发生了64次崩溃,崩溃最高的版本为2.6.1。通过视图看到:

miui..POWER_HIDE_MODE_ACTIVITY 在应用版本2.6.1中崩溃次数高达31次,影响用户9人 com..uplus.ui.activity.WebActivity 在应用版本2.6.1中崩溃次数高达7次,影响用户5人 com.*.ui.activity.ServiceActivity$10 在应用版本2.6.4中崩溃次数高达5次,影响用户3人

3、页面加载缓慢:多个行为页面加载缓慢,体验糟糕,这些慢的视图如下:

com..uplus.ui.activity.MyInfoActivity(我的钱包) 平均耗时:12s 受影响用户数:80人 com..uplus.ui.activity.UPlusMainActivity(设备) 平均耗时:9s 受影响用户数:65人 com..uplus.ui.activity.WebActivity(首页) 平均耗时:6s 受影响用户数:102人 com..uplus.ui.activity.LoginActivity(登录) 平均耗时:4s 受影响用户数:138人

第一个目标:用1分钟查找终端用户与APP最热门的交互视图与最慢的交互视图。

图片描述

在这张图中能够直观的看到:
执行过慢的视图分别是ImGroupChatViewController (群组聊天)、 LoginViewController(登录)、ServiceTableViewController(服务表)、PersonalData(个人资料),执行时间均大于600ms,结合访问次数与产品规划可知,上述视图也是用户经常访问的。

图片描述

这是APP群组聊天的界面,对ImGroupChatViewController (群组聊天)进行深入分析:

图片描述

能够看到响应慢用户的手机信号、cpu与内存信息以及页面各个请求相关数据。经过1分钟的分析发现:单个视图的加载超过400ms即视为慢交互,该视图最慢的请求http://accesshall.mggame.com....执行时间为1005ms,需要做相应的优化。

第二个目标:用3分钟定位崩溃问题与原因。

透视宝崩溃分析能帮助用户追踪移动应用崩溃的堆栈、进程等信息,从而快速定位并解决问题。首先,介绍的是本轮测试崩溃概览:

图片描述

本轮测试受崩溃影响的用户有31位,崩溃次数为64次,崩溃率最高的版本是2.6.1; 崩溃最高的设备是Samsung SM-G9008V、iPhone 6Plus,崩溃最高的系统版本是Android 5.0。

崩溃地区分布:

图片描述

受崩溃影响最多的地区是山东、河北、北京等地区。

崩溃问题统计:

图片描述

本次测试受崩溃最多的类型为:android.content.ActivityNotFoundException,对应的版本为2.6.1,受影响用户有9位、崩溃次数是31次,对该崩溃问题进行性能定位与原因分析:

图片描述

造成Crash的代码为:点击com.imohoo.***.ui.first.GuideActivity$4时,发现处理行为视图:miui.intent.action.POWER_HIDE_MODE_ACTIVITY没有响应,受影响的APP版本为2.6.4,设备名称是小米手机、操作系统是Android 4.4.4 以及相关的cpu使用与内存占用数据。用户在操作APP时出现崩溃,操作轨迹是“打开启动页”与“com.imohoo.shanpao.ui.first.GuideActivity$4”页面交互后发生了Crash。

最终,我们用了3分钟定位到崩溃问题发生的终端用户硬件信息、代码线程反馈等信息。

第三个目标:用1分钟定位影响用户使用APP行为加载缓慢的原因。

透视宝用户行为分析能够根据用户使用App时执行的每个行为动作,从行为的角度来分析App的性能和用户受影响的情况,常见的如:加购物车、下订单、结算等。首先看一下用户行为相关性能数据:

图片描述

本次测试用户使用最多、平均耗时最多的业务依次为:设备、首页、登录等,平均耗时均超过了用户可容忍时间2000 ms,列举平均耗时较多的设备功能影响用户相关的数据:

图片描述

可以看到:本次测试用户遥控智能家电使用最多的终端设备为:Samsung SM-G9008V,系统版本为android 5.0,接入方式最多的是WIFI。影响设备运行缓慢的请求数据如下:

图片描述

设备视图com..uplus.ui.activity.UPlusMainActivity缓慢的请求主要是.net:7500/emuplus/secuag/common/appversion,耗时16466ms。针对缓慢请求从两方面进行分解:1、对请求响应时间进行分解,排除网络环境的原因;2、通过该请求页面直接到后端代码、服务、数据库进行详细分析,并定位慢元素与慢SQL语句。

图片描述

响应时间趋势图

图片描述

PHP代码追踪图

追踪到后台服务,我们发现影响请求缓慢的原因是mysql_query,响应时间达到5902.05ms:

图片描述

最终定位到对应的SQL语句。此时,我们用了1分钟时间发现影响加载缓慢的最终原因。
智能家居APP性能测试总结
一、首页启动速度:启动过程中做的事情越少越好(尽可能将多个接口合并),不在UI线程上作耗时的操作(数据的处理在子线程进行,处理完通知主线程刷新界面),在合适的时机开始后台任务(例如在用户指引界面就可以开始准备加载的数据),尽量减小包的大小。优化方法:量化启动时间,启动速度模块化。

二、页面浏览速度:json的处理(iOS自带的NSJSONSerialization库以及常用第三方库JSONKit以及SBJson),数据的分页(后端数据多的话,就要分页返回,例如网易新闻,或者 微博记录),数据压缩(大数据也可以压缩返回,减少流量,加快反应速度),内容缓存(例如网易新闻的最新新闻列表都是要缓存到本地,从本地加载,可以缓存到内存,或者数据库,根据情况而定),延时加载tab(比如app有5个tab,可以先加载第一个要显示的tab,其他的在显示时候加载,按需加载),算法的优化(核心算法的优化,例如有些app 有个 联系人姓名用汉语拼音的首字母排序) 。

三、数据库的优化:数据库设计上面的重构,查询语句的优化,分库分表(数据太多的时候,可以分不同的表或者库)。

图片描述

经过针对性的优化,客户APP在崩溃、响应时间、网络等方面得到了非常好的性能提升,透视宝整体性能评分得到了大幅度提升。

我们还有更多更温暖的体验

今年11月,透视宝新增加业务拓扑功能,通过业务拓扑图可以对关键业务环节的性能信息进行实时展示,并对业务的健康度,应用,事务,数据库,调用者和主机等关系到具体业务的性能数据进行综合分析,确保业务健康和用户体验的持续提升。

图片描述

相关文章:

  • html5--6-23 CSS3中的文字与字体
  • activity theme parent 属性浅析
  • Filter过滤器,Interceptor拦截器,ControllerAdvice,Aspect切片
  • php调用系统命令如何获得输出结果
  • 实现一个websocket服务器-实践篇
  • 分布式架构高可用架构篇_04_Keepalived+Nginx实现高可用Web负载均衡
  • ABP理论学习之缓存Caching
  • Linux GPIO控制方法
  • “双十二”:“交互+交易+交付”融合运营为王
  • 直接拿来用,最火的.NET开源项目
  • FAQ宝典之Rancher Server
  • Kali Linux渗透测试实战 2.2 操作系统指纹识别
  • Git:pull --rebase 和 merge --no-ff
  • 数据库模块(2天)(sql基础主键,外键,唯一索引)最重要连表查询
  • Neo4j embedded例子
  • CODING 缺陷管理功能正式开始公测
  • eclipse的离线汉化
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • Java IO学习笔记一
  • mysql_config not found
  • PV统计优化设计
  • Spring框架之我见(三)——IOC、AOP
  • text-decoration与color属性
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 搭建gitbook 和 访问权限认证
  • 工作中总结前端开发流程--vue项目
  • 构建工具 - 收藏集 - 掘金
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 阿里云API、SDK和CLI应用实践方案
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (一) storm的集群安装与配置
  • (一)为什么要选择C++
  • ****Linux下Mysql的安装和配置
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .net Application的目录
  • .NET DataGridView数据绑定说明
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • [AIGC codze] Kafka 的 rebalance 机制
  • [C++]C++入门--引用
  • [C++]类和对象【下】
  • [dart学习]第四篇:函数
  • [Django 0-1] Core.Email 模块