web测试
(1)web控件测试
界面检查、单行文本框、多行文本框、添加按钮、移除按钮、单选按钮、复选按钮、日期/时间控件、上传控件、树形控件、翻页控件、滚动条、列表、搜索框、搜索下拉框
(2)web功能测试
链接测试、表单测试、数据校对、数据库测试、流程测试
(3)web界面测试
导航测试、图形测试、表格测试、整体界面测试
(4)web性能测试
连接速度测试、负载压力测试
(5)web兼容性测试
平台测试、浏览器测试、分辨率测试
(6)web安全测试
目录设置、登录(登录次数限制,限制IP登录,登录失败3次后是否锁定,口令规则是否限制,不登录页面直接浏览,超时重新登录)、日志文件、脚本语言
APP测试
主流移动端操作系统:Android(基于linux)、IOS(属于Unix的商业操作系统)、Harmony(华为开发的操作系统)
Android系统架构
应用程序、应用程序框架、系统运行库、Linux内核
Activity:软件系统和用户进行交互的界面,一个activity,1帧=16ms,手机的fps是60帧
server:后台服务,通常没有交互的图形化界面,用于长时间处理任务,不影响前台用户体验。
Android与IOS的区别
Android–>
1)操作系统开源
2)开发语言java
3)程序包:xxx.apk
4)每家手机厂商都有自己的开发系统,基于安卓系统
5)安卓系统的所有权都是由谷歌公司来维护
IOS–>
1)操作系统闭源
2)开发语言Objiective-C
3)程序包:xxx.ipa
4)系统由苹果公司维护
5)安全性高、运行效率高
app分类
1、web APP:APP的所有页面都是由web语言开发出来的,页面所有的资源都保存在服务器中。
特点:1)开发周期短,成本低;2)所支持功能较少;3)必须依赖网络,没有网的情况下,软件不能使用
2、native APP(原生APP):手机自带的软件,软件的所有数据都保存在本地。
特点: 1)运行速度快,给用户最佳的体验感;2)开发周期长,开发成本高,Android和iOS需要单独开发
3、hybrid APP(混合APP):将APP中固定的框架和固定的数据保存在本地,将经常变动的数据保存在服务器。
特点:1)运行速度较好;2)功能发布较短
基本交互
手机APP测试工具
JDK
JDK下载https://www.androiddevtools.cn/
配置环境变量,将jdk以及jre的bin目录路径配置到系统变量path中
配置环境变量的目的:可以在任何路径运行程序,系统变量是任意用户都可以运行程序
验证安装:java -version会出现java版本
javac
jdk(java development kit):java语言软件开发工具包,包括jvm、jre、java基础类库
SDK
sdk下载https://www.androiddevtools.cn/
选择任何人使用电脑
不启动管理程序
配置环境变量
将以上三个文件的路径添加到系统path
添加系统变量
安装插件
验证
adb–>
aapt–>
常用ADB命令
下载夜神模拟器,开启模拟器内的开发者模式(连续点击版本号),打开USB调试,默认端口号62001
模拟器助手可以多开模拟器,开启模拟器之后就可以使用adb命令查看了
ADB( Android Debug Bridge,安卓调试桥)是一个通用命令行工具,其允许您与模拟器实例或连接的Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试应用。
1、连接模拟器
adb connect ip:端口号
出现adb版本和模拟器adb版本不一致时,将sdk目录下的adb.exe复制一份改名为nox_adb.exe
替换模拟器目录下的nox_adb.exe
此时客户端和服务器的版本一直,只要开启服务器就会自动连接上
2、查看adb已经连接的设备:adb devices
device 已经连接
offline 断开连接
unauthorization 已经连接成功,但是手机不信认此电脑
模拟器连接
连接手机
打开开发者选项—>打开usb调试—>默认usb配置更改为MIDI
1.有线连接:(开启电脑adb服务)—>插上数据线,允许usb调试—>adb devices查看连接设备名是手机的序列号
2.无线连接:手机和电脑在同一个局域网—>通过数据线进行连接—>通过手机设备占用端口号 adb tcpip 5555—>拔掉数据线,通过adb connect ip:端口号进行连接—>adb devices 查看连接的设备名是手机ip:端口号
3.开启adb服务器:adb start-server
4.关闭adb服务器:adb kill-server
5.断开连接 :adb disconnect(断开所有设备)
adb disconnect ip:端口号(断开指定设备)
6.进入安卓系统:adb shell
连接多个设备时,进入指定设备(adb -s ip:端口号)
进入安卓系统后,与linux命令基本相同,都可以使用
7.退出安卓系统:exit
8.查看系统版本:adb shell get prop ro.build.version.release
9.查看日志信息:adb logcat
清空之前的日志:adb logcat -c
将日志写入文件:adb logcat > 文件路径/文件名,Ctrl+C结束写入日志,没有路径写入cmd所在当前路径
10.获取手机上的安装包名:adb shell pm list packages(在安卓系统外)
pm list packages (在系统内部)adb shell pm list packages -3(获取第三方安装包名)
- 获取正在运行的包名和activity:adb shell dumpsys activity activities
12.在设备上安装app包:adb install 路径/包名(默认安装,原设备没有此包,否则安装不成功)
adb install -r 路径/包名(覆盖安装,不管设备上有没有这个app,都可以安装)
13.卸载app包:adb uninstall 包名
14.将文件从PC写入移动设备:adb push 本地路径 /设备路径
15.将文件从移动设备读取到PC:adb pull 设备地址 本地地址
16.截屏并保存到移动设备:adb shell screencap /sdcard/a.png
17.查看adb 版本:adb version
Monkey
adb shell monkey -p 包名 事件名称 事件百分比 参数 事 件数
操作事件
触摸事件 --pct-touch
触摸事件是指在屏幕某处按下并抬起的操作,2个事件
手势事件 --pct-motion
手势事件是指在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作,3个事件
二指缩放事件 --pct-pinchzoom
二指缩放事件是指在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,即智能机上的放大缩小手势操作。3个事件
轨迹事件 --pct-trackball
轨迹事件是由一个或多个随机的移动组成的,有时会伴随着点击。很早之前的Android手机带有轨迹球,这个事件就是模拟的轨迹球的操作。现在的手机几乎都没有轨迹球,但轨迹球事件中包含曲线滑动操作,如果被测程序需要曲线滑动时可以选用此参数。
屏幕旋转事件 --pct-rotation
屏幕旋转事件是一个隐藏事件。它其实是模拟的Android手机的横屏和竖屏切换。
基本导航事件 --pct-nav
基本导航事件是指点击方向输入设备的上、下、左、右按键的操作,现在手机上很少有上、下、左、右按键,这种事件一般用得比较少。
主要导航事件 --pct-majornav
主要导航事件是指点击“主要导航”按键的操作,这些按键通常会导致UI界面中的动作,如键盘的中间键、回退按键、菜单按键。
系统按键事件 -pct-syskeys
系统按键事件是指点击系统保留使用的按键的操作,如点击Home键、返回键、音量调节键等。
启动Activity事件 --pct-appswitch
启动Activity事件是指在手机上启动一个Activity的操作。在随机的时间间隔中,monkey将执行一个startActivity()方法,作为最大限度上覆盖被测包中全部Activity的一种方法。
- 键盘事件 --pct-flip
键盘事件主要是一些与键盘相关的操作。比如点击输入框、键盘弹起、点击输入框以外区域、键盘收回等。
- 其他类型事件 --pct-anyevent
其他类型事件包括了除前面提到的10种事件外其他所有的事件,如按键、其他不常用的设备上的按钮等。
参数
–throttle 间隔时间,单位是ms,表示每个事件操作一次间隔的时间
–ignore-crashes 忽略崩溃 --ignore-timeouts 忽略程序超时错误 --ignore-security-exceptions 忽略应用程序权限错误
以上三个都是在程序发生异常时,能够继续下面的操作,一般测试都是在晚上进行,如果不带这三个参数,程序报错就会停止,无法达到测试效果
使用-v指定log的详细级别 monkey的日志输出有3个级别:日志的级别越高,其详细程度也越高。为了方便问题的定位,一般使用-v-v,将正确日志和错误日志分别保存。
adb shell monkey -p com.jingdong.app.mall --pct-touch 40 --pct-motion 25 --pct-rotation 5 --pct-appswitch 30 --throttle 400 --ignore-crashes --ignore-timeouts -v-v 200 1>a.log 2>b.log
手机app测试内容
测试内容为专项测试、埋点测试和性能测试
专项测试
(1)****功能测试
依据需求文档、业务逻辑、隐形需求进行测试。
(2)****弱网测试
通过fiddler设置延迟、设置高丢包来进行测试
观看弱网情况下的2g、3g、高延迟、高丢包情况下app能够正常使用
(3)****兼容性测试
屏幕分辨率
不同品牌安卓手机
不同的操作系统
能否与其他软件兼容
(4)****安装卸载测试
安装测试:
- 软件在不同操作系统下安装是否正常。
- 软件安装后的是否能够正常运行,安装后的文件夹及文件是否写到指定的目录里。
- 软件安装向导的UI测试
- 软件安装过程是否可以取消,点击取消后,写入的文件是否如概要设计说明处理
- 软件安装过程中意外情况的处理是否符合需求(如死机,重启,断电,断网)
- 安装空间不足时是否有相应提示
- 安装后有没有生成多余的目录结构和文件
- 安装时获取的一些权限,例如摄像头、录音等
- 安装后再次安装,或者app更新安装
- 安装后app的图标,名称显示
- 安装过程中的提示信息正常
卸载测试:
- 直接删除安装文件夹卸载是否有提示信息。
- 测试系统直接卸载程序是否有提示信息。
- 测试卸载后文件是否全部删除所有的安装文件夹。
- 卸载过程中出现的意外情况的测试(如死机、断电、重启)。
(5)****稳定性测试
通过monkey测试
下班之前编写好monkey脚本,设置事件,尽可能模拟用户的操作,设置时间间隔,忽略崩溃,无响应,日志分流保存,执行monkey脚本,第二天上班之后查看错误日志,搜索anr,crash,exception,统计出现的频率,提交bug,修复之后,携带seed值验证是否修复(-s)。
稳定性测试结束标准:近30多万次事件未出现anr,crash,exception问题
(6)****安全测试
- 扣费风险
- 隐私泄露风险:例如在我们安装APP应用时通常会看到"xx要读取 手机通讯录"等提示,这些提示可以提示用户拒绝接受,这 些是APP测试中的测试点。
- 校验input输入:对于APP有输入框的要对输入的信息进行校验, 比如密码不能显示明文。
(7)****干扰测试
收到电话、收到短信、收到通知栏消息、无电提示框弹出、第三方安全软件告警弹出。
(8)****交互测试
前后台交互
应用之间交互
埋点测试
埋点是唯一标识页面和操作行为的一串字符串,在应用中特定的流程收集一些信息,包括访问数,访客数,页面浏览数和点击数等,用来跟踪应用使用的状况,后续用来进一步优化产品或是提供运营的数据支撑。
adb logcat |grep “埋点”
操作该埋点对应的页面或者行为
看日志中是否有埋点(该方法是对客户端的埋点测试)
查询数据库,看是否有该埋点(用来看是否埋点数据是否插入数据库,以便后来统计数据)
性能测试
app前端性能:cpu、内存、流量、电量、启动耗时(冷启动、热启动)、fps、渲染
app前端性能工具:性能狗(只测fps)GT(全部都测)adb收集数据
adb收集数据
1.占用的cpu:adb shell dumpsys cpuinfo | findstr “包名”
2.占用的内存:adb shell dumpsys meminfo | findstr “包名” adb shell top -d 3(每3秒刷新一次)
3.消耗的电量:adb shell dumpsys battery 查看手机的电池信息
4.启动耗时:启动APP:adb shell am start -W -n app的activity
1)冷启动:安装后第一次启动
冷启动关闭:adb shell am force -stop 包名
2)热启动:非第一次启动
热启动关闭:adb shell input keyevent 3
5.流量:1)查看app进程的pid:adb shell ps | findstr 包名
2)通过app进程的pid获取流量信息:adb shell cat /pro/pid号/net/dev
日志的错误通常有三种:anr(程序无响应)crash(程序崩溃)exception(其他异常)
产生anr的原因
1)应用进程的主线程对输入事件在5s内没有处理完毕
2)应用进程的主线程在执行BroadcastRecevier的onReceive函数时10s内没有和粗理完毕
3)应用进程的主线程在执行Service的各个生命周期函数时20s内没有处理完毕
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ybxg58aE-1678533701202)(C:\Users\张凯琪\AppData\Roaming\Typora\typora-user-images\1676962923529.png)]
产生crash的原因
1)空指针异常
2)堆栈溢出(内存泄漏:只申请内存,不释放内存;内存溢出:内存被占用完了,或内存已经释放但系统未回收)
3)数组越界
4)应用进程被其他进程中断
5)系统反应缓慢,导致主线程卡死,请求超时
6)cpu负载过高
7)控件不匹配
8)死锁
9)运行异常
APP测试和WEB测试的区别
1.功能方面:
在流程和功能测试上是没有区别的,系统测试和一些细节可能会不一样。那么我们就要先来了解,web和app的区别:
web项目,一般都是b/s架构,基于浏览器的,而app则是c/s的,必须要有客户端。在系统测试的时候就会产生区别了。
首先从系统架构来看的话,web测试只要更新了服务器端,客户端就会同步会更新。而且客户端是可以保证每一个用户的客户端完全一致的。但是app端是不能够保证完全一致的,除非用户更新客户端。如果是app下修改了服务端,意味着客户端用户所使用的核心版本都需要进行回归测试一遍。
2.性能方面:
web页面可能只会关注响应时间,而app则还需要关心流量、电量、CPU、GPU、Memory这些了。
3.兼容性方面:
web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容,不过一般还是以浏览器的为主。而浏览器的兼容则是一般是选择不同的浏览器内核进行测试(IE、chrome、Firefox)。app的测试则必须依赖phone或者是pad,不仅要看分辨率,屏幕尺寸,还要看设备系统。系统总的来说也就分为Android和iOS,不过国内的Android的定制系统太多,也是比较容易出现问题的。
4.相比较web测试,app更是多了一些专项测试:
一些异常场景的考虑以及弱网络测试。这里的异常场景就是中断,来电,短信,关机,重启等。
而弱网测试是app测试中必须执行的一项测试。包含弱网和网络切换测试。需要测试弱网所造成的用户体验,重点要考虑回退和刷新是否会造成二次提交。需要测试丢包,延时的处理机。
5.安装、卸载、更新:
web测试是基于浏览器的所以不必考虑这些。而app是客户端的,则必须测试安装、更新、卸载。除了常规的安装、更新、卸载还要考虑到异常场景。包括安装时的中断、弱网、安装后删除安装文件,更新的强制更新与非强制更新、增量包更新、断点续传、弱网,卸载后删除app相关的文件等等。
6.界面操作:
app产品的用户都是使用的触摸屏手机,所以测试的时候还要注意手势,横竖屏切换,多点触控,事件触发区域等测试。
浏览器的兼容则是一般是选择不同的浏览器内核进行测试(IE、chrome、Firefox)。app的测试则必须依赖phone或者是pad,不仅要看分辨率,屏幕尺寸,还要看设备系统。系统总的来说也就分为Android和iOS,不过国内的Android的定制系统太多,也是比较容易出现问题的。
4.相比较web测试,app更是多了一些专项测试:
一些异常场景的考虑以及弱网络测试。这里的异常场景就是中断,来电,短信,关机,重启等。
而弱网测试是app测试中必须执行的一项测试。包含弱网和网络切换测试。需要测试弱网所造成的用户体验,重点要考虑回退和刷新是否会造成二次提交。需要测试丢包,延时的处理机。
5.安装、卸载、更新:
web测试是基于浏览器的所以不必考虑这些。而app是客户端的,则必须测试安装、更新、卸载。除了常规的安装、更新、卸载还要考虑到异常场景。包括安装时的中断、弱网、安装后删除安装文件,更新的强制更新与非强制更新、增量包更新、断点续传、弱网,卸载后删除app相关的文件等等。
6.界面操作:
app产品的用户都是使用的触摸屏手机,所以测试的时候还要注意手势,横竖屏切换,多点触控,事件触发区域等测试。
版权归原作者 K7() 所有, 如有侵权,请联系我们删除。