APP 测试:
	什么是app测试?
移动端互联网测试:
	app测试	
	H5页面 ---M网站 --就是H5开发的,所以叫H5页面
	小程序
	微信公众号

什么是手机?
	Android:
		硬件:CPU、内存。。。。
		系统:Android --->linux
		应用软件:	java 开发
	IOS:
		硬件:CPU、内存。。。。
		系统: IOS ---> unix
		应用软件: OC、swift
	鸿蒙:

概念:
app开发:
	原生开发:
		android:	纯java语言开发的app --没网络的时候也可以使用的
		IOS:	oc/swift	
	混合开发:
		Android : 有h5页面的app  --- H5+java开发
		IOS:	有h5页面的app  ----- OC、swift + H5开发
app测试:
	分析需求---写测试用例---执行
	需要考虑一些专项的场景:
		兼容:
			系统兼容:Android 和IOS
			手机的兼容--硬件设备的兼容:不同的手机厂商,不同手机型号
		弱网测试:
			网络不好的情况
		交互性测试:
			手机上的一些特有功能
	app的接口怎么看:
		fiddler抓包
	需要做哪些准备:
		测试环境准备:前后端代码都部署
		app包:
			android:	apk文件 --怎么来的?
								找开发要、直接在测试平台上下载测试包
						不同的包怎么区分?
							通过版本号区分
							版本号的含义:微信8.0.19 --->8 代表已经发布过8个大版本  --0中版本---19小版本
								版本发布的频率:
									大版本: ---对于系统的整个流程有影响,或者有非常大的变更---花费时间非常长 --发布很少
									中版本:对于某个部分的主要功能有影响,花费较长的时间  ---较少发布
									小版本:可能修改问题,也可能是某些优化,或者某些小功能 ---花费时间较短--发布频繁
			IOS:	ipa文件 ---从哪里来?
				找开发或者内部平台上下载 -----需要安装证书后的app才行 --证书从哪里来?---IOS开发者平台上下载
				
		测试机:真机 --->各个厂商的主流手机 --用户量最大的一些型号
		

M网站测试:H5页面
	
	怎么测?
		从需求分析开始--------执行
		测试准备:
			环境:测试环境前后端代码部署
			URL地址:找开发要测试环境的H5页面地址
			测试机:真机
	为什么有H5页面:
		H5页面兼容非常好:跨平台兼容 --URL地址 
			不同的app 之间也可以直接使用
			开发成本低:
				普通的web前端人员就可以开发
				只需要开发一次
			维护成本低:
				出现问题后-版本发布比较快--可以热修复---修复后快速生效
				可以后台控制---可以随时下线
				更新修改对于用户无感知
		
小程序测试:
		测试流程没有区别
		准备:
			环境准备:前后端代码部署
			测试环境小程序:两种方式测试
				1.直接在微信上测试
					怎么区分生产和测试环境:
						测试的小程序包也发布一下,但是做一个权限控制: 可以根据账号,也可以根据网络环境
						开发将你的微信号授权:扫码 --测试环境的小程序二维码--进入测试环境小程序去测试
				2.用小程序开发者工具测试
					类似一个模拟器:开发给代码包后,直接在上面点点点
微信公众号的测试:
	测试环境部署后直接在微信上测试
		关注测试的公众号:
			后台去设置可以使用的功能-然后测试
			后台发布文章然后去测试公众号上查看

app专项测试:
	兼容性测试:
		设备的兼容:
			手机: Android: 
					不同的厂商: 小米、华为、oppo、vivo、三星、诺基亚、努比亚、传音
						不同手机型号、不同的分辨率
					IOS:不同的手机型号
				测得什么?
					功能能否正常使用,界面显示是否正常
				需要尽量覆盖全所有的手机型号?
					使用云测平台测试:testin
		版本的兼容:
			系统版本:
				Android :10、11、12  ---高版本中版本低版本
				IOS:10、12、14	---高版本中版本低版本
				功能能否正常使用,界面显示是否正常
			app版本:
				版本更新:
					强制更新:不更新不能用
					非强制更新:不更新也能正常使用
						需要新版本兼容老版本:新版本会有新的功能,但是不能影响不更新的用户的正常使用
					怎么测?
						在发布新版本后分别安装最新版本的app去使用--执行相关的测试用例
						在发布新版本后 继续安装使用老版本的app去使用 ---执行相关的测试用例
	交互性测试:
		和设备固有功能的交互
			主动交互:
				定位
				存储
				电话
				短信
				相机
				重力感应
				手电筒
				蓝牙
				麦克风
				wifi
				指纹	
			被动交互:
				电话
				切换后台
				短信
				网络切换
				手机没电
				锁屏
				存储空间不足
				音量键
				充电
				插耳机	
		和其他app的交互:
			主动交互:
				登录授权
				分享
				支付
				推广广告
			被动交互:
				微信电话
				qq电话
				钉钉电话
				闹钟
				手机电量提醒
				导航的提示
				
	弱网测试:
		手机是移动设备--可能会到一些信号不好的地方去
		网络不好的情况下对app的影响:
			游戏
			视频:自动切换清晰度,自动缓存机制
			直播:提示切换线路,切换清晰度,画面延迟
			聊天:重试机制---不能同一条信息重复发送
			购物---支付:重复支付
		弱网怎么做?
			使用工具:fiddler
				1. 规则--性能设置--模拟慢速网络 --可以简单模拟弱网环境
				2. 精确模拟 具体的234G网络 
					规则 ---自定义规则--查找到 m_SimulateModem --将对应的速率修改 (需要换算成发送1kb的数据需要花的时间)
					
			现场测试(外景测试):把设备拿到对应的场景下去点点点
	adb命令使用:
		1. 配置环境
			下载sdk
			配置环境变量:
				1.新增:ANDROID_HOME 值为sdk安装路径,我的是:D:\sdk
				2.path路径中新增如下环境变量:
					%ANDROID_HOME%\tools
					%ANDROID_HOME%\tools\bin
					%ANDROID_HOME%\platform-tools
		2.使用:
			确定和手机设备的连接状态: adb devices
			连接设备命令:adb connect 127.0.0.1:7555
			查看设备运行日志:adb logcat
				adb logcat >你需要存放日志文件的地址和文件名(D:\test\009\app测试\test.log)
			安装app: adb install apk包的路径 
				adb install -r apk包的路径	#-r参数为覆盖安装
			卸载app:adb uninstall 包名
			查看设备上已经安装的应用包名 :adb shell pm list package
			精确查找包名:adb shell dumpsys activity | find "mFocusedActivity" 	#结果的u0后面和/之间的内容即为包名
					#需要先将app打开 然后再运行这条命令
			切换到shell模式:adb shell
					退出shell模式 --ctrl + c 
			文件上传: adb push 需要上传的本地文件目录 需要存放在手机上的路径
			文件下载: adb pull 需要下载的文件在手机上的路径  需要保存的本地地址
			
			当有多个设备时需要指定设备:
				在adb 后面加一个 -s 参数然后跟 设备名称
				例:当有多个设备时安装 app  :、
					adb -s 127.0.0.1:7555 install D:\软件包\apk\fanwe_P2P.apk	#127.0.0.1:7555 --设备名称
			杀死adb 服务: adb kill-server
			启动adb服务: adb start-server
			
			adb 连接真机:
				1.打开手机的开发者选项 --设置--关于手机--手机的版本信息--连续点击手机的版本号 然后会打开手机的开发者选项
					将开发者选项开启然后 开发者选项中的内容里有个  usb调试 --开启
				2.必须要用数据线 连接电脑和真机 连接电脑的时候会有一个提示信息--是否允许电脑控制设备 --勾选一律允许并且点击允许
				3. 使用adb命令连接手机
					adb connect 手机的IP地址 	
	稳定性测试:
		monkey工具:
			命令: adb shell monkey -p 包名 -v-v-v 5000  #monkey --指定需要执行的命令,-p 指定需要执行的app的包名,-v-v-v 日志级别:三个v最高一般就使用3个v,5000 事件数
			#monkey的参数位置是不固定的,参数位置顺序不影响命令的执行
		不同的app 事件的主次不一样(不同的事件的频率不同) 需要根据app来设置事件比例:
			0:触摸事件百分比,即参数--pct-touch
			1:滑动事件百分比,即参数--pct-motion
			2:缩放事件百分比,即参数--pct-pinchzoom
			3:轨迹球事件百分比,即参数--pct-trackball
			4:屏幕旋转事件百分比,--pct-rotation
			5:基本导航事件百分比,即参数--pct-nav
			6:主要导航事件百分比,即参数--pct-majornav
			7:系统事件百分比,即参数--pct-syskeys
			8:Activity启动事件百分比,即参数--pct-appswitch
			9:键盘翻转事件百分比,即参数--pct-flip
			10:其他事件百分比,即参数--pct-anyevent
		#设置的总的事件比例需要为100% :
			小于100:会自动补充到其他实际上去
			大于100:会报错,不会运行,日志中直接报错
			
		#设置事件时间间隔:
			--throttle 300 #300 为间隔时间 --单位是毫秒
			
		#monkey忽略机制
			--ignore-crashes   忽略崩溃
			--ignore-timeouts   忽略超时
			--ignore-security-exceptions 忽略安全信息
			--ignore-native-crashes 忽略本地代码导致的崩溃
			--monitor-native-crashes 忽略监视系统中本地代码发生的崩溃
		#复现操作步骤:
			monkey是伪随机事件:
				可以使用种子数复现
				1. 直接在每次运行的时候设置一个种子数  随便设置一串数字 --下一次运行的时候 就使用和上次一模一样的命令
				2. 如果第一次运行的时候没有主动设置种子数 ---查看日志获取第一行的种子数,然后使用上一次同样的命令 但是需要加上上一次运行的种子数再次运行也可以复现
				
				添加种子数:
					adb shell monkey -p 包名 -v-v-v -s 123456 5000	#-s 种子数参数 123456 --种子数的值
			
			
			
			
	性能测试:
	fiddler抓手机的包:
		前提条件:手机和电脑需要在同一个wifi下
		1.设置fiddler-工具--选项--HTTPS(勾选前三项)
								---connections --设置端口号为8888--勾选后三项
		2. 重启fiddler ---需要重启后以上设置才生效
		3. 手机设置---点击WLAN--长按你当前连接的wifi--点击高级选项---代理点开-选择手动--代理服务器主机名:输入你电脑的ip地址
			---代理服务器端口:输入你在fiddler上设置的口号--8888																			
		4. 下载证书:
				打开手机的浏览器---地址栏输入 你在上一步设置的ip地址:端口号(192.168.153.1:8888)---点击蓝色的Fiddlerroot certificate 下载证书
		5.安装证书:
			设置--安全--从SD卡安装证书---选择下载的证书文件-然后安装(证书的名字随便写不要用中文)--可能需要设置pin码(你的锁屏密码-需要自己记住)
				如果设置了pin码的需要重新选择证书安装一下
	fiddler 篡改接口数据:
		1. 选中 你需要篡改数据的接口---右键--保存--响应--响应数据(保存在一个你自己能找到的地方)
		2. 自动转发 --将第一行的可以勾选的框框全部勾选--点击加入规则---
				---会有两个输入框:第一个个输入框输入你需要篡改数据的url地址(这个地址不需要参数)
					---第二个数据框--点击下拉的最后一个 find a file --然后选择步骤1保存的响应数据
		3. 点击第一个输入框后面的保存
		4.打开 步骤1保存的响应数据文件,然后修改需要篡改的数据,然后保存
		5. 刷新软件页面 查看数据是否篡改成功