软件自动化测试高频面试题

📅 发布时间:2026/7/5 6:20:40 👁️ 浏览次数:
软件自动化测试高频面试题
一、列表推导式1、传统for循环实现求平方list1 [1, 2, 3, 4, 5] list2 [] for i in list1: r i*i list2.append(r) print(list2)2、用map函数实现求平方list1 [1, 2, 3, 4, 5] result map(lambda x: x * x, list1) print(list(result))3、列表推导式实现求平方list1 [1, 2, 3, 4, 5] result [i*i for i in list1] print(result)4、列表推导式加条件判断list1 [1, 2, 3, 4, 5] # 最终只返回大于60的数字 result [i**3 for i in list1 if i**3 60] print(result)注意n次平方i**n二、冒泡排序法—排序思路请使用冒泡排序法将以下列表中的元素从小到大进行排序 list1 [5, 3, 2, 10, 15, 13]实现思路是两个相邻的数字进行比较大的向上浮 小的向下沉最后一个元素是最大的代码实现def bubble_sort(blist): list_len len(blist) print(f传入参数列表的长度是{list_len}) # 如何能够获取到相邻的两个元素 # 外层循环就是用来控制伦次的 for i in range(0, list_len-1): for j in range(list_len-i-1): print(f此时我们要排序的元素{blist[j]}和{blist[j1]}) # 排序交换位置 if blist[j] blist[j1]: # 我们使用Python特有的交换方法来进行交换 blist[j], blist[j1] blist[j1], blist[j] print(f排序后的列表的形状是:{blist}) print(f第{i1}轮比较结束) bubble_sort([5, 3, 2, 10, 15, 13])运行结果三、快速排序法的思想与实现核心思想从列表中取出任意一个元素但是我们一般取第一个把这个取出来的元素作为比较的标准把比这个元素小的放在左边把比这个元素大的放在右边代码实现def quick_sort(quick_list): print(f现在的列表: {quick_list}) if quick_list []: print(------寻找结束此时列表为空------) return [] # 使用列表推导式加上递归实现 print(f开始寻找比第一个元素《《小》》的元素第一个元素是{quick_list[0]}) less quick_sort([l for l in quick_list[1:] if l quick_list[0]]) print(f开始寻找比第一个元素《《大》》的元素第一个元素是{quick_list[0]}) more quick_sort([m for m in quick_list[1:] if m quick_list[0]]) print(f*****此时返回的列表是{less [quick_list[0]] more}*****) return less [quick_list[0]] more print(quick_sort([5, 3, 2, 10, 15, 13]))运算结果四、网络协议分层1、OSI模块从顶层到底层依次为应用层、表示层、会话层、传输层、网络层、数据链路层和物理层1应用层核心功能直接为应用程序提供服务是用户最常接触的协议层典型协议HTTP/HTTPS等Web协议都位于这一层2表示层核心功能负责数据格式转换和加密操作加密示例类似MD5将ABC转换为BCD的错位加密或中英文转换(我爱你→I love you)3会话层核心功能建立、管理和维护会话连接技术关联类似pytest中scopesession的会话作用域概念4传输层核心功能建立和维护端到端的连接如客户端到服务端的管道典型协议TCP可靠传输和UDP快速传输协议5网络层核心功能处理IP地址和路由选择生活场景类似大型场所多个路由器间的自动切换典型协议IP协议实际工作中较少直接接触6数据链路层核心功能介质访问和链路管理较抽象生活类比快递运输路线的规划及各集散中心的访问方式技术特点越往底层协议越抽象与实际硬件关联越密切7物理层核心功能纯粹的物理硬件设备层实现方式确定具体传输媒介电缆/光纤/无线等2、OSI七层协议与TCP/IP五层协议及对应网络协议TCP/IP五层将OSI的应用层、表示层、会话层合并为应用层其他四层传输层、网络层、数据链路层、物理层保持不变五、Web自动化测试中的验证码问题1、验证码的分类主要防止爬虫工程师进行数据抓取而非针对正常用户或测试工程师。例如京东等电商网站的商品数据保护。1文字验证码特征: 提供包含文字的图片要求用户输入显示的文字。实际网站应用较少多为数字验证码的变种。2数字验证码常见形式: 显示4-6位数字(如3527)添加干扰线增加识别难度。干扰原理: 干扰线主要影响OCR识别程序的准确率对人类识别影响较小。3文字数字验证码识别技术背景: 属于AI计算机视觉(CV)领域特别是OCR技术方向。行业现状: 非测试工程师必备技能从业2-3年后可选择性学习相关开源库调用。4滑动验证码基础形式: 滑块拼图式验证需将滑块拖到正确位置。进阶变种:多形状选择(3-4个不同形状的框)旋转滑块(滑动时内部图案旋转)阴影验证(判断图形阴影是否正确)识别原理: 通过颜色值突变定位目标位置计算x/y坐标后模拟鼠标拖动。5计算题验证码典型示例: 11需填写结果2而非完整算式。特点: 简单直接但可有效阻止基础自动化脚本。6顺序点击验证码操作要求: 按指定顺序点击文字。防破解: 添加干扰线后识别率显著降低。7图形识别验证码常见类型:九宫格选图(如包含自行车的图片)阴影验证(判断图形阴影是否正确)发展历史: 早期12306验证码因难度过高被吐槽(如识别白色液体中的白酒)。8短信验证码实现原理:后端通过短信服务商发送验证码同时将验证码存入Redis数据库设置90秒自动过期机制测试方案: 直接从Redis读取验证码值用于自动化测试。2、解决验证码的思路1关闭验证码实现方式: 通过代码开关控制(0关闭/1开启)仅限测试环境使用。注意事项: 需与开发协作实现测试工程师无法独立完成。2万能验证码避免简单数字(如123456)推荐使用项目特色字符串(项目名团队口号等)实现原理: 后端预置判断逻辑匹配特定验证码直接通过。3绕过验证码技术方案: 通过添加Cookies保持登录状态适用于后续需要登录态的操作。适用场景:个人信息修改、购物车操作、订单查询等典型案例: 京东登录后的自动化测试流程。面试应答要点: 重点说明以上三种解决方案的实际应用经验避免深入讨论验证码识别技术细节。六、如何管理自动化测试用例主要针对接口自动化测试因为接口相对稳定且代码维护难度较低Web自动化由于前端频繁变更实际落地效果往往不如手工测试高效。1、根据项目模块1小项目管理工具: 推荐使用Excel进行测试用例管理适用场景: 项目处于市场探索阶段需求变更频繁典型特征: 项目规模小、技术人员少、需求迭代快2大项目管理工具: 采用数据库存储测试用例适用场景: 项目成熟期市场规模和技术团队扩大典型特征: 强调规则规范需要多人协作维护2、根据项目阶段1项目之初管理特点:采用Excel等灵活工具支持快速响应需求变更原因:需求验证阶段变更频繁需要频繁调整测试用例探索用户真实需求阶段2项目迭代过渡策略:逐步将稳定用例迁移至数据库保留部分用例在Excel中应用场景:回归测试用例优先迁移冒烟测试等核心场景用例3项目稳定最终方案:全部用例存入数据库自动化脚本直接读取核心价值:保证团队用例一致性实时同步最新用例状态支持大规模协作开发七、什么时候开展自动化测试1、自动化测试开展时间前提条件项目运行相对稳定时开展非完整回答回答技巧需要补充具体执行环节避免回答过于简略衔接方法自然过渡到在冒烟测试、集成测试等环节执行自动化测试的具体说明2、从项目流程看自动化测试执行的环节1项目流程概述标准流程差异企业实际流程可能简化标准流程如周期短时省略某些环节最简项目案例仅有原型设计→直接编码文档可能不健全2关键自动化测试环节冒烟测试阶段适用性只需测试主干流程适合自动化作用验证代码基本质量决定是否进入深度测试别称准入测试两种称呼均可使用集成测试阶段最佳实践接口自动化测试的高效环节优势可覆盖大部分测试用例随着代码能力提升可增加覆盖率反哺效应代码量↑→用例覆盖↑→能力↑→更愿编写回归测试阶段必要性环境变更可能导致问题如线上环境执行策略自动化为主人工抽查关键分支