移动端APP⾃动化测试超全基础汇总
 ⽬录
⼀.⾯试过程
1.⾃动化岗位要求
2.⾯试流程,⾯试类型
3.沟通技巧,不同级别要求
⼆.真实⾯试案例
1.⼀个输⼊框的⾯试题(有⼈拿到⾼级岗位,有⼈连初级都没拿到,为什么)
三.⾃我分析
1.积累的知识决定了初⼊社会的岗位
2.什么是好的简历
3.需要掌握的基本知识
四.技术基础知识
1.常见测试理论
2.python语⾔常见问题
3.python常问算法
4.linux基本命令
5.计算机⽹络
6.操作系统
7.数据库相关
8.fiddler抓包⼯具
9.android系统相关⼯具  10.adb相关问题  11.monkey相关问题
五.⾃动化⼯具
1.Instrumentation
2.UIAutomator
3.Selendroid
4.Robotium
5.Appium
6.Selenium
六.⾃动化框架
1.Unittest框架
2.数据驱动DDT
3.⾏为驱动Lettuce
4.关键字驱动Robot Framework
5.测试报告管理
6.邮件服务管理
七.接⼝⾃动化
1.postman
2.python requests
⼋.持续集成(概念)  九.服务端性能测试  ⼗.兼容性测试  ⼗⼀.调试
正⽂
⼀.招聘要求  ⼆.⾯试过程(笔试-技术-性格-薪资)  三.⾯试类型  四.问题类型  五.注意事项  六.⾼效沟通  七.岗位级别
软件的⽣命周期:定义规划——需求分析——软件设计——编码——测试——维护
⾯试案例:⼀个输⼊框的⾯试题(测试以下输⼊框,你会测试哪些内容
⾯试者A:左侧顶部菜单——全部、图⽚切换——右侧顶部⼩⼯具——登陆功能——输⼊框——底部链接
⾯试者B:确认题⽬:是仅测试输⼊框,不考虑其他内容吗?回复:是的,仅测试输⼊框 
⾯试者B:⼤范围的话测功能、兼容性、稳定性、性能、安全、接⼝、线上监控、⾃动化⼋⽅⾯;⼩范围的话测功能、兼容性、安全三⽅⾯
    如果时间允许,我想从各⽅⾯说⼀下考虑的内容:
    关于功能:①常规:任意字符  ②⾮常规:有含义的字符串  ③边界、空格、超长⽂本(±1个字符,如-1个字符并输⼊中⽂)
    关于兼容性:①⽤户分布:机型、分辨率  ②浏览器  ③页⾯布局、渲染,借助firebug调试
    关于稳定性:①压⼒下,搜索是否正常返回  ②多次输⼊是否稳定
    关于性能:①QPS-每秒处理请求数  ②点击开始到完全加载,平均耗时  ③加载页⾯⼤⼩、资源(js、css)数量
    关于安全性:js注⼊、sql注⼊(输⼊框输⼊js代码)
    关于接⼝:①接⼝正确性  ②异常数据的容错情况  ③⾮浏览器环境下(绕过页⾯限制输⼊)
    关于线上监控:建⽴实时监控保障稳定性、降低影响
    关于⾃动化:基于selenium实现UI⾃动化,⽤selenium调⽤⼯具模拟浏览器UA返回页⾯,去做UI⾃动化。通过⾃动化可以例⾏回归验证,提⾼效率。
          ⽐如有⾃动化,可以在所以浏览器/⼿机上去做功能验证,过程中同时截图,再⽤python的图像处理⼯具,对图⽚与图⽚之间进⾏对⽐,将异常图像拿出
          也可以利⽤android使⽤APPium基于UIAutomator,ios使⽤WDA做⾃动化测试。
简历表现:
简历要表现出:技术能⼒、管理能⼒、学习能⼒、沟通能⼒、创新能⼒、团队协作    不要写别⼈对⾃⼰的评价,⽂案简洁,概况说明突出重点,多⽤数据图标
简历对⽐:
测试流程:
①需求沟通——制定测试⽅案——设计测试⽤例——准备测试环境——测试执⾏——bug处理——回归验证——跟进上线
②测试⽂档——产品、测试、开发评审——测试计划——测试⽤例——测试评审——开发完成提测——冒烟测试——正式测试——bug处理——评估质量——测试报告——上线跟进
bug:
①bug分级:优先级、严重程度  ②bug分类:UI、系统、接⼝  ③bug状态:新建、待修改、待验证、已验证、遗留、关闭
常⽤测试⼯具:
⽹络调试⼯具:fiddler  页⾯调试⼯具:Chrome Inspector、firebug  web⾃动化⼯具:QTP、selenium  移动端⼯具:ADB、monkey、MonkeyRunner
移动端⾃动化框架:appium、robotium、uiautomator、selendroid  平台知识:window、mac、android、linux  服务端压⼒⼯具:loadrunner、Jmeter 
数据库:mysql可视化⼯具navicat
⾃我分析:SWOT分析  strength优势——weakness劣势——Opportunity机会——Threat威胁
测试阶段:
单元测试(开发)——集成测试(开发)——系统测试——验收测试
测试流程:
需求沟通——制定测试⽅案——测试⽤例——测试环境——执⾏测试——bug处理——回归测试——跟进上线
测试计划:
5W原则:what明确测什么  why明确测试⽬标  when明确测试开始结束时间  how明确⽅案  where资料位置、路径、bug位置
测试⽤例⽅法:
1.等价类(相同属性集合,如0-9逻辑⼀样,只需验证⼀个)
2.边界值(±1)
3.错误推断
4.正交分析法(坐标系,如⼿机横坐标和浏览器纵坐标)
5.场景法(登陆成功、登陆失败)
6.因果图
7.判定表
bug包含什么:
①测试⼯程师、开发⼈员、bug⽇期  ②bug标题、bug正⽂、bug附件  ③优先级、严重程度  ④所属板块  ⑤bug状态(新建、修复、遗留、关闭) 
⑥bug处理记录
如何分层⾃动化:
UI⾃动化测试:针对不常变页⾯  接⼝⾃动化:周期短、变化频繁  单页测试(⽩盒)
B/S:浏览器与服务器  C/S客户端与服务器
安全测试包括:
①⽤户访问认证  ②传输数据加密  ③安全防护策略:安全⽇志、⼊侵检测  ④数据备份  ⑤防病毒  ⑥sql注⼊、js注⼊
测试报告包含:
①测试背景  ②测试范围  ③测试环境  ④测试⽅法  ⑤结论  ⑥质量风险评估
alpha测试:开发环境下测试  beta测试:⽤户真实环境下测试
bug类型:
①bug代码编写错误导致功能  ②defect缺陷,实现与需求不同  ③fault故障  ④error错误,逻辑语法错误,可能不影响⽤户体验
※※python※※
⾯向对象:OOP
    包含:类、继承、多态、实例、属性、⽅法
进程、线程、协程:
    进程【⽹线】:不共享数据(QQ与word)  线程【⽹线⼩细线】:执⾏程序最⼩单元(多个word)  协程:程序员调度,⼀个线程分多个“微线程”
如何使⽤python实现socket编程:
socket:套接字,应⽤程序通过套接字想⽹络发出请求,应⽤程序通过套接字应答⽹络请求,使主机间或者⼀台计算机的进程间可以通讯
什么是lambda函数
匿名函数,如:
tuple为元组(不可改),list为列表(可改)
range函数
返回⼀系列连续的整数,可以⽣成⼀个列表对象,⼯作⽅式类似于分⽚
alist = range(2,101,2)  print(alist)  ——>2,4,6,8,10 (100)
re模块match(只在字符串开始匹配)、search(扫描整个字符串)
python操作⽂件:(把⼤象放冰箱,打开,操作,关)
python算法:
常⽤算法:排序、冒泡、快排、堆排、⼆分查
※※Linux※※
基础:cd切换⽬录  ls -l列出⽂件详细信息  ls -a列出当前⽬录⽂件  touch创建⽂件  mkdir创建⽬录  echo创建带内容⽂件  cat查内容  cp拷贝  mv移动  rm -r递归删除  rm -f强制删除  wc统计字节数  tree显⽰⽬录结构  grep查  ln软连接
⽹络:curl⽂件传输  netstat⽹络信息  telnet远程主机
系统:ping连通  man查看帮助  kill杀死进程  top消耗最多进程信息  ps进程状态
更多参考本博客linux命令随笔
※※⽹络※※
想象⼴州——北京快递过程
物理层(公路)——数据链路层(⼗字路⼝,马路相连)——⽹络层(选择的路径)——传输层(运输车):TCP确保建⽴/慢,UDP直接发容易丢包/快——会话层(快递员)
表⽰层(快递包裹内容)数据内容——应⽤层(使⽤包裹):有http、https、smtp协议。
http中get与post区别:
功能:get——取东西(下载)  post——提交(上传)
传输⽅式:get——url+参数  post——放在body传输,安全
tcp与UDP:
tcp三次握⼿,四次挥⼿
手机mv
socket建⽴连接:
①建⽴服务器监听,socket,bind,listen  ②客户端发送请求,connect,send  ③连接确认,accept,response
※※数据库※※
创建库:create database 数据库名    show databases(查看数据库)
创建表:create table 表名    show tables查看表
操作数据:
    插⼊  insert into 表名 values (内容);
    查询  select * from 表名(where  );
    更新  updata 表名 set 字段=新值 where id=1;
    删除  drop table 表名;
※※fiddler※※