App 崩溃闪退原因
- 缓存过多
- 运行程序过多,引起内存不足现象
- 应用版本兼容性问题
- 组建未加载等问题
- 代码内部异常,空指针错误
- SDK兼容性等问题
App的冷启动和热启动
冷启动:应用启动时后台没有该应用进程,系统会重新创建一个新的进程分配给该应用。如:清除手机内存再打开该应用
热启动:应用已经被打开,但是按下了home或返回键,可以在后台再次打开该应用
如何定位bug是App端还是服务端问题
1. 抓包分析: 通过模拟客户端请求,看服务端返回数据是否正确
2. 日志分析:查看客户端或服务端的日志,从而判断是哪块的问题
App测试和web测试有什么区别
1. 测试范围:web端一般是b/s架构,基于浏览器的,app是c/s架构,是有客户端的。web只要更新服务端,客户端就会同步更新,app端修改了服务端,那客户端所使用的核心版本都会被影响。
2. 性能测试:web关注网页响应时间,app除了响应时间,还要关注流量电量,CPU,内存的占用等等
3. 兼容测试:web会测不同浏览器,app测试依赖于手机的客户端,分辨率,屏幕尺寸,系统版本。app还多了一些专项测试,异常场景:弱网测试,中断来电短信关机等,安装卸载更新等测试。
App兼容性测试
1. 硬件设备兼容:市面主流,统计类大数据网站获取手机占有率
2. 操作系统兼容:操作系统市场占有率
3.分辨率兼容:主流屏幕分辨率,屏幕尺寸
4.网络兼容:不同网络运营商
自动化的PO模式
PO模式是指page object, 有三层:对象层,页面层,操作层
对象层:封装元素定位方法
操作层:封装元素的特定操作
业务层:把一个或多个操作组合成具体的业务,实现具体的功能测试
eg:登陆页面
①实现basepage基类,主要实现driver的获取,通过driver可以进行相关的操作,
②根据basepage基类实现对象层,封装登陆页面的元素定位,封装定位用户名,密码,确认按钮的定位方式
③根据封装定位方法封装他们的操作,例如输入用户名和密码,点击确认按钮
④根据封装loginpage页面和操作类,实现登陆的方式
App的push推送测试点
1.触发场景是什么
2.推送消息内容是否正确
3.push推送用户是否正确,部分推送,全部推送,指定用户推送
4.push推送消息的点击跳转是否正常
5.app前台运行或后台运行,用户是否都能收到push消息
6.未登录用户是否能接收到push消息
7.用户长时间未登录,后续登录时是否会收到历史推送消息
Pytest与unittest的区别
1.unittest兼容性更稳定,pytest在安装时可能会出现与python版本兼容性的问题
2.unitest都是以类的方式编写的,都要继承unitest.Testcase。pytest支持函数和类两种方式,并且pytest有conftest.py这个文件来支持全局的共享,前置和后置。
3.用例识别和收集上,unitest利用test suite和test load来制动收集和加载用例,pytest时依据pytest.ini的规则即可自动识别用例
4.用例分类和筛选上面,unitest筛选用例比较麻烦,pytest可以通过mark打标记实现用例筛选
5.数据驱动上,unitest需要借助ddt库实现,pytest可以通过pytest.mark.parametrize来实现
6.功能增强方面,失败截图,失败重试,多进程,线程执行等,unitest需自定义和二次开发,pytest有对应插件或hook函数直接使用
自动化如何处理app的不定时弹框
1. 启动线程,监听弹框元素,确定取消等等,每隔0.5s查找元素,如果有就点掉
2.在所有操作前增加弹框识别
怎么区分App上面H5和原生页面
1. 断开网络,如果显示404或错误页面,说明就是一个H5
2.查看页面布局,手机设置中有一个开发者选项,开启显示布局边界,进入另一个app查看布局的界面,都是原生的话可以看到各个控件的布局,H5是整个页面的一个边界
3.长按界面,如果出现特殊标记,放大镜,复制,粘贴等,就表示是H5
4.页面有加载线条-H5
5.App顶部导航栏有关闭图标的话-H5
6.下拉页面,显示网页提供方 - H5