概述
app属于CS架构,是通过HTTP协义来传输数据的。 通过json的格式来传送数据的
APP应用系统架构
相同点:
- APP和web使用的后端服务器是相同的
- 前后端都使用HTTP协议进行交互 (也有部分APP用socket来交互)
不同点:
- APP是C/S结构,web浏览器是B/S结构
- APP前后端交互的数据格式以json为主,web前后端交互的数据格式以HTML为主 。JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。采用完全独立于编程语言的文本格式来存储和 表示数据。 JSON最常用的格式是对象的键值对。
APP项目环境及发布平台
APP项目环境(后端)
一般公司内部开发、测试人员会使用不同的环境,以隔离工作过程中彼此之间的干扰。同时,上线给用户使用的产 品也会单独部署环境。
- 开发环境 :指开发人员进行开发时调试运行的环境
- 测试环境 :提供测试人员使用,用于测试人员执行测试,回归缺陷。
- 预发布环境 :这个环境中,一般会连接生产环境的数据库,使用生产环境的数据来进行测试。预发布环境过后,正式发布生产环境之前,一般会进行灰度发布。 灰度发布:由于一个项目,一般线上部署时有多台机器运行,所以灰度1台至三台,看看新功能是否OK,如果失败则只需要回滚几台,比较方便。
- 生产环境 :指正式提供对外服务的环境,产品的实际用户使用的环境
- 镜像环境 :当生产环境出现问题时,把生产环镜的相关数据以及代码全部拉到镜像环境,复现生产上的问题,然后由测试人员协助开发人员复现问题,然后由开发人员去进行问题的定位和分析。
系统开发流程及对应环境
- 开发(开发环境)--->测试(测试环境—预发布环境)--->上线(灰度发布环境—生产环境)
APP应用发布(前端)
应用内测分发平台
- android 安卓app文件后缀名是 apk
- IOS 苹果app文件后缀名是ipa
- 获取app安装包文件的方式一:anroid 可以直接找开发给对应apk安装包丶IOS 直接将手机给开发人员,让开发人员安装对应的ipa包
- 获取app安装包文件的方式二:可以借助内测试平台丶国内用的内测平台是蒲公英, 国外用的是fir.im丶测试包生成之后会上传到蒲公英平台,然后生成一个链接地址(二维码),可以直接通过二维码或者链接地址下载对应的测试包
应用线上发布平台
- anroid app安装包 豌豆荚、应用宝、360手机助手、各类手机品牌商城(上传app安装包需要审核 2-3 )
- ios app安装包 appstore itools(IOS时间更长,一周左右)
敏捷开发模型
移动互联网行业发展速度快,需求不断变化,产品更新迭代的频率高。采用传统的开发模式(如瀑布模型)的最大问题是开发周期过长,迭代速度慢 ,不再适合市场的需求。因此敏捷开发模型诞生了...敏捷开发
概念:以用户的需求为核 心,采用迭代、循序渐近的方法进行软件开发在敏捷开发过程当,软件项目在构建初期会被切分成不同的子系统以及不同的失代,各个子项目的成果经过测度,具备可视,可集成和可运行的特征。
Scrum介绍
概念:Scrum是一个敏捷开发框架,是一个增量的,迭代的开发过程。在这个框架中,整个开发周期包括若干个小的迭代 周期,每个小的迭代周期成为一个Sprint(sprint:项目开发过程中最小迭代周期),每个Sprint的周期建议为2~4 周。在Scrum中,将产品Backlog(产品待办列表)按商业价值排出需求列表。在每个迭代中开发团队从产品 Backlog挑选最有价值的需求进行开发,实现完成后产品推出市场,进入下一个迭代
需要熟悉的三个角色:
- 产品负责人:收集产品需求,确定产品上线时间,排产品需求的优先级
- 项目经理:带领团实现SCRUM敏捷过程,确保组内成员不被外界干扰,确保组内成员按时完成任务
- 开发团队:程序员,测试员,设计(程序员分前端、后端、android开发、ios开发)
每日立会: 需要知道每天干 了什么,明天计划干什么,以及遇到的问题。 一般早上开会,15分钟左右。 同时需要知道项目的进度是否正常
APP应用测试流程
- 参与需求评审 评审前一定要看需求文档
- 制定测试计划 一般由测试负责人或测试主管制定
- 设计编写测试用例 有一些小公司由人力时间紧张,可以不写用例,需要写测试点。用例评审
- 执行用例,跟踪缺陷 搭建环境,冒烟测试(有可能做,也有可能不做)
- 编写提交版本测试报告
APP应用测试要点
对于APP项目的测试,一般是进行系统测试。 系统测试的要点一般包括如下这些方面:业务功能测试
根据软件说明,设计文档或用户需求验证App的各个功能的实现。
- 显性需求:需求文档明确规定的
- 隐性需求:未明确写明,却必须要达到的,一般是性能方向
- 相关业务:功能影响到的相关业务
- 其他角度:分支流程、逆向操作、异常操作
- 补充精简:测试策略、业务知识、测试经验
根据测试功能去拆分功能点,再根据功能点去分析测试点。
兼容性测试(覆盖主流)
APP在不同的机型上由于软件、硬件等不同可能出现各种各样的问题,因此需要做兼容性测试。 兼容性测试关注点
- 手机型号:覆盖市场主流机型 (Android:三星,小米,OPPO,华为)丶考虑APP线上用户机型排名
- 系统版本:是否主流可以查看线上排名网站(流量研究院:https://mtj.baidu.com/data/mobile/device)安卓系统丶ios系统 排名前3
- 屏幕尺寸,分辨率
- 网络:2G、3G、 4G、WIFI
- 应用兼容性:与手机硬件兼容丶与外部硬件设备兼容丶与操作系统软件兼容丶与其他APP兼容。例如:后台在播放音乐时,进入动态页面点击动态视频的播放,系统如何处理
注意:
- 不可能去做全兼容的测试。可以去做深度兼容测试。需要借助于第三方云测试平台。testin云测,云测平台有很多手机。
- 在云测平台注册账号,上传APP,给钱,拿 报告 。
安装卸载升级测试
APP是客户端程序,客户端程序就需要提前进行安装才能使用,因此需要测试安装、卸载、升级操作。 安装测试关注点:正常场景:
- 在不同的操作系统版本上安装
- 从不同的安装渠道安装(APP商城、手机助手、直接下载apk或者ipa文件安装)
- 不同的安装路径(安装到手机上、安装到SD卡上)
异常场景
- 安装时出现异常(关机、断网),恢复后能否继续安装
- 安装时存储空间不足
- 安装时手动取消后再次安装
- 正在运行时覆盖安装
- 低版本覆盖安装高版本
- 卸载后安装
卸载测试:
- 正常卸载(APP手动卸载、工具卸载)
- 运行时卸载
- 取消卸载
- 卸载异常中断
- 卸载后无数据残留
升级测试:
- 从临近版本升级
- 跨版本升级
- 不同渠道升级(应用商场、手机助手)
- 升级提醒成功(可不提醒、可以提示升级、强制升级)
- 应用内升级时非WIFI提醒
交叉事件测试
交叉测试又叫冲突测试或者干扰测试。 是指一个功能正在执行过程中,另外一个事件或操作对该过程进行干扰的测试。例如:在App前台/后台运行同时接听来电或者下载文件等等。 如何测试:模拟用户场景(所有可能会影响APP正常运行的场景)。交叉事件测试关注点举例:
- APP运行时接打电话;
- APP运行时收发信息;
- APP运行时查看应用推送
- APP运行接上蓝牙设备
- APP运行时接收文件弹窗提醒
- APP运行时旋转屏幕
- APP运行时切换网络(4G、Wi-Fi);
- App运行时使用相机、计算器等手机自带应用;
- App运行时电量告警、插拔充电器。
Push消息测试
- 产品角度:功能需要,如:资讯类产品的新闻推送、工具类产品的公告推送等等。
- 运营角度:活动运营需要,如:电商类产品的促销活动;召回用户 / 提高活跃度等等
实际上,是当服务器有新消息需推送给用户时,先发送给应用App,应用App再发送给用户。
推送服务器: 使用的是第三方的推送服务器。(极光或者信鸽) 中小企业不会自己搭建推送服务器,一般使用的都是第三方的推送服务器
push消息测试关注点
- Push消息是否按指定业务规则发送;
- 当Push消息是针对特定用户时,检查收到的Push与用户身份是否相符;
- 设置不接收推送消息时,用户是否会收到Push消息;
- 设置push消息显示的位置,是否与配置一致。
- 收到push消息,是否能正常打开。
- APP在前台使用时,收到push消息如何提示
- APP在后台运行时,收到push消息如何提示
- APP离线,是否能收到PUSH消息。
性能测试
准备工作:打开 USB调试 以及指针位置丶开启超级管理员访问权限
性能测试常见指标
性能测试工具GT
GT(随身调) Android版是腾讯 MIG 专项试组自行研发的APP 随身调测平台,测它是直接运行在手机上的“集成调 测环境”(ITE, Integrated Test Environment)。 之所以叫“集成调测环境”,是因为仅用 GT即可独立完成如下针对 AUT 的测试工作:
- 基础性能测试:手机整机或者手机上安装的任何一个 APP 的 CPU、内存、网络流量、流畅度/帧率、电量等 基础性能指标的实时展示、历史数据采集及 excel 格式存储、曲线绘制等。
- 日志查看:APP 的 Logcat 日志查看,便于直接用手机现场定位 APP 功能异常、crash。
- 网络数据包抓包:直接用手机抓包保存成 pcap 文件,下载到 PC 后用 Wireshark 查看。
性能工具GT使用步骤
- 打开GT工具,在AUT界面选择被测试的app以及对应的性能指标
- 设置参数,进入到参数页面,点击右上角的"编辑"按钮,拖动想要测试的参数到已关注区域,而且要勾选。勾选之后,点击上方的红色 录制按钮。
- 执行测试之前,进入到日志界面,开启logcat的日志记录功能。
- 如果要进行电量或流量的性能测试需要进入到插件页面进行设置。
- 返回到AUT界面,在上面点击“启动”或者“running” 来启动被测试的app
- 针对app进行相关的业务操作
- 操作完成之后,再进入到GT工具,查看性能参数的数据。
CPU测试:
GT工具提供了两个CPU的监控指标:CPU使用率和Jiffies
- CPU 使用率 : CPU 执行非系统空闲进程时间 / CPU 总的执行时间
- Jiffies: 表示自开机以来,应用程序消耗的CPU时间片的总数
CPU问题的影响:
- CPU使用长时间处于90%以上会导致手机卡顿,实际指标公司规定为准
- 手机发热、耗电量增加
- 反应变慢,引起ANR(假死状态)
内存测试
GT工具提供了两个内存的监控指标:PSS和Private dirty。在GT参数中要选择MEM参数。
- Private dirty(私有内存): 进程独占内存,也就是进程销毁时可以回收的内存容量。
- PSS(实际使用内存): 将跨进程共享页也加入进来, 进行按比例计算PSS。这样能够比较准确的表示进程占用的实际物理内存。
内存的指标根据不同的手机配置、以及不同的公司,指标值是不一样的。
常见内存问题: 内存泄漏丶内存溢出内存问题产生的影响:
- 程序实际使用的内存PSS持续增长
- 程序出现crash(可能是内存溢出)
流畅度测试
GT工具提供了流畅度的监控指标:FPS 即Frames per second:GPU在一秒内绘制的帧数
流畅度问题产生的影响:
- 想要让大脑觉得动作是连续的,至少是每秒10-12帧的速度
- 想达到流畅的效果,至少需要每秒24帧
- 60帧每秒的流畅度是最佳的,我们的目标就是让程序的流畅度能接近60帧每秒。视频游戏的FPS要求较高
流量测试
GT工具提供了流畅度的监控指标:NET。流量: 手机通过运营商的网络访问 Internet,运营商替我们的手机转发数据报文,数据报文的总大小(字节数)即流量, 数据报文是包含手机上下行的报文。
常用流量测试方法:
- 抓包测试法: 主要是利用工具 Tcpdump 或者fiddler抓包,导出 pcap 文件,再在 wireshark 中打开进行分析
- 统计测试法:获取应用程序收发的数据报文,统计出对应的流量
流量的优化:
- 数据压缩 在HTTP协议中可以通过此字段将数据进行压缩,减少数据容量。content-encoding: gzip
- 不同的数据格式的采用 json lxml 数据格式
- 控制访问的频次 通过异步加载的方式来加载数据。
- 只获取必要的数据
- 缓存机制
- 懒加载 将多个图片放在同一张图片里面,一起加载。
电量测试
- 就是测试移动设备电量消耗快慢的一种测试方法。一般是用平均电流(电池生产厂家一般都采用mAh来标记电池容量大小,平均电流越小,说明设备使用时间就越长)来衡量电量消耗速度。 GT工具当中提供了电量的监控指标:电流、电压,电量跟温度 。
- GT工具只能特定类型的机型进行电量的测试。可换其他性能测试工具进测试,也可以使用对比方式进行测试(拿 同类型的产品,在同样的手同样的场景下进行对比测试。)
- 常见的耗电场景: 定位,尤其是调用 GPS 定位。 丶网络传输,尤其是非 Wifi 环境丶屏幕亮度 丶CPU 频率 丶内存调度频度 丶wake_locker 时间和次数
用户体验测试
用户体验测试较为主观,描述问题时尽量具体,最好有一定依据。用户体验测试关注点
- UI界面测试 :对照UI交互设计文档,检查每个界面设计菜单、对话框、窗口、风格、布局等
- 易用性测试: 是否有空数据界面设计,引导用户去执行操作 丶菜单层次是否太深 丶交互流程分支是否太多 丶完成业务操作的步骤是否过多
- 横竖屏测试:横竖屏的切换是否正常(针对每个页面都要做横竖屏测试) 丶特别要关注APP中有表格,因为横竖屏的显示宽度不一样
- 关注手机应用上的其他辅助功能 :可以重点关注“放大字体”、“反色”、“语音转换”、多点触碰等功能
稳定性测试
通过长时间对应用程序进行无序操作,检验应用程序是否会出现异常。如闪退crash、无响应ANR等。 稳定性测试工具——Monkey。
- Monkey是一个命令行工具,是由安卓官方提供的。 测试人员可以通过Monkey来模拟用户的触摸、点击、滑动以及系统按键等操作(操作事件都是随机的),从而实 现对APP压力的测试和稳定性测试。(具体Monkey的使用在后续app自动化章节介绍) 开发人员结合monkey 打印的日志和系统打印的日志,修改测试中出现的问题。
- 稳定性测试的时机 :一般需要等产品稳定了,bug比较少的时候,再用monkey去测试待测试应用的稳定性
app测试总结
如何测试app? 首先了解需求。在从下面方面去测试
- 测试功能
- 兼容性测试
- 安装、卸载、升级测试
- 交叉事件测试
- 用户体验测试
- PUSH测试
- 性能测试(CPU、内存、电量、流量、流畅度、启动时间)
- 稳定性测试
当对app进行了充分的测试之后,主可以编写测试报告 ,发布app到线上了。app的发布,打包上传到各大应用商城。测试人员也需要关注,关注的是app线上的BUG。运维需要关注的app的线上环境。