目录:导读
- 前言
- 一、Python编程入门到精通
- 二、接口自动化项目实战
- 三、Web自动化项目实战
- 四、App自动化项目实战
- 五、一线大厂简历
- 六、测试开发DevOps体系
- 七、常用自动化测试工具
- 八、JMeter性能测试
- 九、总结(尾部小惊喜)
前言
面试题:你有没有做过自动化测试?
我在xx项目中实施了web自动化测试,我们项目中搭建自动化测试框架技术:python+selenium+pytest/unittest+ddt+jenkins,然后用的POM分层的模式(面向对象思想),数据驱动使用的是excel+ddt的驱动模式,我在这个自动化测试实施的项目里所负责的那些模块那些测试用例的自动化代码编写
我在xx项目中实施了接口自动测试平台搭建,技术栈:python+django+pytest/unittest+ddt+jenkins
面试题:你们公司是如何在公司里面实施自动化测试的?
公司目前展开自动化,希望你能够承担自动化的实施过程
公司已经在开展自动化了,想借鉴一下
1)项目组做自动化的可行性分析自动化率到什么程度
项目周期比较长 一年以上,需求不会频繁变更,自动化脚本能够持续反复的使用
2)自动化工具selenium robotframework调研以及demo演示
3)由leader搭建自动化测试框架,并且在项目中逐步的实施,发现框架的问题并改善
4)把自动化流程化,框架出使用文档以及规范文档
5)生成定制的报告 并继续完善框架
面试题:接口自动化如何设计测试用例?一个接口你会设计多少个测试用例?(20-30)
考虑:业务逻辑,入参,通过等价类边界值场景法来设计
设计:正例 (两个)请求方式 get/post
反例
鉴权反例:token,key:为空,错误,过期
参数反例:必须项检查,长度规则,类型规则,日期
错误码覆盖
其他的关注点:分页,图片格式,大小
面试题:接口自动化测试框架中接口关联你们是怎么处理的?
postman和jmeter如何处理接口关联?
json提取器 正则表达式 cookie提取器
通过一个单独的extract.yaml文件来保存所有的关联字段,中间提取的变量这个变量在所有的测试用例之前清空
清空通过:
unittest:setup_class
pytest:conftest+fixtrue
在测试用例的yaml里面通过一级关键字extract提取 提取支持json提取的正则表达式提取
在其他的接口的yaml文件里面通过{{}}提取或者${}的提取
面试题:你有从零开始独立搭建过自动化接口自动化测试框架?
我在xx项目搭建的接口自动化测试框架所使用的核心技术:
request+pytest+allure+parametrize+jenkins 包装:basepage基础封装,testcase封装
requests二次封装,日志收集模块 yaml配置文件封装
封装的这个项目规则:
YAML格式用例的约定
必须包含一级关键字:name request validate
在request关键字下必须包括:method,url,data,如data没有的话那么输入默认值{}
提取变量使用一级关键字extract。支持json提取和正则提取(.+?)和(.*?)取值使用{}
可以使用热加载的方式调用debug_talk.py中debugTalk类里面的方法 通过${}调用方法
支持equals、contains两种断言
使用parameters做csv文件的数据驱动,通过$csv(appid)这种格式取值
更细:
web:frame怎么处理,下拉框怎么处理,多个页面 ,弹窗操作,鼠标操作(悬停),滚动条,键盘 你怎么处理
接口:接口加密 接口签名
技术决定面试决定薪资
前提:熟练pyhton包括装饰器反射等
接口测试理论
精通基于工具类的接口测试:postman、jmeter,fiddler、charles、cookie,token、session
httprunner是目前唯一成熟的基于yaml设计测试用例的接口自动化框架 简历接口测试框架的设计思想
unittest/pytest管理用例和报告定制
requests二次封装
接口自动化测试框架的封装
1、给你一个项目你如何在公司实施自动化测试?如何落地?
2、接口自动化测试框架封装里面接口关联如何实现?
3、如何提高框架的拓展性?
4、get和post请求的区别
接口测试常见的bug
1)特殊值处理不当 导致程序异常退出会崩溃(快递信息用户未填写提交)
2)类型边界溢出 导致数据读取和写入不一致(列表查询 查的值与实际的条数不符)
3)取值边界值外没有返回正确的一个错误信息
4)权限未处理 可以访问其他的用户信息(报表导出需要角色权限 没处理所有人都可以看)
5)逻辑校验不完善可以利用漏洞获取非正当的利益(现金账户流入流出冻结解冻)
6)状态处理不当导致逻辑出现错误(订单状态 未支付 待支付 已付款 取消支付 待退款 已退款 已取消)
7)数组类型item个数为0或者item重复时程序异常退出
面试题:自动化测试怎么做的?
什么是自动化的po模式:
po模式主要分为对象层操作层业务层 对象主要封装某些元素定位的方法 操作层封装元素的一些特定的操作 业务层把一个或多个操作组合成具体业务
具体实现(以登录页为例 )
第一步先实现BasePage基类这个基类主要实现driver的获取
第二步根据BasePage基类实现对象层封装登录页面的元素定位封装定位用的用户名密码确认按钮等定位方法
第三步根据封装的定位方法封装他们的操作 比如输入用户名和密码点击确认按钮
第四步根据封装LoginPage页面的操作类实现登录的测试
面试题:动化测试稳定性?
一个是元素的定位问题 一个是用例之间的依赖问题 一个是数据问题
元素定位问题可以采用智能等待的方式尽可能的避免
用例依赖可以解耦用例之间的关系让每条用例都从一个共同的页面开始执行比如首页 这就需要在测试框架中采用后置处理方式 使每条用例执行完后都回到首页
测试数据尽可能现用现造 尽量避免使用假数据和死数据
面试题:元素定位方式?
ui自动化定位不到元素的原因
定位器选择错误;定位字符串错误;元素嵌套在ifarme中;页面元素没有及时加载;元素在新窗口中;脚本流程与实际不符;元素不在当前页面;
web ui自动化中显示等待和隐士等待的区别:
相同点都是智能等待在一定的时间范围内不断的查找元素一旦找到就继续执行代码没有找到会一直找到超时为止
不同点隐式等待是全局性设置并且可以随时更改修改后对之后的find方法生效对点击输入等操作不起作用 报错是no suchelement异常 显示等待仅仅是针对单元素或一组生效 不仅仅是针对查找也可以针对alert iframe window或元素的某些属性进行自定义判断报错是timeout超时异常
app的不定时弹窗:
两种思路 一、启动一个线程监听弹窗上的元素 比如确认 取消等每隔0.5秒去查找弹窗元素如果有就点掉 二、在所有的操作之前都去增加弹窗的识别缺点造成执行效率的降低
性能测试关注指标:
tps每秒的事务数 代表了性能的好坏 tps越高性能越好2、平均响应时间 请求的平均耗时响应时间越短性能越好3、并发数 同时向服务端发起请求的虚拟用户数在不同的工具里面可以使用多个进程或多个线程来实现 4、错误率 失败的请求比例
最新最全花1W买的Python+Selenium全栈Web自动化测试
| 下面是我整理的2025年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
人生最珍贵的不是终点站的奖杯,而是追梦路上那个永不放弃的自己。当你觉得撑不住时,请记住:每个伟大的故事都写在最艰难的章节之后。你的坚持,正在创造别人眼中的奇迹!
别被暂时的风雨模糊了双眼!那些让你流泪的磨练,正在雕刻更璀璨的未来。当别人选择放弃时,你的坚持就是胜利的宣言。向前奔跑吧,整个世界都在等待你的光芒绽放!