APP应用系统架构
- 相同点
- APP和web使用的后端服务是相同的
- 前后端都使用HTTP协议进行交互(也有部分APP用socket交互)
- 不同点
- APP是C/S结构,web是B/S结构
- APP前后端交互的数据格式以json为主,web前后端交互的数据格式以HTML为主
JSON(JavaScript object notation)是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。
JSON最常用的格式是对象的键值对,例如:
{"firstName": "Brett", "lastName": "McLaughLin"}
APP项目环境及发布平台
APP项目环境(后端)
一般公司内部开发,测试人员会使用不同的环境,以隔离工作过程中彼此之间的干扰。同时,上线给用户使用的产品也会单独部署环境。
- 开发环境:指开发人员进行开发时调试运行的环境
- 测试环境:提供测试人员使用,用于测试人员执行测试,回归缺陷
- 预发布环境:这个环境中,一般会连接生产环境的数据库,使用生产环境的数据库来进行测试
预发布环境中只针对基本业务进行测试
测试写的业务操作时,只能使用自己构造的数据
升级涉及到表结构变更时,可以将生产环境数据库数据备份到测试库中,升级并测试
- 生产环境:指正式提供对外服务的环境,产品的实际用户使用的环境
预发布环境后,正式发布生产环境之前,一般会进行灰度发布。
灰度发布:由于一个项目,一般线上部署时有多台机器运行,所以灰度1台至3台,看看新功能是否ok,如果失败则只需要回滚几台,比较方便。
APP应用发布(前端)
APP开发完成后,相应的开发人员会打出应用程序包,由测试人员安装测试
- 安卓:APK测试包
- IOS:IPA测试包
应用内测分发平台
在实际测试工作中,为了方便测试程序包的安装和管理,可以使用一些免费的应用内测分发平台。将应用测试包上传到这些平台上,可以生产对应的二维码,直接扫码进行应用安装。例:蒲公英。
应用线上发布平台
产品测试完成后要在线上进行发布,让用户进行下载使用。
- 安卓应用:豌豆荚,应用宝,360手机助手,各类手机品牌商城
- IOS应用:APP store,itools
线上发布流程:APK/IPA测试完成--提交应用市场审核--添加渠道号--渠道包测试--正式上线
敏捷开发模式
瀑布模型
互联网行业
敏捷开发
概念:
敏捷开发以用户的需求进化为核心,采用迭代,循序渐进的方法进行软件开发。
在敏捷开发中,软件项目在构建初期被分成多个子项目,各个子项目的成果都经过测试,具备可视,可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
敏捷框架模型:
Scrum介绍
Scrum是一个敏捷开发框架,是一个增量的,迭代的开发过程。在这个框架中,整个开发周期包括若干个小的迭代周期,每个小的迭代周期成为一个Sprint(Sprint:项目开发过程中最小迭代周期),每个Sprint的周期建议为2-4周。在Scrum中,将产品Backlog(产品待办列表)按商业价值排出需求列表。在每个迭代中开发团队从产品Backlog挑选出最有价值的需求进行开发,实现完成后产品推出市场,进入下一个迭代。
Scrum的三种角色
Product Owner(产品负责人)
定义所有的产品功能
决定产品发布的内容及日期
根据市场变化对需要开发的功能排列优先顺序
Scrum Master(项目经理)
领导团队完成Scrum的实践以及体现其价值
确保团队的人胜任其工作,并保持高效的生产率
保护团队不受外界无端影响
Dev Team(开发团队)
规模(经典团队一般5到9人)
成员组成:程序员,测试员,用户体验设计师
主要职责:实现客户需求
Scrum敏捷开发流程:
- 产品负责人收集需求,转化为产品功能列表
- 启动迭代的计划会,评审产品功能列表,挑选优先级高的需求作为迭代任务
- 项目组成员完成迭代任务的开发,测试工作
- 迭代结束后,开评审会,评估当前迭代任务的完成情况
- 开反思会,总结迭代过程中的好与不好的地方
- 下一迭代,循环2-5步
APP应用测试流程(一次迭代)
学车不APP项目说明
项目概述
学车不APP是一款手机学车软件,可以帮助广大用户在线学车,通过手机预约教练,在线进行模拟考试,利用自己的零碎时间进行驾考学习。
项目功能
学车不APP功能包括报名,学车,陪练,驾考圈,我的等功能模块。
APP测试要点
功能测试,兼容性测试,安装、卸载、升级测试,交叉事件测试,PUSH测试,性能测试(CPU,内存,流量测试,电量测试,流畅度测试,启动速度),用户体验测试,稳定性测试
业务功能测试
显性需求
根据软件说明,设计文档或用户需求验证APP的各个功能的实现
隐性需求
相关业务:功能影响到的相关业务
其他角度:分支流程,逆向操作,异常操作
补充精简:测试策略,业务知识,测试经验
兼容性测试
APP在不同的机型上由于软件,硬件等不同可能出现各种各样的问题,因此需要做兼容性测试。
兼容性测试关注点
- 手机型号
- 覆盖市场主流机型(Android:三星,小米,oppo,华为)
- 考虑APP线上用户机型排名
- 系统版本
- 安卓(4.4,5.1,6.0,7.0)
- IOS(9.x,10.x,11.x,12.x)
- 屏幕尺寸,分辨率
- 分辨率(1080*1920,720*1280)
- 屏幕尺寸(5.5,4.7)
- 网络(2G,3G,4G,5G,WIFI)
- 应用兼容性
- 与手机硬件兼容(home键,电源键,音量调节等)
- 与外部硬件兼容(耳机,蓝牙等)
- 与操作系统软件兼容(wlan设置,系统时间调节,lbs定位等)
- 与其他APP兼容(后台在播放音乐,进入动态页面点击动态视频的播放,系统如何处理)
流量研究院https://tongji.baidu.com/researchhttps://tongji.baidu.com/research
安装卸载升级测试
APP是客户端程序,客户端程序就需要提前进行安装才能使用,因此需要测试安装,卸载,升级操作。
安装测试关注点
正常场景:
- 在不同的操作系统版本上安装
- 从不同的安装渠道安装(APP商城,手机助手,直接下载apk或ipa文件安装)
- 不同的安装路径(安装到手机上,安装到sd卡上)
异常场景:
- 安装时出现异常(关机,断网),恢复后能否继续安装
- 安装时存储空间不足
- 安装时手动取消后再次安装
- 正在运行时覆盖安装
- 低版本覆盖安装高版本
- 卸载后安装
卸载测试关注点
- 正常卸载(APP手动卸载,工具卸载)
- 运行时卸载
- 取消卸载
- 卸载异常中断
- 卸载后无数据残留
升级测试关注点
- 从临近版本升级
- 跨版本升级
- 不同渠道升级(应用商城,手机助手)
- 升级提醒成功(可不提醒,可以提示升级,强制升级)
- 应用内升级时非wifi提醒
升级后要观察升级前的数据正常(当数据结构改变而开发没有处理好时很容易出现升级前的数据混乱)
交叉事件测试
交叉测试又叫冲突测试或干扰测试
指一个功能正在执行的过程中,另外一个事件或操作对该过程进行干扰的测试。例:APP前台/后台运行同时接听来电或者下载文件等待。
交叉事件测试关注点
如何测试:模拟用户场景(所有可能会影响APP正常运行的场景)
- APP运行时接打电话
- APP运行时收发信息
- APP运行时查看应用推送
- APP运行时接上蓝牙设备
- APP运行时接收文件弹窗提醒
- APP运行时旋转屏幕
- APP运行时切换网络(4G,WiFi)
- APP运行时使用相机,计算器等手机自带应用
- APP运行时点量告警,插播充电器
push消息测试
APP使用push消息的原因:
消息推送场景:
产品角度:功能需要,如:资讯类产品的新闻推送,工具类产品的公告推送等等
运营角度:活动运营需要,如:电商类产品的促销活动,召回用户/提高活跃度等等
消息推送原理:
push消息推送实质:
实际上,是服务器有新消息需推送给用户时,先发送给应用APP,应用APP再发送给用户。
push消息推送方式:
- 操作系统级别的消息推送服务
IOS
Android:C2DM(Cloud to Device Messaging)
- 调用第三方推送平台
手机厂商类:小米推送,华为推送
第三方平台类:友盟推送,极光推送,云巴(基于MQTT)
BAT大厂的平台推送:阿里云移动推送,腾讯信鸽推送,百度云推送
- 自己搭建推送服务器
好处:功能好,性能强,安全性高
坏处:成本高
push推送设置:
APP服务器设置:
push消息针对不同的用户群体:全体用户,部分用户,特定用户
手机端设置:
push消息推送是否接受通知,提醒位置等
push消息测试关注点:
- push消息是否按指定业务规则发送
- 当push消息时针对特定用户时,检查收到的push与用户身份是否相符
- 设置不接收推送消息时,用户是否会收到push消息
- 设置push消息显示的位置,是否与配置一致
- 收到push消息,是否能正常打开
- APP在前台使用时,收到push消息如何提示
- APP在后台运行时,收到push消息如何提示
- APP离线,是否能收到push消息
性能测试
性能是衡量APP质量的一个重要指标
APP性能测试常见指标:
内存,CPU,流量,电量,启动速度,流畅度等
性能测试关注点
APP使用时对CPU,内存的占用情况
APP使用时是否流程
APP使用时电量流量的消耗情况
APP的启动时间是否过长
性能测试工具---GT
GT简介:
GT(随身调)Android版是腾讯MIG专项测试组自行研发的APP随身调测平台,它是直接运行在手机上的“集成调测环境”(ITE,integrated test environment)。
之所以叫“集成调测环境”,是因为仅用GT即可独立完成如下针对AUT的测试工作:
- 基础性能测试:手机整机或者手机上安装的任何一个APP的CPU,内存,网络流量,流畅度/帧率,电量等基础性能指标的实时展示,历史数据采集及excel格式存储,曲线绘制等
- 日志查看:APP的Logcat日志查看,便于直接用手机现场定位APP功能异常,crash
- 网络数据包抓包:直接用手机抓包保存成pcap文件,下载到PC后用wireshark查看
GT安装:
- 可独立安装的GT(apk,IOS无该版本),像普通APP一样安装
- GT SDK:将GT的SDK嵌入到被调测的应用工程例里
GT基本使用:
- 安装:手机用root权限
- 进入AUT界面,配置要监控的指标
- 进入参数页面,选择要统计的参数,选择需要实时监控的数据
- 配置日志开头为logcat为on
- 进入APP进行测试
- 回到GT界面,在参数界面查看监控指标的数据统计
- 进入日志,查看响应的日志记录
CPU
GT工具提供了两个CPU的监控指标:CPU和jiffies
CPU:
整机的CPU使用水平,即当前手机的CPU整体使用率
计算公式:
在Linux系统下,CPU利用率分为用户态,系统态和空闲态
用户态:表示CPU处于应用程序执行的时间
系统态:表示系统内核执行的时间
空闲态:表示空闲系统进程执行的时间
CPU使用率=CPU执行非系统空闲进程时间/CPU总的执行时间
jiffies:
表示自开机以来,应用程序消耗的CPU时间片的总数
CPU问题产生的影响
CPU使用长时间处于90%以上
手机发热,耗电量增加
反应变慢,引起ANR(application not responding)