一、序言

整理软件测试基础加深理论学习。

二、熟悉APP项目

2.1互联网公司的必备知识

2.1.1迭代速度不同:开发模型不一样

2.1.1.1传统行业:瀑布模型

瀑布模型:将一个项目作为一个整体,下一个环节依赖上一个环节的完成

流程:需求分析----设计----实现----发布----价值

2.1.1.2互联网行业:敏捷模型

敏捷模型:将一个项目拆分成多个子项目,每一个迭代周期完成一个子项目

流程:需求分析----(设计-实现)----需求分析----(设计-实现)......----发布----价值

2.1.1.3敏捷开发(scrum)模型

scrum:是一个敏捷开发框架,是一个增量的,迭代的开发过程

迭代(sprint):项目开发过程中最小周期,每个sprint周期建议为2~4周。在scrum框架中,整个开发周期包括若干个小的迭代周期。

2.1.1.4项目上线发布策略

开发阶段(开发环境)----测试阶段(测试环境-预发布环境)----灰度发布----上线发布阶段(生产环境)

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

灰度发布:由于一个项目,一般线上部署时有多台服务器运行,所以灰度1台~3台,看看新功能是否OK,如果失败则只需要回滚几台,比较方便。

三、APP专项测试

3.1APP专项测试要点

功能测试;兼容性测试;安装、卸载、升级测试;交叉事件测试;PUSH测试;性能测试(CPU、内存、流量测试、电量测试、流畅度测试、启动速度、功耗等);用户体验测试、稳定性测试。

3.2APP项目兼容性测试

3.2.1兼容性

APP在不同的机型上由于软件、硬件等不同可能出现各式各样的问题,因此需要做兼容性测试。

3.2.2兼容性需要考虑内容

手机型号、系统版本(Android、ios、纯血鸿蒙)、分辨率(屏幕尺寸)、网络、应用兼容性

机型等选取可参考百度统计top:百度统计——一站式智能数据分析与应用平台

第三方兼容性测试平台:Testin云测

3.2.2.1APP应用兼容性测试内容

(1)与手机硬件兼容(home键、电源键、音量键)

(2)与外部硬件设备兼容(耳机、蓝牙等)

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

(4)与其他APP兼容(如:后台在播放音乐时,进入动态页面点击动态视频播放等)

3.3APP项目安装卸载升级测试

安装卸载升级:APP是客户端程序,客户端程序就需要提前进行安装才能使用,因此需要测试安装、卸载、升级操作

3.3.1安装测试关注点

3.3.1.1正常场景

(1)从不同渠道安装

(2)不同操作系统安装

(3)不同路径安装(手机\SD卡)

3.3.1.2异常场景

(1)中断安装(关机、断网),中断之后能否恢复安装

(2)存储空间不足安装

(3)安装时手动取消或暂停,恢复之后是否正常安装

(4)正在运行时能否覆盖安装(后台运行\前台运行,需要考虑是否会打断用户操作)

(5)低版本覆盖高版本

(6)卸载后再安装(卸载后是否会清楚数据)

3.3.2卸载测试关注点

(1)正常卸载(手机卸载\使用第三方软件卸载)

(2)运行时卸载(后台运行)

(3)取消卸载(第三方软件\二次弹窗确认时取消)

(4)中断卸载(关机)

(5)卸载后数据残留(给用户提示确认,如果用户同意残留,可以保留数据;如果用户拒绝残留,不可以保留数据;如果不做任何确认提示,默认需要清空残留数据)

3.3.3升级测试关注点

(1)从临近版本升级(上一次发布的版本)

(2)跨版本升级(历史发布过的版本)

          当前版本是n: n-2升级到n

(3)从不同渠道升级

(4)升级成功提醒(红点提示\消息提示)

(5)升级前是否提醒(消息推送提示升级\强制升级不提醒)

         自己自研升级系统(日常升级\强制升级)

         使用第三方升级系统(日常升级\强制升级)

(6)当前版本是否具有升级能力(n升级到n+1,升级规则)

3.4干扰测试(交叉事件测试)

3.4.1使用软件中出现如下干扰场景

(1)接打电话

(2)收发短信

(3)音视频电话

(4)查看应用推送(其他软件的推送\当前软件的推送)

(5)连接蓝牙设备

(6)接收文件弹窗提醒(确认接收\拒绝接收)

(7)旋转屏幕

(8)切换网络(移动数据和WiFi自动切换)

(9)手机自带应用(打开相机\手电筒\计算器)

(10)低电提醒

(11)插拔充电器(充电动画)

3.5APP项目PUSH消息测试

3.5.1什么是push消息?

push消息:是APP给你推送的各种消息。

push消息推送本质:服务器有更新消息----推送服务器----Client APP----用户

3.5.2Push推送

3.5.2.1推送服务器(是否按照规则去推送)

推送内容,推送时间,推送频率,推送对象

3.5.3手机端

3.5.3.1不接受消息,将不会收到任何推送
3.5.3.2接收消息

(1)APP在前台运行时,消息如何显示

(2)APP在后台运行时,消息如何显示

(3)APP离线,消息如何显示

3.5.3.3消息能否打开
3.5.3.4接收时设置

(1)接收消息但不提醒,手机提醒不会触发

(2)接收消息且提醒,接收消息的同时出发提醒(结合手机模式:静音模式\震动模式\铃声模式)

(3)接收消息但不显示消息内容(例如:微信发来一条消息)

3.5.4推送平台在哪里,如何配置推送

3.6APP项目用户体验测试

3.6.1UI界面测试(原型图设计是否合理)

3.6.2横竖屏测试(内容展示是否异常)

3.6.3易用性测试(空数据提示\菜单层次是否过深\业务操作步骤是否过多\按钮位置是否适中)

3.6.4手机上的辅助功能(色盲模式\盲人模式)

3.6.4.1真人体验:

可以针对目标用户去找符合条件的人

可以找小白用户体验(公司内部其他团队未接触过该项目的人)

四、APP性能测试

4.1Android 性能测试工具 Solopi

下载链接:SoloPi Android 版本 APK 下载 - PGYER.COM

4.2性能专项(内存)

4.2.1常见的内存问题

4.2.1.1内存泄漏

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

4.2.1.2内存溢出

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

4.2.1.3内存问题产生的影响

程序实际使用的内存pass持续增长——可能是内存泄漏

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

注:一定因为有内存泄漏才会导致内存溢出

4.2.2内存

内存泄漏:内存的曲线持续增长(增的远比减的多)

内存溢出:一定是因为有内存泄漏才会出现,内存持续增加突然减为0(应用停止运行)

4.3性能专项(CPU)

4.3.1性能CPU基础知识——CPU时间片

时间片:CPU分配给各个程序的时间,每个程序被分配一个时间段,称作它的时间片,即该程序允许运行的时间

4.3.2CPU

4.3.2.1基线

如果基线有要求,CPU曲线图是否长期超过基线的现象,如果没有基线,行业默认90%

4.3.2.2CPU占用过高时可能出现的问题

(1)手机发烫

(2)页面卡顿

(3)电量消耗严重

快速恢复:清空后台运行的进程

4.4性能专项(流量)

4.4.1使用了多长时间,消耗了多少流量

4.4.2使用solopi工具测试:例如,1小时持续刷新,查看流量消耗

4.5性能专项(电量)

4.5.1使用了多长时间,消耗了多少电量

4.5.2使用solopi工具测试:例如,1小时持续刷新,查看电量消耗

4.5.3常见电量消耗较大场景

(1)定位,尤其调用GPS定位

(2)网络传输,尤其是非WiFi环境

(3)屏幕亮度

(4)CPU运算:复杂的运算逻辑、死循环等会直接导致CPU负载过高,会导致耗电

(5)wake_locker(锁屏-解锁)时间和次数

4.6性能专项(APP启动速度)

4.6.1APP启动

冷启动:指APP被后台杀死后,在这个状态打开APP

热启动:指APP没有被后台杀死,仍在后台运行,通常我们再次去打开这个APP

4.6.2APP启动速度测试方法(Android)

命令:adb shell am start -W 包名/Activity名

参数:

-W 获取时间

-S 表示每次启动前先强制停止

-R 表示重复次数

例如:启动5次,每次启动时强制结束进程

adb shell am start -S -R 5 -W 包名/Activity名

4.7性能专项(流畅度)

4.7.1流畅度指标:帧率FPS

Frames per second:GPU在一秒内绘制的帧数(一秒内呈现给用户的图片数)

注:60FPS为最佳

4.8性能专项(稳定性)

稳定性测试:通过长时间对应用程序进行无序操作,检验应用程序是否会出现异常。如闪退crash、无响应ANR等

4.8.1稳定性测试工具

monkey

4.8.2常用adb命令

开启adb服务:adb start-server

关闭adb服务:adb kill-server

安装软件包:adb install  /路径/软件包名(-r保留数据 -t强制覆盖)

adb install -r 

adb install -r-t

清除应用数据与缓存:adb shell pm clear (apk包名)

 启动应用:adb shell am start 包名/Activity名

停止应用:adb shell am force-stop 包名

获取内存:adb shell dumpsys meminfo 包名

查看当前CPU占用情况:adb shell dumpsys cpuinfo

获取CPU:adb shell top -s cpu 或者 adb shell top -s 9

-s按指定行排序,-m显示最大数量

参数含义:

PID:应用程序ID

S:进程的状态(S表示睡眠、R表示正在运行、Z表示僵死状态、N表示该进程优先值是负数)

#THR:程序当前所用的线程数

VSS:虚拟耗用内存(包含共享库占用的内存)

RSS:实际使用物理内存(包含共享库占用的内存)

PCY:前台(fg)和后台(bg)进程

UID:用户身份ID

Name:应用程序名称

4.8.3获取APP使用流量

4.8.3.1获取userId(返回数据为userId=)

adb shell dumpsys 包名 | findstr userId

4.8.3.2获取上行流量(返回数据单位bytes)

adb shell cat proc/uid_stat/userId/tcp_snd

4.8.3.3获取下行流量

adb shell cat proc/uid_stat/userId/tcp_rcv

4.8.4 adb执行monkey

语法:adb shell monkey -p 包名 -v(日志) 次数 >D:\log.txt

参数说明:

-p:指定应用程序包名

-v:log详细程度(最高支持'-v-v-v'最详细)

--throttle:单步延时(每步操作间隔,单位毫秒)

--pct-touch:点击事件

例如:控制事件

adb shell monkey -p 包名 --throttle 100 --pct-touch 50 --pct-motion 50 -v-v-v 1000 >D:\log.txt

4.8.4.1常用事件百分比参数

--pct-touch <百分比>:触摸事件(点击、长按等)

--pct-motion <百分比>:滑动事件(直线滑动)

--pct-trackball <百分比>:轨迹球事件(随机方向滑动)

--pct-nav <百分比>:导航键事件(如上下左右键)

--pct-syskeys <百分比>:系统按键(Home、Back、音量等)

--pct-appswitch <百分比>:应用切换(启动其他应用)

--pct-anyevent <百分比>:其他任意事件

五、功能测试辅助-抓包工具

5.1抓包原理示意图

注:示意图绘画软件推荐:ProcessOn模板库_思维导图模板_流程图模板_ProcessOn思维导图流程图

5.2fiddle工具使用

5.2.1安装证书

Tools----Optuons...

HTTPS----勾选证书连接

5.2.2手机抓包操作

(1)若抓取手机包一定要勾选Allow remote computers to connect

(2)保证手机和电脑连接同一网段,并查出电脑IP

(3)手机浏览器输出电脑IP:端口号(8888)

(4)第三步连接后会自动弹出手机安装证书

(5)代理设置:WLAN----连接的网络----高级设置----手动设置代理----输入电脑ip以及fiddle端口号

5.3Charles手机抓包

5.3.1Charles设置

(1)电脑和手机处于同一个局域网下

(2)打开Charles,点击菜单栏中proxy----proxy settings....,设置端口号8888(默认)可以不修改,点击ok

5.4网页抓包操作查看

具体操作CSDN上搜索:fiddle网页抓包

例如:Fiddler抓包工具保姆级使用教程(超详细)_抓包软件怎么使用-CSDN博客

六、附件文件

6.1软件测试基础理论Xmind流程图

6.2Web测试基础理论Xmind流程图

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐