一、你有没有做过自动化测试
我在xx项目中实施了web自动化测试,我们项目中搭建自动化测试框架技术:python+selenium+unittest+ddt+jenkins,然后用的POM分层的模式(面向对象思想),数据驱动使用的是excel+ddt的驱动模式,我在这个自动化测试实施的项目里所负责的那些模块那些测试用例的自动化代码编写
我在xx项目中实施了接口自动测试平台搭建,技术栈:python+django+unittest+ddt+jenkins
二、请举例说明一下,你在编写自动化脚本过程中碰到了那些异常?
NoSuchElementException 没有如此元素异常
TimeoutException 超时异常
NosuchFrameException 没有如此框架异常
三、你们公司是如何在公司里面实施自动化测试的?
1、公司目前展开自动化,希望你能够承担自动化的实施过程
2、公司已经在开展自动化了,想借鉴一下
1)项目组做自动化的可行性分析自动化率到i什么程度
项目周期比较长 一年以上,需求不会频繁变更,自动化脚本能够持续反复的使用
2)自动化工具selenium robotframework调研以及demo演示
3)由leader搭建自动化测试框架,并且在项目中逐步的实施,发现框架的问题并改善
4)把自动化流程化,框架出使用文档以及规范文档
5)生成定制的报告 并继续完善框架
四、接口自动化如何设计测试用例?一个接口你会设计多少个测试用例?(20-30)
考虑:业务逻辑,入参,通过等价类边界值场景法来设计
1、设计:正例 (两个)请求方式 get/post
2、反例
1、鉴权反例:token,key:为空,错误,过期
2、参数反例:必须项检查,长度规则,类型规则,日期
3、错误码覆盖
4、其他的关注点:分页,图片格式,大小
五、接口自动化测试框架中接口关联你们是怎么处理的?
postman和jmeter如何处理接口关联?
json提取器 正则表达式 cookie提取器
1、通过一个单独的extract.yaml文件来保存所有的关联字段,中间提取的变量这个变量在所有的测试用例之前清空
清空通过
unittest:setup_class
pytest:conftest+fixtrue
2、在测试用例的yaml里面通过一级关键字extract提取 提取支持json提取的正则表达式提取
3、在其他的接口的yaml文件里面通过{{}}提取或者${}的提取
六、你有从零开始独立搭建过自动化接口自动化测试框架?
我在xx项目搭建的接口自动化测试框架所使用的核心技术:
request+pytest+allure+parametrize+jenkins 包装:basepage基础封装,testcase封装
requests二次封装,日志收集模块 yaml配置文件封装
封装的这个项目规则:
YAML格式用例的约定
1、必须包含一级关键字:name request validate
2、在request关键字下必须包括:method,url,data,如data没有的话那么输入默认值{}
3、提取变量使用一级关键字extract。支持json提取和正则提取(.+?)和(.*?)取值使用{}
4、可以使用热加载的方式调用debug_talk.py中debugTalk类里面的方法 通过${}调用方法
5、支持equals、contains两种断言
6、使用parameters做csv文件的数据驱动,通过$csv(appid)这种格式取值
更细:
web:frame怎么处理,下拉框怎么处理,多个页面 ,弹窗操作,鼠标操作(悬停),滚动条,键盘 你怎么处理
接口:接口加密 接口签名
技术决定面试决定薪资
前提:熟练pyhton包括装饰器反射等
1、接口测试理论
2、精通基于工具类的接口测试:postman、jmeter,fiddler、charles
cookie,token session
3、httprunner是目前唯一成熟的基于yaml设计测试用例的接口自动化框架 简历接口测试框架的设计思想
4、unittest/pytest管理用例和报告定制
5、requests二次封装
6、接口自动化测试框架的封装
测试高频面试题
一、功能测试
1、你为什么离职
2、结合一个具体的业务场景问你如何测试?
举例:双十一优惠券当天可用,满100减50,特价商品不能用?
一、分析需求字面测试点
1、双十一优惠券当天可用(边界值)
2、满100减50(边界值)
3、特价商品不能用
二、其他场景
1、UI检查:优惠券金额。不可以用优惠券置灰,有效时间显示
2、优惠券状态:已经领取未使用,已领取已使用,已使用,使用后退款
3、检查是否能够自动化选择优惠券,并且是否和其他优惠券叠加使用,智能选择最大优惠券,以及优惠券选择切换
4、使用优惠券购买商品退货场景 退货金额以及优惠券是否退还
5、优惠券是否能重复领取等等
3、如何区分前后端的bug
1)抓包看前端传参很后端返回数据对比
2)也可以通过查看后台日志分析
二、接口测试
1、谈谈你对http协议的了解
http协议是一种超文本传输协议,端口是80,特点是无连接无状态能够快速响应,主要是有请求和响应两部分组成
请求:请求行 请求头 请求正文
常见的请求头 Accept,X-requested-with,user-agent,Content-Type,Cookie
响应:相应行 响应头 响应正文
https=http+ssl 端口443
2、接口测试流程
1)拿到api文档(或者通过抓包获取),熟悉接口业务(单接口,接口关联业务),接口地址,鉴权(是否有访问权限:cookies,seeion,token,auth base 签名),入参,出参,错误码
2)编写接口测试用例以及评审
正例:输入正确的入参,接口返回成功(get。post)
反例:
鉴权反例:鉴权码为空,鉴权码错误。过期
参数反例:使用等价类边界值参数必填参数类型异常参数长度异常
错误码反例:
其他异常场景:接口黑名单 接口调用次数限制 IP受到限制
分页异常:分页传入0 第1页 最后1页
current_page,page_size
0 ,10
1,10
30,10
用最少的用例覆盖有效等价类,用最多的用例覆盖无效等价类
3)我们使用jmeter进行接口测试
4)使用jmeter+Ant+Jenkins实现接口测试脚本版本控制以及持续集成 并且自动生成报告和发送邮件
3、接口测试cookie session token的区别
token一般通过appid和secret:密钥l来获取
三、自动化测试
1、给你一个项目你如何在公司实施自动化测试?如何落地?
2、接口自动化测试框架封装里面接口关联如何实现?
3、如何提高框架的拓展性
热加载
4、get和post请求的区别
四、其他
你还有什么需要了解的吗?
1、咱们公司目前正在做的一些项目?
2、咱们公司开发团队和测试团队的人员架构
1、json和字典的区别?
2、装饰器原理参数化 unittest pytest 反射 序列化
3、参数关联 (接口关联)
参数关联:上一个接口的返回值作为下一个接口的入参
面试常见问题
1、sql语句增删改查 多表连接 存储过程 视图 触发器
2、linux常见命令
3、编程能力
常见面试题
1、你是否懂得自动化测试?
2、你是否懂得封装框架?
1)关键字驱动封装
将所有的常用selenium/Reuqests函数进行二次封装,结合数据驱动来实现关键字的调用,从而实现自动化测试
(能够应用在接口自动化和UI自动化测试中)
class WEBui: driver = webdriver.Chrome() # 访问url def open(self,url): # 这就是关键字这就是封装 self.driver.get(url) # 元素定位 def locator(self,name,value): return self.driver.find_element(name,calue)
2)页面对象模型封装
POM 将系统的所有关联测试的页面进行提取,并封装成页面对象 基于页面对象的串行+数据驱动的形式来实现自动化测试
(只适用于UI自动化)
3、你如何将实现的自动化在公司进行推广
4、你了解哪些数据驱动形式分别优劣是什么
5、如何优化现有的测试框架?(分布式+用例并发)
selenium Grid分布式结构(Master/Slave结构分布式结构)
用例的并发执行:
在传统自动化测试中,所有的代码都是基于线性执行,包括测试的执行也是以线性的形式来执行(python异步机制 线程处理与实现 线程处理与用例处理结合)
UI自动化面试总结:
1、selenium原理?目前主流自动化技术selenium+webdriver
selenium本身是完全基于JS来实现的前端交互自动化体验
selenium+webdriver是基于Http网络协议下的代理服务来进行内容交互
2、分布式测试架构与用例并发如何实现?
但凡关联到分布式测试架构的体系,一般而言都是基于UI自动化SeleniumGrid是一套特别好用的分布式架构部署服务
目前主流的分布式测试框架部署是基于主从节点形态来部署。配置一个网关+N个子节点的形态来实现分布式架构
用例并发推荐使用多线程模式来实现
Jenkins自带有分布式部署模式 也是基于主从节点来实现
3、如何实现POM自动化测试架构
如何解决多人团队下的自动化工作的开展:架构
定义测试框架结构:
1、基类
2、页面对象类
3、测试用例
4、测试数据
5、配置
6、功能
。。。
4、Appium没人问
有接触过Appium么?
5、接口自动化:
1)网络协议 http cookie session token
get/post区别
2)Mock 是什么 在接口测试领域下一般在什么情况使用 以及基于python如何实现Mock
遇到很难获取的数据 通过模拟的形式来将这些数据获取到手
def 接口_正式():
return 正式接口
def 接口_模拟():
return 模拟接口
3)接口关联
关注的点在于你的接口自动化测试框架如何实现的
关键字驱动+数据驱动+测试用例管理+关联接口的公共数据管理
基于yaml进行数据管理 结合全局变量管理公共数据+Pytest/Unitest是西安接口关联的业务 所有的系统接口业务链非你别以不同的文件进行管理
4)框架是如何设计的?框架的设计方法
1、技术
关键字驱动+数据驱动
将常用的操作行为进行二次封装,生成一个自定义的关键字类,把所有的封装函数放在类里面,便于后续进行调用
优先考虑Excel数据驱动,结合Python发射机制+openpyxl模块来实现excel数据内容的读取与执行,在定义规范化的Excel文件的测试用例格式
再结合日志信息配置、框架的测试环境配置、服务器的配置、数据文件的读取路径配置、公共参数配置等进行细化的配置模块的研发管理
再优化考虑基于Unittest/Pytest实现用例管理、定义数据读取的驱动参数
集成HTMLTestRunner或Allure测试报告,继承邮件,集成Jenkins实现自动化测试构建
分布式测试框架部署的技术实现+用例并发实现
POM测试框架实现
5)Unttest/pytest区别?
Unttest:四大特性
1、前置与后置
2、测试用例管理
3、测试套件与测试运行器
4、断言
5、DDT
pytest:特点
自由度高
非常完善的自动化测试服务提供
6)自动化测试框架如何运行?
1、选择项目试点
2、提取自动化
3、基于内容实现测试Demo:
1、定义框架
2、结构设计
3、编码落地
4、开会 自动化测试Demo进行演示与讲解
5、整理资料,安排使用人员培训
6、维护和升级测试框架
接口测试常见的bug
1、特殊值处理不当 导致程序异常退出会崩溃(快递信息用户未填写提交)
2、类型边界溢出 导致数据读取和写入不一致(列表查询 查的值与实际的条数不符)
3、取值边界值外没有返回正确的一个错误信息
4、权限未处理 可以访问其他的用户信息(报表导出需要角色权限 没处理所有人都可以看)
5、逻辑校验不完善可以利用漏洞获取非正当的利益(现金账户流入流出冻结解冻)
6、状态处理不当导致逻辑出现错误(订单状态 未支付 待支付 已付款 取消支付 待退款 已退款 已取消)
7、数组类型item个数为0或者item重复时程序异常退出
简历
技能
1、熟悉测试理论,测试方法,测试流程以及常用的测试文档编写如:测试计划方案用例报告等 能够根据需求使用xmind思维道路分析测试点 设计测试用例 执行用例以及提交报告
2、熟悉http协议熟悉接口测试流程接口测试用例设计熟练使用postman执行接口测试包括:接口关联,接口鉴权,接口加密以及接口签名
3、熟练基于python+selenium+unittest/pytest+logging+allure+jenkins自动化框架搭建,熟悉PO以及关键字驱动设计模式,能够独立搭建web自动化测试框架并实际的项目中开展实施
标签:面试题,封装,框架,接口,用例,测试,自动化 From: https://www.cnblogs.com/erhuoyuan/p/17126244.html