APP测试--含【学车不】项目实战

本文参考黑马程序员以下课程;

1-002-App应用架构_哔哩哔哩_bilibili


1. APP环境

1.1 app应用系统架构

        json是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来储存和表示数据

1.2 app 后台开发测试环境

预发布环境:

        使用后端的测试代码,连接生产环境的数据库来进行测试(非必须)

        目的是测试最新的代码,对于线上复杂数据的处理情况

注意点:

        预发布环境只针对基本的业务进行测试(并非全部业务)

        测试写的业务操作时,只能使用自己构造的数据

        升级涉及到表结构变更时,可以讲生产环境数据库数据备份到测试库中,升级并测试

预发布环境过后,正式发布生产环境之前,一般会进行灰度发布

        灰度发布:由于一个项目,一般线上部属时多台机器运行,所以灰度1台至三台,看看新功能是否OK,如果失败择只需要回滚几台,比较方便

灰度分布注意点:

        一般情况下且一小部分流量

        验证时间一周至一个月之间

        如果运行无问题,在流量少的时刻,不停机更新服务器环境

        如果运行有问题,尽快定位问题,并修复问题,如果问题比较严重,需要回滚代码,保障线上用户正常使用

1.3 app前台发布测试环境(app应用分布)

        先打包提测

应用内测分发平台:不同的功能有对应的二维码

应用线上发布平台:

        1.提交app包到平台审核,

        2,给每个app包分配平台号

        3,将平台号打包到对应的app包中

        4,正式提交发布

线上发布平台:

        APK/ipa测试完成

        提交应用市场审核

        添加渠道号

        渠道包测试

        正式上线

2 开发模型

敏捷实践举例--scrum(敏捷开发框架之一)

scrum敏捷开发流程:

        产品负责人收集需求,转化为产品功能列表

        启动迭代的计划会,评审产品功能列表,挑选优先级高的需求作为迭代任务

        项目组成员完成迭代任务的开发、测试工作

        迭代结束后,开评审会,评估当前迭代任务的完成情况

        开反思会、总结迭代过程中的好的与不好的地方

        下一迭代,虚幻2-5步

        sprint:一个最小的开发周期(一个迭代周期),需求分析-涉及-编写-测试-发布

        backlog:产品功能列表

        scrum相关的三个角色:产品负责人:收集需求,转化为产品功能列表,并进行优先级的排序;项目经理:保障项目稳定运行,排除干扰;项目组:开发人员、测试人员、UI设计人员、保证项目的正常开发        

APP应用测试流程:

        1.参与需求评审

        2.编写测试计划和测试方案

        要测试的功能模块

        测试人员分工和时间安排

        测试环境

        测试策略

        风险评估

        3.编写测试用例并组织用例评审

        测试点评审

        4、执行测试用例,跟踪缺陷解决

        冒烟测试用例,开发执行

        5.编写测试报告

        邮件形式

        覆盖功能模块

        测试用例覆盖率

        缺陷统计/遗留缺陷情况

        是否允许上线

3 项目实战

3.1 【学车不】app项目介绍

 3.2 App测试要点

        对于app项目测试,一般进行系统测试

        系统测试的要点一般包括如下方面

        功能测试

        兼容性测试

        安装、卸载、升级测试

        交叉事件测试

        push测试

        性能测试:CPU、内存、流量测试、电量测试、流畅度测试、启动速度

        用户体验测试

        稳定性测试

补充:

        经过上述各方面的充分测试后,并产生测试报告后,APP就可以上线

        版本的上线需要注意:用户反馈跟踪(用户体验bug--建议bug)、线上bug处理(不太严重:定位,在后续版本解决;严重:回滚版本),版本优化(在新版本中发布)

3.3 业务功能测试

显性需求:

        根据软件说明,设计文档或用户需求验证APP的各个功能的实现

隐形需求:

        相关业务:功能影响到的相关业务

        其他角度:分支流程、逆向操作、异常操作

        补充精简:测试策略、业务知识、测试经验

发布心情的功能:

        发布心情时,包括文字描述、图片、添加的分类

        文字描述可以支持1-2000个字符(0或大于2000),可以包括各国语言、特殊字符、emoji表情、链接等数据(全角半角测试)

        图片不能操作9张(1-9还是0-9待确认)、可以通过相机胶卷或收集拍照方式添加(手机拍照或手机相册)

        添加的分类有且只能有一个

        (隐形需求--相关业务:发表成功后可以在最新的tab中查看心情、发表成功后可以在最新的分类中查看心情内容、发表成功后可以在最新的我的圈子中查看我的心情内容

        隐形需求--异常、分支、逆向思维:发表心情时,网络出现故障,查看发表是否有提示踢错;发表心情时,选择照片后,重新拍照并替换照片,再重新发送,查看发表心情是否能使用最新的照片;编辑完成,点击退出,是否可以保存草稿,并重新使用来发表;图片:GIP图片、长图、全景图;图片大小:高清图--30M、小像素

        隐形需求--补充精简:在发表心情动态时,出现网络切换(WIFI-4G),是否急促发送)

详情页面功能测试(参考微信):

        1.详情页展示用户发布的心情动态 :a.展示内容,包括用户头像(像素高低)、用户名(文字、包含emoji表情、最长用户名)、发布时间(今天、昨天、前天、一周之前、一年之前)、发布动态的文字描述(输入2000个文字,文字中包含各种表情、符号、链接)、发布的图片(图片:GIP图片、长图、全景图;图片大小:高清图--30M、小像素)  、学院绑定的驾校(有绑定、无绑定)

        2.点击“赞”列表中的用户头像(点赞数为0、100、正常),能进入用户主页:a.可以进行点赞或取消点赞的操作

        3. 可以对动态进行评论:评论文字内容不超过200个字符(点赞的个数与评论的个数是否与列表一致)

        4.点击评论内容可以进行恢复或者复制操作:回复文字内容不超过200个字符;可以支持文字回复(包括各种语言、输入法等);可以对回复的内容再次回复

        5.可以对动态进行举报 

反向设计:

        赞:点赞列表的用户头像,能够进入用户主页;点赞后赞的个数加1,列表中展示我的头像;取消点赞之后,赞个数减1,列表中去掉我的头像

        评论:评论1-200个字符;评论格式:表情、特殊字符....

        回复:对评论进行回复、对回复进行回复、回复1-200个字符、回复格式:各种语言和输入法等

        举报:能成功举报

3.4 兼容性测试

兼容测试关注点:

        手机型号:

                覆盖市场主流机型(ANDROID:三星,小米,oppo,华为等)

                考虑APP线上用户机型排名(流量研究院:https://mtj.baidu.com/data/mobile/device)

        系统版本:

                安卓系统:4.4 ,5.1,6.0,7.0

                iso系统:9.x,10.x,11.x,12.x

        屏幕尺寸、分辨率

                分辨率:1080*1920,720*1280

                屏幕尺寸:5.5  ,4.7

        网络:

                2G,3G,4Gwifi

        应用兼容性

                与手机硬件兼容:home键,电源键,音量调节等

                与外部硬件兼容:耳机、蓝牙等

                与操作系统软件兼容:wlan设置、系统时间调节,LBS定位等

                与其他APP兼容:后台在播放音乐的时候,进入动态页面动态视频的播放,系统如何处置

        有时候可以借助第三方兼容性平台进行测试:https://www.testin.cn/;可以线上模拟不同机型测试

3.5 安装卸载升级测试

安装操作关注点:

正常情景

        在不同操作系统版本上安装

        从不同安装渠道安装(APP商城、手机助手、直接下载apk或ipa文件进行安装)

        从不同的安装路径(安装到手机上,安装到SD卡上)

异常情景

        安装时候出现异常(关机、断网),恢复后能否继续安装

        安装时存储空间不足

        安装时手动取消后再次安装

        正在运行时覆盖安装

        低版本覆盖安装高版本

        卸载后安装

卸载测试:

        正常卸载(APP手动卸载,工具卸载)

        运行时卸载

        取消卸载

        卸载异常中断

        卸载后无数据残留

       

升级测试:

        从临近版本升级

        跨版本升级

        不同渠道升级(应用商场、手机助手)

        升级提醒成功(可不提醒、可以提示升级、强制升级)

        应用内升级时非wifi提醒

    升级后要观察升级前的数据正常(当数据结构改变而开发没有处理好时容易出现升级前的数据混乱)

3.6 交叉事件测试

        交叉测试又叫做冲突测试或者干扰测试

        是指一个功能正在执行过程中,另一个事件或操作对该进程进行干扰的测试。例如:在app前台/后台运行同时接听来电或者下载文件等

交叉事件干扰:

        app运行时接打电话

        app运行时接发信息

        app运行时查看应用推送

        app运行时接上蓝夜设备

        app运行时接收文件弹窗提醒

        app运行时旋转屏幕

        app运行时切换网络

        app运行时使用相机、计算器等手机自带应用

        app运行时电量告警。插拔充电器

3.7 push 消息测试

app使用push消息的推送场景:

        产品角度:功能需要,如:资讯类产品的新闻推送、工具类产品的公告推送等

        运营角度:活动运营的需要,如:电商类产品的促销活动;召回用户/提高活跃度等

推送原理:

        1.(pull)客户端主动获取:客户端固定时间主动向服务器获取信息;若有更新信息,则发送到客户端;基于短连接

        2.(push)客户端被动接受:当服务器有更新信息,主动发送到客户端;基于长连接

        3.对比:push方式比pull方式更好;因为1.push方式在满足需求的情况下,更省资源;2.(pull方式)客户端不断检测服务器变化,更废客户端的资源(cpu、网络流量、系统电量)

        push消息推送的实质:当服务器有新消息需要推送给用户时,要先推送给应用app,应用app再发送给用户

        

push消息推送的方式:

        1.操作系统级别的消息推送服务:IOS;Android:C2DM

        2. 调用第三方推送平台

        手机厂商类:小米推送、华为推送

        第三方平台类:友盟推送、极光推送、云巴(基于MQTT)

        BAT大厂的平台推送:阿里云云移动推送、腾讯信鸽推送、百度云推送

        3.自己搭建推送服务器

        好处:功能好、性能好、安全性高

        缺点:成本高

push推送设置:

        APP服务器设置:push消息针对不同的用户群体(主动推送、被动推送)--全部用户、部分用户、特定用户

        手机端设置:push消息推送是否接收通知,提醒位置等

push消息测试关注点:

        push消息是否按指定业务规则发送

        当push消息是针对特定用户时,检查收到Push 与用户身份是否相等

        设置不接收推送信息时,用户是否会收到Push消息

        设置push消息显示的位置,是否与配置一致

        收到push消息,是否能正常打开

        app在前台使用时,收到push消息如何提示

        app在后台使用时,收到push消息如何提示

        app离线,是否能收到Push消息

3.8 性能测试

app性能测试常见指标:

        内存(内存溢出;内存泄露)

        CPU(发热问题)

        流量(通用流量测试方法;常见的流量节省方法)

        电量(基于硬件设备的测试;基于第三方APP的测试)

        启动速度(冷启动;热启动)

        流畅度

性能测试工具介绍--GT

GT使用(注意部分功能需要root权限)

        1.进入AUT界面,选择被测程序和测试指南        

        2,设置参数:点击右上角的“编辑”按钮,然后选中想测试的参数将其拖拽到已关注区域;点击完成按钮,勾选已关注的参数,点击右上角的红点即可开始监控

        3.执行测试之前可以打开日志抓取,方便发送问题时定位

        4.点击开始监控按钮后,打开被测app应用,悬浮窗会出现在你要测试应用上面

        5,   查看数据采集结果

        6,查看运行时日志

CPU:

        GT提供了两个CPU监控指标:CPU和jiffies

CPU 计算公式:

        在linux下.CPU利用率分为用户态、系统态和空闲态

        用户态:表示CPU处于应用程序执行时间

        系统态:表示系统内核执行时间

        空闲态:表示空闲系统进程执行的时间

        CPU使用率=CPU执行非系统空闲进程时间/CPU总的执行时间

Jiffiles:

        表示自开机以来,应用程序消耗的CPU时间片的总数        

 CPU问题产生的影响:

        CPU使用长时间处于90%

        手机发热,耗电量增加

        反应变慢,引起ANR

测试需求:        

        打开学车不app,进入驾考圈-最新tab,上下滑动动态,评论赞操作,CPU指标正常

测试方法:

        1.打开GT工具,配置CPU监控指标(可配置告警阈值)

        2.进入学车app,操作上述业务,观察运行时的CPU指标(app运行时CPU是否有快速飙升、app运行时CPU是否长时间处于90%以上)

        3.查看cpu运行结果

        4.保存CPU详细数据,可以查看CPU详细的数据统计

内存:

        GT工具提供了两个内存的监控指标:PSS和Private dirty        

        Private dirty(私有内存):进程独占内存,也就是进程销毁时可以回收的内存容量

        pss(实际使用内存):将跨进程共享页也加进来,进行按比例计算PSS,这样能够比较准确的表示进程占用的实际物理内存;在进程销毁时不能回收

常见内存问题:

        内存泄露:内存泄露memory leak,是指程序在申请内存后,无法释怀已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被沾光

        内存溢出:内存溢出out of menory,指程序在申请内存时,没有足够的内存空间供其使用,出现out of menory,memory leak会最终导致out of menory

内存问题产生的影响:

        程序实际使用的内存PSS持续增长

        程序出现crash (可能是内存溢出)

测试需求:        

        打开学车不app,进入驾考圈-最新tab,上下滑动动态,评论赞操作,内存指标正常

测试方法:

        1.打开GT工具,配置内存监控指标(可配置告警阈值)

        2.进入学车app,操作上述业务,观察运行时的内存指标(app运行时PSS是否持续增长、app运行时CPU是否出现crash

        3.查看内存运行结果

        4.保存CPU详细数据,可以查看CPU详细的数据统计

流畅度测试:

        GT工具提供了流畅度的监控指标:FPS

        FPS即Frames per second,GPU在一秒内绘制的帧数

        falsh慢的话会有卡顿现象

流畅度问题产生的影响

        想要让大脑觉得动作是连续的,至少每秒10-12帧的速度

        想达到流畅的效果,至少需要24帧

        60帧每秒的流畅度是最佳的,我们的目标是让流畅度能接近60帧每秒

测试需求:        

        打开学车不app,进入驾考圈-最新tab,上下滑动动态(下滑5分钟,再上滑5分钟),记录FPS值(不同于CPU、内存,当页面多为静态时,FPS值很小是正常的,页面数据多为动态加载时,FPS多为动态加载时,FPS值比较答,因此我们选择上下滑动动态这个操作来测试)

测试方法:

        1.打开GT工具,配置流畅度监控指标(在参数项中配置)

        2.进入学车app,操作上述业务,观察运行时的流畅度指标

        3.查看流畅度运行结果

        4.保存CPU详细数据,可以查看CPU详细的数据统计

流量测试:

        GT工具提供了流量的监控指标:net

        手机通过运营商的网络访问internet,运营商替我们的手机转发数据报文,数据报文的总大小(字节数)即流量,数据报文是包含手机上下行的报文

常见流量测试方法:

        统计测试法:获取应用程序接收发的数据报文,统计出对应的流量

        抓包测试法:主要是利用工具Tcpdump或者fiddler抓包,到处pcap文件,再在wireshark中再打开分析

测试需求:        

        打开学车不app,进入驾考圈-最新tab,上下滑动动态获取消耗的网络流量

测试方法:

        1.打开GT工具,配置流量监控指标(在参数项中配置)

        2.进入插件tab,点击抓包(获取业务测试的报文)

        3.在参数位置填入“-p -s 0 -vv -w",【开始】按钮下面是数据包保存地址

        4.进入学车app,操作上述业务,观察运行时的流量指标

        5.查看流量运行结果

        6.保存CPU详细数据,可以查看CPU详细的数据统计

场景的流量优化方法:

        数据的压缩

        不同数据格式的采用

        控制访问的频次

        只获取必要的数据

        缓存机制

        针对不同的网络类型设置不同的访问策略

面试题:

        打开页面速度过慢,如何优化

电量测试:

        GT工具提供了电量的监控指标:电流,电压,电量和温度

        电量测试:就是测试移动设备电量消耗快慢的一种测试方法,一般是用平均电脑(电池生产厂家一般都采用cAh来标记电池容量的大小,平均电流越小,说明设备使用时间就越长)来衡量电量消耗速度

常见的耗电场景:

        定位,尤其是调用GPS定位

        网络传输,尤其是非wifi环境

        屏幕亮度

        CPU频率

        内存调度频度

        wake_locker时间和次数

测试需求:

        调整屏幕亮度为最大

        打开学车不app,进入驾考圈-最新tab,选中发表心情,选则手机拍照,定位当前位置信息,使用非wifi/wifi网络发表动态

        使用过程中,间隔几分钟就锁屏或唤醒屏幕

测试方法:

        1.打开GT工具,进入插件tab,点击耗电数据采集

        2.选择采样频率,屏幕亮度和采集的数据指标

        3.进入学车app,操作上述业务

        4.测试完成后,回到参数页面,点击停止录制;点击保存,选择路径保存本次的数据

        5.在上面指定的路径下,找到保存的数据,可以查看CPU详细的数据统计

电量的测试结果分析(对比方法):

        与基准数据对比(基准数据来自于产品经理或者以往经验积累)

        横向对比,拉上竞品一起测(目前大多数采用这种方法):同样的网络、手机、相似的测试场景,最后对比我们的产品和竞品在耗电量方面的差距,给出优化建议        

app启动速度测试:

        app启动分为冷启动、热启动

        冷启动:指app被后台杀死后,在这个状态打开app,这种启动方式叫做冷启动

        热启动:指app没有被后台杀死,仍然在后台运行,通常我们再次去打开这个app,这种启动方式叫做热启动

测试方法:

        使用命令adb shell am start -W -n 包名/Activity名,查看app启动耗时

        该命令有三个关键指标:

        ThisTime:表示一连串启动Activity的最后一个Activity启动耗时,一般会<=TotalTime时间

        TotalTime:应用的启动时间,包括创建进程、APP初始化。Activity初始化到界面显示(开发者需要优化的耗时)

        WaitTime:前一个应用activity pause的时间+TotalTime

启动速度的测试结果分析:

        同电量测试一样,我们可以测试出APP冷启动和热启动时花费的时长,但是是否有问题需要对比分析,对比方法:

        与基准数据对比(基准数据来自于产品经理或者以往数据积累)

        横向对比,拉上竞品一起测(目前大多数采用这种方法):同样的网络、手机、相似的测试场景,最后对比我们的产品和竞品在启动时长方面的差距,给出优化建议     

用户体验测试:

        以主观的普通消费者的角度去感知产品或服务的舒适、有用、易用、友好亲切程度。通过不同个体、独立空间和非经验的统计复用方式 去有效评价产品的体验下提出修改意见提升产品和潜在客户满意度

用户体验关注点:

        UI界面测试:对照UI交互设计文档,检查每个界面设计菜单、对话框、窗口、风格、布局等;注意事项:按钮(选中效果)、字体大小、颜色、居中对齐等

        易用性测试:是否有空数据界面设计,引导用户去执行操作;菜单层次是否太深;交互流程分支是否太多;完成业务操作的步骤是否太多;界面中按钮可点击的范围是否适中;是否定义back的逻辑、涉及软硬件交互时back键都应具有定义

       横屏、竖屏测试: 横屏竖屏的切换是否正常(针对每个页面都要做横屏和竖屏测试);额别是要关注APP中有表格,因为横竖屏的显示宽度不一样

        关注手机应用上的其他辅助测试:可以重点关注”放大字体“,”反色“,”语音转换“,多点触碰等功能

稳定性测试:

        检测应用程序是否会出现异常,如闪退crash,无响应and等

        稳定性测试工具--Monkey        

Monkey:

        是一个命令行工具,是由安卓官方提供的

        测试人员可以通过模拟用户的触摸、点击、滑动以及系统按键等操作(操作事件都是随机的),从而实现对APP压力的测试和稳定性测试        

        开发人员结合Monkey打印的日志和系统打印的日志,修改测试中出现的问题

稳定性测试的时机:

        一般需要等产品稳定了,bug比较少的时候,再用monkey去测试待测试的稳定性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值