课程目标
能独立编写电商项目7个核心业务模块的用例
根据测试流程的6个步骤能独立对所有项目实施功能测试
今日目标
能说出web项目环境的组成
能说出tpshop商城项目业务的操作步骤(下单业务、发货业务、退换货业务、订单查询业务、会员管理业
务、商品管理业务)
能说出测试流程的6个步骤和作用
能根据测试流程6个步骤独立完成测试(下单业务、发货业务、评论业务)
测试环境:专门提供给测试人员使用
开发环境:开发人员使用
生产环境:提供给用户
预生产环境:设置和数据是一样.
注意:
情况一:2种环境, 测试环境+生产环境; 如何解决开发和测试进度冲突问题
答:区分开发周和测试周;开发工作时(开发新功能)不测试,测试工作时开发不进新代码.
情况二:3种环境,开发环境+测试环境+生产环境
信息来源:
新项目:需求文档+产品经理
已经存在的项目: 文档(需求文档\使用说明书\测试用例) 人(测试老员工\产品经理\开发) 项目软件
熟悉的思路:用户 + 用户如何使用
熟悉标准:核心业务 + 核心功能模块
用户是谁?
用户怎么用?
哪个功能缺失会导致用户无法正常使用?
下单业务(登录–搜索-----加入购物车-----下单-----支付)
发货业务(登录----确认订单----填单号)
售后业务(用户登录----发起申请—商家登录----商家确认申请----用户退货----商家确认收货—商家打款)
查询订单(用户登录----我的页面----我的订单)
注册
登录
购物车
搜索
轮播图
评论
抢购
流程的作用:让测试工作有条不紊的开展
前提:提前阅读需求文档,记录疑惑点
目的:知道有什么功能,规则是什么,最终各部门理解一致.
测什么
怎么测
谁来测
重点关注
准入标准:研发提测标准,什么时候可以开始测试
业务能跑通:P0
准出标准:什么时候结束测试
数据化:用例(100%) \缺陷(解决率:S0 100%,S1:100% S2\S3 :95%)
先设计业务用例,后设计功能模块用例
按优先级(推荐)
前提:写用例的时候标注清楚优先级并且明确优先级的定义
P0:最高级别.
按顺序执行
提交时间:用例执行失败的第一时间
注意事项:
唯一性
可复现(明确复现步骤\问题发生时间\日志截图)
注明版本号
方法:流程图法
如何编写用例:找路径;从开始到结束共有多少条路就有多少条用例.
用例模板
Bug模板
能独立完成订单业务测试(退货业务、换货业务、订单查询业务、会员管理业务、商品管理业务)
能独立完成单模块测试(轮播图、注册、登录)
如何编写用例
先测后台 后测前台
需求分析
位置:后台–页面–广告管理—广告列表(搜索index页面增加广告位2)
操作完成后需要点击admin—更新缓存,前台页面刷新生效
拆解测试点
能操作抓包工具抓取http请求和响应的数据包 能操作抓包工具进行弱网测试 能使用抓包工具绕过页面限制进行测试
能根据测试报告模板编写tpshop测试报告
1.1 请求
信息来源:
新项目: 需求文档 也可以问产品经理
已存在的项目: 文档(用例\需求文档\用户说明书) 人(测试老员工\ 产品经理\开发) 项目软件
思路:
用户是谁,用户怎么用?
标准
核心业务: 用户使用的过程
核心功能: 功能缺失会导致用户无法使用(用户)
能够实现APP的专项测试(兼容性、安装卸载升级、干扰测试(交叉)、Push推送、用户体验)
能使用solopi完成APP的性能测试(CPU、内存、流畅度、流量、电量、启动速度、稳定性) 能独立说出常用的
APP命令格式(内存、CPU、安装、卸载、流量、启动时间、抓取日志) 能使用命令测试APP客户端的稳定性
(monkey)
安卓:根据在线统计平台数据获取
iOS
尺寸:5.1. 5.5 4.7
正常卸载(手机卸载\使用第三方软件卸载)
运行时卸载(后台运行)
取消卸载(第三方软件\二次弹窗确认时取消)
中断卸载(关机)
卸载后数据残留(给用户提示确认,如果用户同意残留,可以保留数据;如果用户拒绝残留,不可以保留数据)(如果不
做任何确认提示,默认需要清空残留数据)
从临近版本升级(上一次发布的版本)
跨版本升级(历史发布过的版本)
当前版本是n: n-2 升级n
从不同渠道升级
升级成功提醒(红点提示\消息提示)
升级前是否提醒(消息推送提示升级\强制升级不提醒)
自己自研升级系统(日常升级\强制升级)
使用第三方(日常升级\强制升级)
当前版本是否具有升级能力(n升级n+1,升级规则)
接打电话
收发短信
音视频电话
查看应用推送(其他软件的推送\当前软件的推送)
连接蓝牙设备
接收文件弹窗提醒(确认接收\拒绝接收)
旋转屏幕
切换网络(移动数据和WiFi自动切换)
手机自带应用(打开相机\手电筒\计算器)
低电提醒
插拔充电器(充电动画)
UI界面测试(原型图设计是否合理)
横竖屏测试(内容展示是否异常)
易用性测试(空数据提示\菜单层次是否过深\业务操作步骤是否过多\按钮位置是否适中)
手机上的辅助功能(色盲模式\盲人模式)
SoloPi:是一个无线化、非侵入式的 Android 自动化工具,具备录制回放、性能测试等功能。
作用如下:
基础性能测试:能够记录待测应用的各项指标,可以在悬浮窗中观察实时更新的数据,也可以对性能数据进行录制,在录制结束后查看图表;同时,还支持性能加压,能够对CPU、内存与网络环境进行限制,复现应用在性能较差、网络环境不佳场景下的表现。
录制回放:通过SoloPi执行用例步骤,能够将用户的操作记录下来,支持在各个设备上进行回放,这一切都能够在手机上独立完成。
一机多控:支持通过操作一台主机设备来控制多台从机设备,不需要在各个设备上分别进行重复冗杂的兼容性测试,能够极大提升兼容性测试的效率。
点击开始监控,随后打开被测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的机器是如何同时运行多个程序的?
l 时间片即CPU分配给各个程序的时间,每个程序被分配一个时间段,称作它的时间片,即该程序允许运行的时间
SoloPi工具提供了两个CPU的监控指标:
全局占用CPU和应用进程CPU
全局占用CPU:
l 整机的CPU使用水平,即当前手机的CPU整体使用率。
l 计算公式:
Ø 在 Linux 系统下,CPU 利用率分为用户态、系统态和空闲态
Ø 用户态:表示 CPU 处于应用程序执行的时间
Ø 系统态:表示系统内核执行的时间
Ø 空闲态:表示空闲系统进程执行的时间。
Ø CPU 使用率 = CPU 执行非系统空闲进程时间 / CPU 总的执行时间
应用进程CPU:
l 表示自开机以来,应用程序消耗的CPU时间片的总数
手机上网时消耗的流量需要收费的,因此流量测试是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等
l Monkey是一个命令行工具,是由安卓官方提供的。
l 测试人员可以通过Monkey来模拟用户的触摸、点击、滑动以及系统按键等操作(操作事件都是随机的),从而实现对
APP压力的测试和稳定性测试。(具体Monkey的使用在后续app自动化章节介绍)
l 开发人员结合monkey 打印的日志和系统打印的日志,修改测试中出现的问题。
获取手机里所有的包名: adb shell pm list packages
获取手机里所有的系统应用的包名: adb shell pm list packages -s
获取手机里所有第三方软件的包名: adb shell pm list packages -3
Windows: adb shell dumpsys window | findstr mCurrentFocus
Mac/linux: adb shell dumpsys window | grep mCurrentFocus
注意:执行命令后,手机上操作复现步骤
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
1.配置fiddler允许监听到https(fiddler默认只抓取http格式的)
打开Fiddler菜单项Tools->TelerikFiddler Options->HTTPS,
勾选CaptureHTTPS CONNECTs,点击Actions,
勾选Decrypt HTTPS traffic和Ignore servercertificate errors两项,点击OK(首次点击会弹出是否信任fiddler证书和安全提示,直接点击yes就行),见图:
上一步窗口中点击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;接下来开始操作手机;
点击FiddlerRootcertificate下载证书;
手机系统设置-无线网-点击高级,代理选择手动,主机名就是fiddler的电脑ip地址,端口号,就是fiddler的端口号,与浏览器中ip:端口号保持一致,点击确定即可,
一、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