功能测试
- Day01 web项目环境与测试流程、业务流程测试
- Day02 web项目业务测试、轮播图、注册、登录模块测试
- Day03 抢购业务测试
- Day04-web项目购物车模块测试
- Day05-web项目抓包操作与测试报告
- Day06 手工课程第六天(APP)
- Day07 手工课程第七天(app)
- 常用的APP命令介绍
- 1. 查看已连接的设备列表:adb devices
- 2. 断开连接设备: adb disconnect 手机ip
- 3. 无线连接设备: adb connect 手机ip(手机和电脑处于同一网段)
- 4. 开启adb服务:adb start-server
- 5. 关闭adb服务:adb kill-server
- 6. 安装软件包: adb install /路径/软件包文件名(-r 保留数据 -t 强制覆盖 例如: adb install -r -t /路径/软件包的文件名)
- 7. 卸载软件包: adb uninstall app的包名
- 8. 获取包名
- 9. 获取当前窗口(注意大小写区分)
- 10. 清除缓存: adb shell pm clear 包名
- 11. 启动/停止应用
- 12. 获取手机日志: adb logcat > 本地文件
- 13. 获取启动时间: adb shell am start -W 包名/activity名
- 14. 获取内存信息: adb shell dumpsys meminfo 包名
- 15. 获取CPU:
- 16. 获取流量消耗值
- 17. 稳定性测试(Monkey)
- 手机抓包操作介绍
Day01 web项目环境与测试流程、业务流程测试
课程目标
能独立编写电商项目7个核心业务模块的用例
根据测试流程的6个步骤能独立对所有项目实施功能测试
今日目标
能说出web项目环境的组成
能说出tpshop商城项目业务的操作步骤(下单业务、发货业务、退换货业务、订单查询业务、会员管理业
务、商品管理业务)
能说出测试流程的6个步骤和作用
能根据测试流程6个步骤独立完成测试(下单业务、发货业务、评论业务)
一、【了解】web项目环境说明
1.1 环境的定义:项目运行所需要的所有的软件和硬件组合
1.2 环境(服务器)的组成:操作系统+数据库+web应用程序+项目代码
1.3 面试题:你们公司有几套环境?
测试环境:专门提供给测试人员使用
开发环境:开发人员使用
生产环境:提供给用户
预生产环境:设置和数据是一样.
注意:
情况一:2种环境, 测试环境+生产环境; 如何解决开发和测试进度冲突问题
答:区分开发周和测试周;开发工作时(开发新功能)不测试,测试工作时开发不进新代码.
情况二:3种环境,开发环境+测试环境+生产环境
二、【了解】熟悉商城项目
信息来源:
新项目:需求文档+产品经理
已经存在的项目: 文档(需求文档\使用说明书\测试用例) 人(测试老员工\产品经理\开发) 项目软件
熟悉的思路:用户 + 用户如何使用
熟悉标准:核心业务 + 核心功能模块
用户是谁?
用户怎么用?
哪个功能缺失会导致用户无法正常使用?
2.1 商城项目的核心业务:
下单业务(登录–搜索-----加入购物车-----下单-----支付)
发货业务(登录----确认订单----填单号)
售后业务(用户登录----发起申请—商家登录----商家确认申请----用户退货----商家确认收货—商家打款)
查询订单(用户登录----我的页面----我的订单)
2.2 商城项目的核心功能模块:
注册
登录
购物车
搜索
轮播图
评论
抢购
三、【重点】测试流程的应用 ★
流程的作用:让测试工作有条不紊的开展
3.1 需求评审
前提:提前阅读需求文档,记录疑惑点
目的:知道有什么功能,规则是什么,最终各部门理解一致.
3.2 计划编写
测什么
怎么测
谁来测
重点关注
准入标准:研发提测标准,什么时候可以开始测试
业务能跑通:P0
准出标准:什么时候结束测试
数据化:用例(100%) \缺陷(解决率:S0 100%,S1:100% S2\S3 :95%)
3.3 设计用例
先设计业务用例,后设计功能模块用例
3.4 用例执行
按优先级(推荐)
前提:写用例的时候标注清楚优先级并且明确优先级的定义
P0:最高级别.
按顺序执行
3.5 缺陷管理
提交时间:用例执行失败的第一时间
注意事项:
唯一性
可复现(明确复现步骤\问题发生时间\日志截图)
注明版本号
3.6 测试报告
四、【掌握】商城项目测试(业务流程)
方法:流程图法
如何编写用例:找路径;从开始到结束共有多少条路就有多少条用例.
4.1 发货业务(参考课堂用例)
4.2 评论业务(参考课堂用例)
用例模板
Bug模板
tpshop商城
总结
Day02 web项目业务测试、轮播图、注册、登录模块测试
能独立完成订单业务测试(退货业务、换货业务、订单查询业务、会员管理业务、商品管理业务)
能独立完成单模块测试(轮播图、注册、登录)
一、商城项目测试(业务流程)
二、商城项目单模块测试
如何编写用例
先测后台 后测前台
2.1 轮播图
-
需求分析
位置:后台–页面–广告管理—广告列表(搜索index页面增加广告位2)
操作完成后需要点击admin—更新缓存,前台页面刷新生效
-
拆解测试点
Day03 抢购业务测试
测试用例书写样例:模块-模块-正向 & 反向 ★
注册和注册用例是不一样的测试用例方向
Day04-web项目购物车模块测试
Day05-web项目抓包操作与测试报告
能操作抓包工具抓取http请求和响应的数据包 能操作抓包工具进行弱网测试 能使用抓包工具绕过页面限制进行测试
能根据测试报告模板编写tpshop测试报告
一 网络相关知识介绍
1.1 请求
二 抓包工具的应用
弱网测试
总结
Day06 手工课程第六天(APP)
一、熟悉APP项目
信息来源:
新项目: 需求文档 也可以问产品经理
已存在的项目: 文档(用例\需求文档\用户说明书) 人(测试老员工\ 产品经理\开发) 项目软件
思路:
用户是谁,用户怎么用?
标准
核心业务: 用户使用的过程
核心功能: 功能缺失会导致用户无法使用(用户)
- 核心业务
订单查询
售后流程
下单流程
会员管理
商品管理
评价流程 - 核心功能
登录
注册
购物车
支付
评论
抢购
添加商品
轮播图
搜索
二、app测试和web测试的区别
注册方面:数据同步问题(app注册 web能否登录)
登录方面:多点登录数据同步问题
app上线策略
Day07 手工课程第七天(app)
能够实现APP的专项测试(兼容性、安装卸载升级、干扰测试(交叉)、Push推送、用户体验)
能使用solopi完成APP的性能测试(CPU、内存、流畅度、流量、电量、启动速度、稳定性) 能独立说出常用的
APP命令格式(内存、CPU、安装、卸载、流量、启动时间、抓取日志) 能使用命令测试APP客户端的稳定性
(monkey)
1 APP专项测试 ★
一、兼容性
手机型号不同品牌商,不同机型(华为P30)
操作系统版本:
安卓:根据在线统计平台数据获取
iOS
分辨率
屏幕
尺寸:5.1. 5.5 4.7
类型: 刘海屏 水滴屏 曲面屏 折叠屏
网络: 移动数据 和 WiFi
应用兼容性
手机硬件: 手机上的物理按键(音量键 home键 电源键)
外部硬件: 蓝牙设备 有线设备
操作系统设置: wlan 时间 定位
其他APP: 具有后台播放功能的APP,例如音乐
二、安装
正常场景
从不同渠道安装
不同操作系统安装
不同的路径安装(手机\SD卡)
异常场景
中断安装(关机 断网),中断之后能否恢复安装
存储空间不足安装
安装时手动取消或暂停.恢复之后是否能正常安装
正在运行时能否覆盖安装(后台运行\前台运行:需要考虑是否会打断用户操作)
低版本覆盖高版本
卸载后再安装(卸载后是否会清除数据)
三、卸载
正常卸载(手机卸载\使用第三方软件卸载)
运行时卸载(后台运行)
取消卸载(第三方软件\二次弹窗确认时取消)
中断卸载(关机)
卸载后数据残留(给用户提示确认,如果用户同意残留,可以保留数据;如果用户拒绝残留,不可以保留数据)(如果不
做任何确认提示,默认需要清空残留数据)
四、升级
从临近版本升级(上一次发布的版本)
跨版本升级(历史发布过的版本)
当前版本是n: n-2 升级n
从不同渠道升级
升级成功提醒(红点提示\消息提示)
升级前是否提醒(消息推送提示升级\强制升级不提醒)
自己自研升级系统(日常升级\强制升级)
使用第三方(日常升级\强制升级)
当前版本是否具有升级能力(n升级n+1,升级规则)
五、干扰测试(交叉事件测试)
接打电话
收发短信
音视频电话
查看应用推送(其他软件的推送\当前软件的推送)
连接蓝牙设备
接收文件弹窗提醒(确认接收\拒绝接收)
旋转屏幕
切换网络(移动数据和WiFi自动切换)
手机自带应用(打开相机\手电筒\计算器)
低电提醒
插拔充电器(充电动画)
六、Push推送
七、用户体验
UI界面测试(原型图设计是否合理)
横竖屏测试(内容展示是否异常)
易用性测试(空数据提示\菜单层次是否过深\业务操作步骤是否过多\按钮位置是否适中)
手机上的辅助功能(色盲模式\盲人模式)
八、性能测试工具 SoloPi ★
- 能使用SoloPi完成APP的性能测试(CPU、内存、流畅度、流量、电量、启动速度、稳定性)
- 能独立说出常用的APP命令格式(内存、CPU、安装、卸载、流量、启动时间、抓取日志)
- 能使用命令测试APP客户端的稳定性(monkey)
SoloPi:是一个无线化、非侵入式的 Android 自动化工具,具备录制回放、性能测试等功能。
作用如下:
基础性能测试:能够记录待测应用的各项指标,可以在悬浮窗中观察实时更新的数据,也可以对性能数据进行录制,在录制结束后查看图表;同时,还支持性能加压,能够对CPU、内存与网络环境进行限制,复现应用在性能较差、网络环境不佳场景下的表现。
录制回放:通过SoloPi执行用例步骤,能够将用户的操作记录下来,支持在各个设备上进行回放,这一切都能够在手机上独立完成。
一机多控:支持通过操作一台主机设备来控制多台从机设备,不需要在各个设备上分别进行重复冗杂的兼容性测试,能够极大提升兼容性测试的效率。
Solopi的使用
点击开始监控,随后打开被测APP应用,开始测试
查看数据采集结果
性能:是衡量APP质量的一个重要指标 ★
l 常见的性能指标有:内存,CPU,流量,电量,启动速度,流畅度、稳定性等
性能测试关注点:
Ø APP使用时对CPU、内存的占用情况;
Ø APP使用时是否流畅等
Ø APP使用时,电量流量的消耗情况;
Ø APP的启动时间是否过长;
Ø APP是否能长时间稳定运行
一、内存 ★
1.1-性能内存基础知识 —— 内存监控指标
每个程序运行时都需要将代码和数据放入内存中,内存不足则程序无法正常运行。
SoloPi工具提供了两个内存的监控指标:PSS和Private dirty
Private dirty(私有内存):
l 进程独占内存,也就是进程销毁时可以回收的内存容量。
PSS(实际使用内存):
l 将跨进程共享页也加入进来, 进行按比例计算PSS。这样能够比较准确的表示进程占用的实际物理内存
内存问题的现象
常见的内存问题:
内存泄漏:
内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。
内存溢出:
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory
Ø memory leak会最终会导致out of memory!
内存问题曲线
内存泄漏:内存持续增长 就是 内存泄漏
内存溢出:直接变为0
二、CPU
性能CPU基础知识 —— CPU时间片
每个程序运行都需要占用CPU,那么单CPU的机器是如何同时运行多个程序的?
l 时间片即CPU分配给各个程序的时间,每个程序被分配一个时间段,称作它的时间片,即该程序允许运行的时间
SoloPi工具提供了两个CPU的监控指标:
-
全局占用CPU和应用进程CPU
-
全局占用CPU:
l 整机的CPU使用水平,即当前手机的CPU整体使用率。
l 计算公式:
Ø 在 Linux 系统下,CPU 利用率分为用户态、系统态和空闲态
Ø 用户态:表示 CPU 处于应用程序执行的时间
Ø 系统态:表示系统内核执行的时间
Ø 空闲态:表示空闲系统进程执行的时间。
Ø CPU 使用率 = CPU 执行非系统空闲进程时间 / CPU 总的执行时间 -
应用进程CPU:
l 表示自开机以来,应用程序消耗的CPU时间片的总数
CPU出现问题产生的影响:
l CPU使用长时间处于90%以上
l 手机发热、耗电量增加
l 反应变慢、引起ANR(Application Not Responding)
三、流量消耗 ★
手机上网时消耗的流量需要收费的,因此流量测试是app性能测试中比较重要的一项。
流量(指网络流量):
l 用手机打开APP进行互联网操作时,会和服务器之间交换数据,手机流量就是指这些数据的总大小。
l 数据报文是包含手机上下行的报文
SoloPi工具提供了流畅度的监控指标:网络
网络:
l 即网络流量,可以自动统计APP每秒上行和下行的报文大小
常用的流量测试方法:
l 统计测试法
Ø 利用工具获取应用程序收发的数据报文,统计出对应的流量
面试题:打开页面速度过慢,如何优化? ★
流量优化方法:
Ø 数据的压缩
Ø 不同数据格式的采用
Ø 控制访问的频次
Ø 只获取必要的数据
Ø 缓存机制
Ø 针对不同的网络类型设置不同的访问策略
四、电量
常见的耗电量大的场景: ★
l 定位,尤其是调用 GPS 定位。
l 网络传输,尤其是非 Wi-Fi 环境。
l 屏幕亮度
l CPU 运算:复杂的运算逻辑、死循环等会直接导致CPU负载过高,会导致耗电;
l wake_locker(锁屏-解锁)时间和次数
五、启动速度
APP启动测试:测试从启动app到主页面显示的时间,打开一个app等待的时间过长时就会有一种较差的体验
APP启动:分为冷启动,热启动。
冷启动:
l 指app被后台杀死后,在这个状态打开app,这种启动方式叫做冷启动。
热启动:
l 指app没有被后台杀死,仍然在后台运行,通常我们再次去打开这个app,这种启动方式叫热启动。
启动速度测试方法
格式:adb shell am start -W 包名/Activity名
l TP商城单商户包名/Activity名为:
com.tpshop.malls/com.tpshop.malls.SplashActivity
l 该命令获取3个关键指标:
Ø ThisTime: 当前activity的时间。
Ø TotalTime:应用的启动时间,包括创建进程、App初始化、
Activity初始化到界面显示。
Ø WaitTime:前一个应用activity pause的时间+TotalTime
六、流畅度
想要让大脑觉得动作是连续的,至少是每秒10-12帧的速度
l 想达到流畅的效果,至少需要每秒24帧
l 60帧每秒的流畅度是最佳的,我们的目标就是让程序的流畅度能接近60帧每秒
七、稳定性
稳定性测试:通过长时间对应用程序进行无序操作,检验应用程序是否会出现异常。如闪退crash、无响应ANR等
稳定性测试工具——Monkey:
l Monkey是一个命令行工具,是由安卓官方提供的。
l 测试人员可以通过Monkey来模拟用户的触摸、点击、滑动以及系统按键等操作(操作事件都是随机的),从而实现对
APP压力的测试和稳定性测试。(具体Monkey的使用在后续app自动化章节介绍)
l 开发人员结合monkey 打印的日志和系统打印的日志,修改测试中出现的问题。
常用的APP命令介绍
1. 查看已连接的设备列表:adb devices
2. 断开连接设备: adb disconnect 手机ip
3. 无线连接设备: adb connect 手机ip(手机和电脑处于同一网段)
4. 开启adb服务:adb start-server
5. 关闭adb服务:adb kill-server
6. 安装软件包: adb install /路径/软件包文件名(-r 保留数据 -t 强制覆盖 例如: adb install -r -t /路径/软件包的文件名)
7. 卸载软件包: adb uninstall app的包名
8. 获取包名
获取手机里所有的包名: adb shell pm list packages
获取手机里所有的系统应用的包名: adb shell pm list packages -s
获取手机里所有第三方软件的包名: adb shell pm list packages -3
9. 获取当前窗口(注意大小写区分)
Windows: adb shell dumpsys window | findstr mCurrentFocus
Mac/linux: adb shell dumpsys window | grep mCurrentFocus
10. 清除缓存: adb shell pm clear 包名
11. 启动/停止应用
12. 获取手机日志: adb logcat > 本地文件
注意:执行命令后,手机上操作复现步骤
13. 获取启动时间: adb shell am start -W 包名/activity名
14. 获取内存信息: adb shell dumpsys meminfo 包名
15. 获取CPU:
- adb shell dumpsys cpuinfo (查看当前CPU占用情况)
- adb shell top -s 9(代表CPU)
16. 获取流量消耗值
1.获取userId : adb shell dumpsys package 包名 | findstr userId
2.获取上行: adb shell cat proc/uid_stat/userId/tcp_snd
3.获取下行:adb shell cat proc/uid_stat/userId/tcp_rcv
注意:cat后的路径是固定; userId中的’i"是大写; package后不加s
17. 稳定性测试(Monkey)
- adb shell monkey -p 包名 数字 -v >本地文件
- -v -v -v :最高级别日志
- 常用命令:adb shell monkey -p 包名 10000 -v -v -v --throttle 500 > 本地文件
手机抓包操作介绍
Fiddler抓取手机包
一.对PC(笔记本)参数进行配置
1.配置fiddler允许监听到https(fiddler默认只抓取http格式的)
打开Fiddler菜单项Tools->TelerikFiddler Options->HTTPS,
勾选CaptureHTTPS CONNECTs,点击Actions,
勾选Decrypt HTTPS traffic和Ignore servercertificate errors两项,点击OK(首次点击会弹出是否信任fiddler证书和安全提示,直接点击yes就行),见图:
2.配置fiddler允许远程连接
上一步窗口中点击Tools->TelerikFiddler Options->Connections,勾选allow remote computers to connect,默认监听端口为8888(下图Fiddler listens on port就是端口号),若端口被占用可以设置成其他的,配置好后要重新启动fiddler,如下图:
点击完成之后,PC端配置完成,接下来开始配置手机端,以安卓为例,iOS方法同安卓;
二.对手机端进行参数配置
首先要保证手机和电脑都处于同一个网络;
然后要知道电脑的ip地址(当然这个电脑是安装fiddler的电脑),电脑ip地址可通过cmd,输入ipconfig查询,或网络共享中ipv4找到,我的是192.168.103.53,
再者要知道fiddler的端口号,Tools->TelerikFiddler Options->Connections,port中值就是端口号,一般默认为8888;接下来开始操作手机;
1.第一步:手机和电脑连接同一个网络,打开手机浏览器,输入http://ip:端口号,点击前往;见下图:
2.第二步:前往之后会跳转到证书下载页,见下图:
点击FiddlerRootcertificate下载证书;
3.第三步:点击下载之后,安装证书并起个名字,随便写就行,点击确定;
4.第四步:要求设置一个手机密码,自己设置一个,记住密码就行,最后不用了去系统-安全-密码中去掉即可;
5.第五步:更改手机无线网的代理
手机系统设置-无线网-点击高级,代理选择手动,主机名就是fiddler的电脑ip地址,端口号,就是fiddler的端口号,与浏览器中ip:端口号保持一致,点击确定即可,
6.操作手机,电脑fiddler中会显示一些http信息,成功;
Charles手机抓包
一、Charles设置
1、让电脑和手机处于同一个局域网下,即电脑和手机连接同一个WiFi【电脑开WiFi给手机连接也可以】;
2、打开Charles,点击菜单栏中Proxy –> Proxy Settings···,设置代理端口是8888【默认】,可以不修改端口号, 点击OK::
图1
图2
3、在cmd中ipconfig可以看到电脑的IP:
图3
4、如果要对HTTPS抓包的话,还需要设置Proxy -> SSL Proxying Settings -> SSL Proxying -> Add,添加所有的域名和端口:
图4
5、点击菜单栏Help->SSL Proxying->install Charles Root Certificates on a Mobile Device or Remote Browser,可以看到手机端安装证书提示:
图5
图6
二、手机设置
1、根据以上提示,打开手机的WiFi设置,连接和电脑同一个WiFi【或者连接电脑开启的热点】,设置代理IP与端口(代理IP就是上图的IP,端口就是Charles的代理端口8888);
2、手机浏览器访问网页,输入chls.pro/ssl,出现证书安装页面;
3、如果是苹果手机,点击安装后完成,在设置里面的通用,关于手机,信任证书:
图7
4、如果是Android手机,点击下载,然后在手机设置的安全里面,安装证书:
图8
三、手机抓包
1、以上设置之后,打开手机相关应用,就可以抓包了:
图9
图10