面试官问你什么内容的时候,其根本是为了了解你对这个东西的理解程度
1、讲自己的了解(知识)
2、讲自己的理解你在面试官心目中,会是一个具有独立思考能力的人
操作系统上的不同:
ios基于Unix的系统
Android基于Linux的系统各个方向:
操作
Android长按Home键呼出应用列表和切换应用,然后滑动终止应用
ios是向上滑动,终止应用渲染
Android是在数据层渲染应用
ios是在UI层渲染应用安装
Android是apk Android的权限给的是底层的root权限
ios app ios 给的仅仅是应用权限兼容
... 其实就是在讲渲染
4个重要组件:
1、Activity 监听用户屏幕操作,调用app底层操作的 一个枢纽--》用户和APP互动的枢纽
2、BroadcastReceiver 广播接收者 它是负责底层操作对Activity指令接受的普通广播:广播类型、有序广播、无序广播
广播接收者会在Activity关掉之后,对应的广播失效广播接受者运行的机制是被运行,不会主动调起
3、 service 服务
服务类型
通过startService启动的服务
服务周期: onstart--》onstartCommand---》onDestroy
通过onBind启动的服务
服务周期: onBind-》onUnBind---》onDestroyservice管理进程构建 举例: 音乐应用 后台播放 ,游戏应用 后台暂停
4、Content Provider(内容提供者)实现不同应用程序直接的数据共享
它不仅仅可以对应用程序实现数据共享,还可以选择性的共享;(安全性的考虑)
举例:当你登录的时候选择微信登录,会调用微信获取微信的用户数据
1、页面布局
APP是负载在移动设备上(屏幕小)
pc屏幕大
所以测试的侧重点也不同2、操作方式
app
触控
语音
键位pc
鼠标
键盘
3、输入方式
app
屏幕的触控压力输入
语音识别输入
键位操作输入pc
鼠标输入
键盘输入
4、使用场景
pc 电源稳定 电量 、场景固定 网络
app 电源不稳定 充电使用 、场景不固定 网络干扰较多
APP闪退会销毁原有进程;
所以APP闪退导致的问题,很多时候,在APP构建的源码中添加日志,无法确定异常所在;
首先要看设备日志;
获取Android崩溃日志
1、 logcat导出
搜索:begin crash Exception fatal 注意:要过滤包名
2、adb bugreport3、手机的本地文件 问开发路径在哪 然后导出
4、手机监控平台 记录手机的cpu 、io、memoryinfo
ANR 全称:application not responding
分析思路:使用排除法去分析问题,对用的内容需要开发提供对应的日志监控,重现这个过程,去获取这个日志
1、触发机制
服务超时 20s
广播超时 10s内容提供者超时 5-10s
输入事件的超时 5s
2、日志
a.Trace日志: 广播超时阻塞
b. logcat :搜索关键字:anr in 、low_memory、slow_operation
c.分析kernel:搜索日志中的lowmemorykillerd.cpuinfo:监控,复查,确定问题的存在 内存、IO、cpu %
e.meminfo: 内存消耗偏高导致的问题
1、内存消耗
APP调用的所需内存超过了可用内存;
内存是有管理进程的---》每个APP在调用之前,是由内存管理者分配内存大小的---》内存分配的限制小于APP所需
2、程序的逻辑错误(代码的不严谨,或者考虑的不够周到导致的)逻辑处理错误:数组越界、堆栈溢出、并发操作、逻辑错误
3、设备兼容性APP在不同的设备上有不同的体现
4、网络因素网速不好,导致APP所需的响应时间不足;所以导致crash
网络切换可能会导致
crash是可以被修复的,出现关闭或等待两个操作,进程还在
但是闪退不能被修复,进程被销毁了。
jmeter怎么运行测试用例
运行方式:
GUI运行:点击启动按钮
非GUI运行/命令行运行: jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
单线程提起多线程运行
鉴权怎么处理/测试?
鉴权:
cookie 配置元件 ---》 HTTP Cookie管理器
session 配置元件 ---》 HTTP Cookie管理器
session生效方式是在cookie中 添加一个session_id字段
token 从上个接口的响应提取出来,传递给下个接口
签名(加密)
加密规则
1、拼接(时间戳,随机数,令牌,请求数据)后加密 所以我们根据加密规则伪造加密数据即可
2、排序后拼接后再加密 所以我们根据加密规则伪造加密数据即可
跨线程数据怎么处理跨线程的数据传递 原理是:将私域变量声明为全局变量,从而可以全局引用
函数助手对话框 ${__setPropeyty(,,)} 声明 , ${__P(,)} 调用
注意实现,声明和调用有先后关系;一定要声明在前,调用在后
jmeter中怎么使用函数和变量${函数名}
${__V(函数拼接名${函数名}}
jmeter录制脚本的流程,和录制的原理是什么?流程
启动http代理 注意事项,在启动前要设置好目标控制器
设置计算机网路代理运行被测项目
停止http代理
恢复计算机网路代理
原理:
网络代理的原理
理解:理解:好像BOSS和员工A之间传话的秘书(秘书能知道BOSS对员工A说了什么
,也知道员工A对BOSS 说了什么)
jmeter测试报告的生成1、界面生成 查看结果树 聚合报告
2、命令行生成 jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
3、ant
JMETER 持续集成 jenkins CI / CD
有一个已经上线的APP项目,你怎么测试?
就是网络代理拦截数据,修改数据,然后传递服务器的过程
如果要测一个APP的不同的网络情况下的使用,你怎么测试?fiddler的弱网测试 网络代理 + 设置不同的网络传输字节情况
弱网测试执行步骤:
操作步骤1.设置要模拟的网络速度(1)选中需要设置弱网的接口,自定义规则。Rules ->Customize Rules
( 2) ctrl+F 输入m_SimulateModem或者300,找到m_SimulateModem
(3)更改上行、下行网络速度,Ctrl+S 保存注:
request-trickle-delay:代表每KB的数据被上传时会被延时多少毫秒
response-trickle-delay:对应下载时每KB的数据会被延时多少毫秒
2.开启网络延时( 1 ) Rules->Performance->Simulate Modem Speeds
(2)测试项目并记录数据
3.测试项目注:测试完成后需恢复设置
数据驱动 参数化
接口关联
断言
token sesssion cookie
持续集成 jenkins CI / CD
涉及的内容很多
定义层面的内容 如:操作系统
系统的详情
整体的了解
象征性意义的异常情况
比如:api
1、协议是什么?接口是什么?什么是接口自动化
2、对每个协议的理解
3、api测试和传统的测试有什么不同?
4、鉴权、接口加解密、接口关联、签名