# 互联网中厂
# 拼多多真题一
# 1. 自我介绍
答题思路:自我介绍应简洁明了,突出个人技能、经验和与岗位相关的亮点。涵盖教育背景、工作经验、技术栈和项目经验,最后表达对岗位的兴趣。
答题话术:面试官您好,我叫[你的名字],有[X年]的软件测试经验,专注于性能测试和自动化测试。我熟练掌握JMeter、Python、Redis等工具和技术,曾参与过保险、金融等项目的测试工作。在上一家公司,我负责性能测试脚本开发、自动化框架搭建以及持续集成流程的优化。我善于解决复杂问题,比如长链路性能测试和数据处理,希望能为贵团队贡献价值。
# 2. 性能工具
答题思路:列举常用的性能测试工具,并简要说明其特点和适用场景。
答题话术:常用的性能工具有JMeter、LoadRunner、Gatling等。JMeter是开源工具,适合HTTP/HTTPS协议的性能测试,支持分布式部署;LoadRunner功能强大,但成本较高;Gatling基于Scala,适合高并发场景。我主要用JMeter进行接口和链路性能测试。
# 3. 有没有整个投保的长链路的性能测试脚本?
答题思路:肯定回答,并说明脚本设计和实现的关键点,如接口串联、数据关联和参数化。
答题话术:有的。我设计过投保全链路的性能测试脚本,包括登录、核保、支付等环节。通过JMeter的线程组和事务控制器组织流程,使用正则表达式或JSON提取器处理接口依赖(如token、订单ID),并参数化动态数据(如身份证号、手机号)以模拟真实场景。
# 4. 核保中,处理接口请求报文的那些信息?
答题思路:说明核保接口常见的请求字段和数据处理方式。
答题话术:核保接口通常包含投保人信息、被保人信息、产品详情、保额等。报文可能是JSON或XML格式,需要动态生成或修改字段,如证件号、手机号、日期等。我通过JMeter的BeanShell或JSR223处理器处理动态数据,确保符合业务规则。
# 5. 投保中证件号码手机号码怎么生成的?
答题思路:解释数据生成方法,强调随机性和合规性。
答题话术:证件号码和手机号通过脚本随机生成,但需符合格式校验。身份证号根据行政区码、生日和校验码规则生成;手机号以合法号段(如138、139)开头,后接随机数字。在JMeter中使用__Random函数或BeanShell脚本实现。
# 6. 跑脚本的工具是用jmeter吗?
答题思路:肯定回答,并补充其他可能用到的工具。
答题话术:是的,主用JMeter跑性能脚本,有时也用Postman调试接口,Python脚本处理复杂数据。
# 7. 跑自动化的系统?
答题思路:说明自动化测试的环境和工具链。
答题话术:自动化测试在Linux服务器上执行,使用Jenkins调度JMeter或Python脚本,集成Git管理代码,Allure生成测试报告。
# 8. 参与自动化框架的搭建吗?
答题思路:详细说明框架搭建的参与工作和技术选型。
答题话术:是的,我参与过基于JMeter和Python的自动化框架搭建。包括脚本模块化、数据驱动、报告生成和Jenkins集成,提高了测试效率和可维护性。
# 9. 投保流程的自动化?
答题思路:描述自动化测试覆盖的流程和关键技术。
答题话术:自动化覆盖投保全流程,通过接口串联和状态校验确保流程正确。使用断言验证结果,处理异常分支如核保失败。
# 10. 如果流程不一样,自动核保/走人工核保怎么办?
答题思路:说明如何处理不同分支,如通过参数化或条件逻辑。
答题话术:在脚本中根据接口响应判断流程分支。如核保结果指示人工核保,则终止或标记用例,后续人工处理。
# 11. jmeter接口串联,提取响应token,参数处理怎么做的?说了order id正则表达式
答题思路:具体说明提取响应数据的方法和参数传递方式。
答题话术:使用正则表达式提取器或JSON提取器获取token、order ID等数据,存入变量供后续接口使用。例如,提取order ID的正则表达式:"orderId":"(.+?)"。
# 12. 返回的是jsonobject,jsonobject里面有个token怎么提取,jsonobject里面有个jsonobject,里面有个id,如何提取?里面和外面都有id,想要提取里面的,正则表达式怎么写?
答题思路:使用JSONPath处理嵌套JSON结构。
答题话术:用JSONPath表达式提取:外层token用$.token,内层id用$.innerObject.id。正则表达式需精确匹配,如提取内层id:"innerObject":\{"id":"(.+?)"\}。
# 13. jmeter中jsonpath提取器用过吗,jsonpath表达式?
答题思路:肯定回答,并举例说明常用JSONPath表达式。
答题话术:用过。如提取所有订单ID:$.orders[*].id,提取第一个订单金额:$.orders[0].amount。
# 14. jmeter断言?jsonpath提取器提取到id和token之后,放到创建订单的接口中,订单号随机生成10位数字,如何操作?
答题思路:说明断言的作用和随机订单号的生成方法。
答题话术:断言验证响应状态和关键数据。订单号用JMeter的__Random函数生成:${__Random(1000000000,9999999999,orderNo)},然后在请求中引用${orderNo}。
# 15. 生成订单号后,查询订单号是否入库,怎么操作?
答题思路:说明通过数据库查询验证数据落库的方法。
答题话术:用JDBC请求查询数据库,检查订单号是否存在。配置数据库连接,写SQL如SELECT * FROM orders WHERE order_id = '${orderNo}',并用断言检查结果。
# 16. python遍历json Array,遍历json Array里的jsonobject吗,遍历下面的的每个字段?核保的报文里面有个行走的节点json Array,json Array有很多个jsonobject,用什么遍历?
答题思路:说明Python遍历JSON数组和对象的方法。
答题话术:用json.loads()解析JSON,然后for循环遍历数组,再遍历每个对象的键值对。示例:
import json
data = json.loads(response_text)
for item in data['array']:
for key, value in item.items():
print(f"{key}: {value}")
2
3
4
5
# 17. 深浅拷贝?
答题思路:解释深浅拷贝的区别和适用场景。
答题话术:浅拷贝复制对象顶层引用,深拷贝递归复制所有子对象。在Python中,用copy.copy()和copy.deepcopy()实现。
# 19. 列表元组的区别?
答题思路:从可变性、性能和用途方面对比。
答题话术:列表可变,用于动态数据;元组不可变,适用于固定数据,更高效且可哈希。
# 20. redis的穿透、击穿、雪崩?
答题思路:分别解释现象和解决方案。
答题话术:
- 穿透:查询不存在的数据,用布隆过滤器或缓存空值解决。
- 击穿:热点key过期,用互斥锁或永不过期策略。
- 雪崩:大量key同时过期,设置随机过期时间或集群部署。
# 21. jenkins如何持续集成?工程怎么配置的?
答题思路:说明Jenkins的配置和集成流程。
答题话术:在Jenkins创建任务,配置Git仓库、构建触发器(如轮询SCM),添加构建步骤(执行Shell或JMeter命令),并配置报告生成和通知。
# 22. 离职原因?
答题思路:保持积极,聚焦职业发展。
答题话术:我希望寻找更广阔的发展机会和挑战,贵公司的岗位和我的技能高度匹配,希望能长期贡献。
# 23. python如何查询替换文本字符串?
答题思路:说明Python字符串处理的方法。
答题话术:用str.replace()或re模块的re.sub()进行替换。示例:new_text = text.replace("old", "new")。
# 24. python生成随机数?随机生成投保姓名?无数据化的数据流程(能生成的生成,有些数据是固定的,脱离csv\excel,也能跑完整个流程)
答题思路:说明随机数据生成方法和数据管理策略。
答题话术:用random模块生成随机数,如random.randint(1,100)。姓名用预置列表或faker库生成。固定数据写在脚本或配置文件中,动态数据实时生成,确保流程独立。
# 25. 证件号码如何生成(接口校验格式)?18岁,男的身份证号如何写?
答题思路:说明身份证号生成规则和实现方法。
答题话术:身份证号前6位为行政区码,中间8位为生日(如2005年出生则写20050101),后4位为顺序码和校验码。示例:用Python生成18岁男性身份证号(倒数第二位偶数为女,奇数为男)。
# 26. 手机号码如何随机生成?
答题思路:说明手机号生成规则。
答题话术:以合法号段(如138、139)开头,后接8位随机数字。在Python中:phone = '138' + ''.join(random.sample('0123456789', 8))。
# 27. linux如何搭建执行机?服务节点注册和集群?
答题思路:说明Linux环境搭建和JMeter分布式配置。
答题话术:安装JDK和JMeter,配置SSH免密登录。在JMeter.properties中设置服务器列表,启动Agent服务,控制机远程调度。
# 28. 创建存储过程?创建索引?
答题思路:简要说明SQL操作。
答题话术:创建存储过程用CREATE PROCEDURE,创建索引用CREATE INDEX index_name ON table_name(column),以提高查询性能。
# 拼多多真题二
# 1. 自我介绍
答题思路:
- 突出专业背景和技术能力
- 强调项目经验和成果
- 体现与岗位的匹配度
- 展示职业发展规划
答题话术:
- 面试官您好,我是[姓名],拥有X年测试开发经验
- 专注于质量保障体系建设和自动化测试开发
- 擅长测试框架设计、性能测试和CI/CD流水线搭建
- 在上一家公司主导了测试平台从0到1的建设
- 带领团队提升了测试效率50%以上
- 对技术有浓厚兴趣,期待在贵公司发挥价值
# 2. 项目介绍
答题思路:
- 选择最具代表性的项目
- 突出技术难点和解决方案
- 展示项目成果和影响力
- 体现个人贡献和价值
答题话术:
- 最近主导了XX电商平台的测试体系建设项目
- 设计实现了基于pytest的自动化测试框架
- 开发了测试管理平台,集成用例管理和CI/CD
- 建立了完整的性能测试体系和监控告警系统
- 项目上线后,缺陷泄漏率降低70%,测试效率提升50%
- 团队从手动测试转型为自动化测试为主的工作模式
# 3. 后台系统是什么?
答题思路:
- 说明系统架构和技术栈
- 强调系统特点和价值
- 体现对整体架构的理解
答题话术:
- 后台系统是基于微服务架构的分布式系统
- 采用Spring Cloud框架,包含20+微服务
- 使用MySQL集群作为主要数据库
- Redis作为缓存和会话存储
- Kafka处理异步消息和事件流
- 全部服务部署在Kubernetes集群上
- 实现了高可用、可扩展的系统架构
# 4. 测试流程?核心业务模块的用例设计?
答题思路:
- 说明完整的测试流程
- 强调用例设计的方法论
- 体现对业务的理解深度
答题话术:
- 测试流程包括需求评审、测试设计、用例执行、缺陷跟踪和上线验证
- 核心业务采用场景化用例设计方法
- 使用等价类划分、边界值分析等测试方法
- 重点覆盖正常流程、异常流程和边界情况
- 用例设计考虑业务规则、数据状态和系统交互
- 建立用例优先级体系,保证测试资源合理分配
# 5. 如何保证左移阶段的那些评审可以取得好的结果?
答题思路:
- 强调评审的重要性和方法
- 体现主动参与和贡献
- 展示具体的实践和成果
答题话术:
- 建立标准化的评审 checklist 和模板
- 提前分发评审材料,给参与者充分准备时间
- 邀请多方角色参与(产品、开发、测试、运维)
- 记录并跟踪所有评审问题的解决情况
- 定期回顾评审效果,持续改进评审流程
- 通过数据量化评审效果,展示价值
# 6. 开发的设计评审你们会参与吗?会提一些技术建议吗?
答题思路:
- 体现技术深度和业务理解
- 展示跨职能协作能力
- 强调测试在设计阶段的价值
答题话术:
- 积极参与技术设计评审,从测试角度提出建议
- 关注系统可测试性、接口设计和错误处理机制
- 建议增加合适的日志和监控点,便于问题定位
- 提出性能和安全方面的考虑和建议
- 推动设计阶段考虑故障注入和容错处理
- 通过早期参与避免后期测试阶段的问题
# 7. 左移你们是怎么判定的?有没有什么指标?你们的左移是一个质量保障手段,还是只是一个流程手段?
答题思路:
- 明确左移的定义和价值
- 提供量化的评估指标
- 强调质量保障的本质
答题话术:
- 左移是通过早期介入预防缺陷的质量保障手段
- 关键指标包括:缺陷发现阶段、缺陷修复成本、测试周期等
- 跟踪需求阶段、设计阶段发现的缺陷数量
- 监控单元测试覆盖率和代码质量指标
- 左移是完整的质量保障体系,不是简单的流程
- 通过工具链和自动化支持左移实践落地
# 8. 你们数据库校验是通过sql语句去校验吗?
答题思路:
- 说明数据库测试的方法
- 强调数据一致性和完整性
- 体现对数据质量的重视
答题话术:
- 使用多种方式进行数据库校验:
- 通过SQL语句验证数据准确性和一致性
- 使用ORM工具进行复杂数据关系验证
- 开发数据对比工具进行多环境数据校验
- 建立数据质量监控规则,定期检查数据健康度
- 重点验证事务完整性、数据约束和业务规则
# 9. 你们有参与这个后端平台的开发吗?你们的自动化是平台级别的还是只是搭建的供系统调用运行的测试框架?
答题思路:
- 区分测试框架和测试平台
- 强调平台化建设的价值
- 体现技术贡献和影响力
答题话术:
- 我们开发了完整的测试平台,而不仅仅是测试框架
- 平台提供用例管理、任务调度、报告分析等功能
- 支持多项目、多团队协作使用
- 提供RESTful API供其他系统集成调用
- 实现了测试资源管理和自动化调度
- 平台大大降低了测试门槛,提高了协作效率
# 10. 你们搭建的那套自动化测试框架怎么运行的呢?jekins
答题思路:
- 说明自动化测试的执行方式
- 强调CI/CD集成价值
- 体现工程化实践
答题话术:
- 自动化测试通过Jenkins流水线触发执行
- 支持多种触发方式:代码提交、定时任务、手动触发
- 测试环境自动部署和初始化
- 测试用例并行执行,提高执行效率
- 测试结果自动收集和分析
- 通过邮件、钉钉等方式发送测试报告
- 与缺陷管理系统集成,自动创建缺陷
# 11. 那CI/CD持续集成的这个平台你们有参与研发吗?
答题思路:
- 体现对CI/CD的理解和实践
- 强调测试在流水线中的价值
- 展示技术贡献
答题话术:
- 深度参与CI/CD平台的建设和发展
- 负责测试相关环节的设计和实现
- 推动测试环境自动管理和部署
- 开发质量门禁,保障代码质量
- 建立完整的质量流水线,包含代码扫描、单元测试、集成测试等
- 通过数据驱动持续改进流水线效率
# 12. 你平常测试中会用到哪些测试方法?
答题思路:
- 系统化介绍测试方法
- 强调方法选择的合理性
- 体现测试专业度
答题话术:
- 根据测试目标选择合适的测试方法:
- 功能测试:等价类划分、边界值分析、场景测试等
- 性能测试:负载测试、压力测试、稳定性测试等
- 安全测试:渗透测试、漏洞扫描、代码审计等
- 兼容性测试:多浏览器、多设备、多版本验证
- 探索式测试:基于经验和直觉发现深层问题
# 13. 功能上数据库的测试数据和生产数据是怎么隔离的?
答题思路:
- 强调数据隔离的重要性
- 说明具体的隔离方案
- 体现数据安全意识
答题话术:
- 采用完全隔离的数据库实例和环境
- 测试数据通过脱敏工具处理,去除敏感信息
- 建立数据分类和权限控制机制
- 使用数据掩码技术保护隐私数据
- 定期清理测试数据,避免数据膨胀
- 监控数据访问行为,防止数据泄露
# 14. bug管理系统用的什么?
答题思路:
- 说明工具选择和原因
- 强调缺陷管理流程
- 体现过程改进意识
答题话术:
- 使用Jira进行缺陷管理
- 定制了适合团队的缺陷工作流
- 定义清晰的缺陷等级和优先级标准
- 建立缺陷分析机制,定期进行根本原因分析
- 与测试用例和代码变更关联,实现全链路追溯
- 通过仪表盘可视化缺陷趋势和质量状态
# 15. 上线前有哪些手段保证上线质量?
答题思路:
- 系统化介绍质量保障措施
- 强调风险防控意识
- 体现严谨的工作态度
答题话术:
- 多轮测试验证:功能测试、回归测试、 smoke测试
- 代码评审和质量扫描
- 性能压测和容量评估
- 安全扫描和渗透测试
- 变更评审和风险评估
- 备份和回滚方案验证
- 上线checklist和预演
# 16. 接着就问如果产品上线出现了质量问题,你们作为测试会给出技术性的解决方案吗?
答题思路:
- 体现问题解决能力
- 强调快速响应和修复
- 展示持续改进意识
答题话术:
- 第一时间参与问题定位和分析
- 提供重现步骤和日志分析支持
- 建议临时解决方案和长期修复方案
- 推动进行根本原因分析和改进措施
- 更新测试用例和监控规则,防止问题复发
- 总结教训,完善测试策略和流程
# 17. 性能压测怎么做的?脚本指的是代码吗?
答题思路:
- 说明性能测试方法论
- 区分测试脚本和代码
- 体现专业性能测试能力
答题话术:
- 性能测试包括需求分析、场景设计、脚本开发、执行监控和结果分析
- 脚本既包括JMeter等工具脚本,也包括代码实现的压测程序
- 使用JMeter进行HTTP接口压测
- 使用Java或Go编写复杂的业务场景压测脚本
- 脚本包含参数化、关联、断言等逻辑
- 建立性能测试基线,监控性能变化趋势
# 18. jmeter工具做压测有没有考虑工具本身的影响?
答题思路:
- 体现工具使用的专业性
- 强调监控和分析的重要性
- 展示优化实践经验
答题话术:
- 充分考虑工具本身对压测结果的影响
- 使用分布式部署减轻单机压力
- 监控压测工具本身的资源消耗
- 优化脚本和配置,提高工具效率
- 与真实性能数据进行对比验证
- 在测试报告中说明工具影响因素
# 19. 你们性能压测的具体执行是手动点击,然后观察监控页面数据指标?还是将这个压测过程写成了代码去加压?性能问题(包括性能瓶颈)怎么看的呢?
答题思路:
- 强调自动化程度
- 系统化介绍性能分析方法
- 体现专业深度
答题话术:
- 压测过程完全自动化,通过代码和工具实现
- 使用性能监控平台收集和分析指标
- 通过链路追踪定位性能瓶颈
- 分析数据库慢查询和索引效率
- 检查JVM配置和垃圾回收情况
- 评估网络带宽和IO性能
- 给出具体的优化建议和方案
# 20. 遇到过哪些常见的性能问题?
答题思路:
- 分类介绍典型性能问题
- 强调问题分析和解决过程
- 体现经验积累
答题话术:
- 数据库问题:慢查询、索引缺失、连接池瓶颈
- 代码问题:循环调用、重复计算、内存泄漏
- 配置问题:线程池配置、缓存配置、超时设置
- 架构问题:同步调用阻塞、单点故障、容量不足
- 环境问题:网络延迟、资源竞争、配置不一致
# 21. 压测前的准备阶段有可能会出什么问题?比如上游链路准备这方面?
答题思路:
- 强调准备工作的重要性
- 系统化分析可能的问题
- 体现风险管理意识
答题话术:
- 测试数据准备不充分或不符合要求
- 环境配置不一致或缺少依赖服务
- 监控工具未就绪或配置错误
- 上下游系统未协调好测试时间
- 测试脚本存在逻辑错误或性能问题
- 资源配额不足或权限限制
# 22. 性能问题定位分析是定位到哪个层面?报告里面要体现定位到代码层面还是就到相关功能接口层面?
答题思路:
- 强调问题定位的深度
- 体现技术专业性
- 说明报告内容标准
答题话术:
- 问题定位要到代码层面,给出具体优化建议
- 分析数据库执行计划和索引优化方案
- 检查代码算法复杂度和资源使用情况
- 评估系统架构和组件配置合理性
- 报告中包含详细的定位过程和数据支撑
- 提供可执行的优化方案和预期效果评估
# 23. 中间件怎么监控的?
答题思路:
- 系统化介绍监控方案
- 强调全面性和实时性
- 体现运维能力
答题话术:
- 使用Prometheus收集中间件指标数据
- 通过Grafana展示监控仪表盘
- 监控关键指标:连接数、队列长度、响应时间等
- 设置告警规则,及时发现异常
- 定期进行容量规划和性能调优
- 建立中间件健康度评估体系
# 24. 你们会监控到其他模块吗?比如和你们业务相关联的模块你们会布置监控节点吗?
答题思路:
- 体现全局观和系统思维
- 强调端到端监控重要性
- 展示协作能力
答题话术:
- 建立端到端的全链路监控体系
- 在所有关键模块部署监控节点
- 监控上下游依赖服务的性能和可用性
- 建立服务等级目标(SLO)和错误预算机制
- 通过链路追踪分析跨系统调用性能
- 定期进行全链路压测,验证系统韧性
# 25. 你们项目中什么场景用到索引?
答题思路:
- 分类说明索引使用场景
- 强调索引设计和优化
- 体现数据库专业知识
答题话术:
- 频繁查询的字段建立索引
- 外键关联字段建立索引
- 排序和分组字段建立索引
- 组合查询字段建立复合索引
- 定期分析索引使用效率,删除冗余索引
- 使用覆盖索引减少回表查询
- 监控索引碎片率,定期优化重建
# 26. jekins中之前你们自动化跑的一些对应业务的任务列表,历史记录怎么去查看呢?有没有自动化任务的管理页面?
答题思路:
- 说明任务管理方案
- 强调可视化和追溯能力
- 体现工程化实践
答题话术:
- 通过Jenkins Blue Ocean查看任务执行历史和日志
- 开发了统一的任务管理平台,可视化展示所有任务
- 支持按项目、状态、时间等维度筛选和搜索
- 提供任务执行统计和趋势分析
- 集成告警通知,及时感知任务异常
- 建立任务归档和清理机制
# 27. 你们每天会有多少任务量的自动化会触发?简历里的400多条测试用例是什么用例?
答题思路:
- 用量化数据说明自动化程度
- 详细说明用例组成和覆盖范围
- 体现测试策略和规划
答题话术:
- 每日触发执行200+自动化测试任务
- 包括单元测试、接口测试、UI测试等不同类型
- 400多条测试用例主要覆盖核心业务场景
- 包含正常流程、异常流程、边界情况等测试场景
- 用例优先级分为P0、P1、P2三个等级
- 定期评审和更新用例,保持用例有效性
# 28. 开发有反馈框架问题和一些改进点的话,你们怎么办的?
答题思路:
- 体现开放和协作态度
- 强调持续改进意识
- 展示用户导向思维
答题话术:
- 建立开放的反馈渠道和沟通机制
- 定期收集用户反馈和使用体验
- 快速响应和处理框架问题
- 建立需求 backlog,优先级排序和处理
- 定期发布版本更新和新特性
- 通过用户访谈和问卷调查了解需求
- 组织培训和技术分享,提高用户满意度
# B站真题一
# 1. 自我介绍
答题思路:突出专业背景和技术能力,强调测试经验和项目成果,展现与岗位的匹配度。
答题话术:
- 面试官您好,我是XXX,拥有X年软件测试经验
- 专注于移动端和Web端测试,擅长功能测试、接口自动化测试和性能测试
- 在上一家公司主要负责H5页面和App的测试工作
- 熟悉测试流程和方法,能够独立完成测试方案设计和执行
- 带领团队完成多个重要项目的测试工作,保证产品质量
- 对技术有浓厚兴趣,期待在贵公司继续发展
# 2. 你想离开上一家公司的原因是什么?
答题思路:保持积极正面,聚焦职业发展,避免负面评价前公司。
答题话术:
- 希望在职业发展上有更大的成长空间
- 对贵公司的业务和技术方向很感兴趣
- 希望接触更复杂的技术挑战和项目
- 寻求更好的职业发展平台和学习机会
- 前公司的技术栈和业务方向与个人规划有所偏离
# 3. 我看你的简历描述大部分工作是前台页面的测试对吧?你这个H5跟普通的浏览器页面的测试差别是什么?
答题思路:详细说明H5测试的特殊性和重点,展现专业深度。
答题话术:
- H5页面需要特别关注移动端适配和性能优化
- 测试重点包括不同机型的兼容性、网络环境适配
- 需要关注嵌入容器的交互和通信机制
- 要测试页面在App内的加载速度和流畅度
- 还需要考虑hybrid架构下的特殊场景测试
# 4. 你公司所测试的是app吗?
答题思路:准确说明测试对象和范围,体现测试经验。
答题话术:
- 我们测试的是原生App和H5混合开发的应用
- 包括iOS和Android两个平台
- 测试范围覆盖功能、性能、兼容性等方面
- 使用真机和模拟器进行测试
- 建立完整的移动端测试体系
# 5. 你这个h5说到是嵌入到别的地方,那涉及到兼容性测试主要考虑到哪些点?
答题思路:系统化说明兼容性测试要点,展现测试专业性。
答题话术:
- 不同移动设备品牌和型号的兼容性
- 不同操作系统版本的适配情况
- 各种屏幕尺寸和分辨率的显示效果
- 不同WebView内核的兼容性问题
- 网络环境变化时的页面表现
- 与原生容器的交互兼容性
# 6. 每做一个新需求,兼容性测试没什么变化对吧?
答题思路:说明兼容性测试的重要性和持续性,体现质量意识。
答题话术:
- 每个新需求都需要进行兼容性测试
- 新功能可能会引入新的兼容性问题
- 需要更新测试矩阵,覆盖最新机型
- 持续跟踪市场主流设备变化
- 建立兼容性测试基线,定期回归
# 7. 你们会频繁新增需求吗?你会负责这些新增需求的测试吗?
答题思路:说明需求处理流程和个人职责,体现工作能力。
答题话术:
- 我们采用敏捷开发模式,每两周一个迭代
- 每个迭代都会有新需求和优化项
- 我负责所有新增需求的测试工作
- 包括测试方案设计、用例编写和执行
- 保证新需求质量的同时不影响现有功能
# 8. 你能不能结合你项目的实际经验,比如试算,说说你的一些软件测试方法是哪些?
答题思路:用具体案例说明测试方法,体现实战经验。
答题话术:
- 以试算功能为例,采用多种测试方法:
- 等价类划分测试不同输入范围
- 边界值分析测试临界值情况
- 场景测试模拟用户实际使用流程
- 错误推测法验证异常处理能力
- 前后端数据一致性校验
- 性能测试验证计算响应时间
# 9. 你们做接口自动化,你们的这个也会输出测试用例吗?还是只是调一个接口,可以具体说说是怎么做怎么写测试用例的吗?
答题思路:详细说明接口自动化测试的方法论,体现工程化思维。
答题话术:
- 我们采用代码化的方式编写接口测试用例
- 每个用例包含完整的测试步骤和断言
- 用例设计考虑正常流程和异常场景
- 使用数据驱动实现参数化测试
- 用例包含前置条件、测试步骤、预期结果
- 输出详细的测试报告和日志
# 10. 你们触发请求,是否有考虑到页面前台窜改数据这种测试情况?比如值,字段传错,长度超出限制等状况?
答题思路:说明安全测试和异常测试的覆盖程度,体现测试全面性。
答题话术:
- 专门设计了安全测试用例覆盖数据篡改场景
- 测试字段类型、长度、格式等异常情况
- 验证参数校验和错误处理机制
- 测试SQL注入和XSS等安全漏洞
- 使用工具进行接口安全扫描
- 建立安全测试用例库,定期更新
# 11. 你们的接口自动化是通过工具去测的吗?还是自己写的代码?
答题思路:说明技术选型和实现方式,体现技术能力。
答题话术:
- 我们使用Python+Requests框架编写接口自动化代码
- 采用Pytest测试框架组织测试用例
- 使用Allure生成美观的测试报告
- 开发了测试工具封装常用测试操作
- 代码方式更灵活,便于维护和扩展
- 与CI/CD流程深度集成
# 12. 纯粹是维护吗?实际上你本身不写很多新的代码对吗?
答题思路:强调技术贡献和编码能力,消除质疑。
答题话术:
- 我主要负责测试框架的开发和维护
- 编写了大量的测试代码和工具代码
- 每个迭代都会新增测试用例和功能
- 优化测试框架,提升执行效率
- 开发了一些测试工具辅助测试工作
- 代码贡献量在团队中名列前茅
# 13. 你们的自动化编程语言是什么?
答题思路:准确说明技术栈,体现代码能力。
答题话术:
- 主要使用Python作为自动化编程语言
- 使用Java编写一些性能测试工具
- 使用Shell脚本编写部署脚本
- 根据测试需求选择合适的语言
- 团队统一技术栈,便于协作维护
# 14. 你有没有自己比较熟悉的编程语言?除了Python
答题思路:展示多语言能力,体现技术广度。
答题话术:
- 除了Python,我还熟练掌握Java
- 使用Java开发过测试工具和平台
- 了解JavaScript,能够编写前端测试脚本
- 熟悉SQL,能够编写复杂查询语句
- 根据项目需要快速学习新的语言
# 15. 除了功能测试接口自动化测试,你们还做了哪些测试?比如性能,安全?
答题思路:全面介绍测试范围,体现测试体系完整性。
答题话术:
- 我们还开展性能测试,保证系统稳定性
- 进行安全测试,发现潜在漏洞
- 兼容性测试覆盖不同设备和环境
- 用户体验测试,优化产品使用体验
- 可靠性测试,验证系统长期运行稳定性
- 建立完整的质量保障体系
# 16. 你提到的是用jmeter做的性能测试,实际上也不是很复杂?
答题思路:说明性能测试的深度和复杂度,体现专业能力。
答题话术:
- 性能测试不仅仅是工具使用,更需要深入分析
- 需要设计合理的测试场景和压力模型
- 要分析系统瓶颈,定位性能问题
- 需要监控系统各项指标,综合分析
- 给出优化建议,推动性能优化
- 是一个系统性的工程,需要丰富经验
# 17. 你说的分析性能测试比较困难是指的什么?是纯粹从测试角度分析吗?
答题思路:详细说明性能分析难点,体现代价价值。
答题话术:
- 性能分析需要综合多方面因素
- 要分析应用代码、数据库、网络等各个环节
- 需要熟悉系统架构和实现细节
- 要区分是应用问题还是环境问题
- 需要丰富的经验才能准确判断
- 我们是从整个系统角度进行分析
# 18. 你们不做白盒测试,那你说的困难点是什么呢?我不太明白
答题思路:澄清测试深度和分析方法,消除误解。
答题话术:
- 我们虽然不直接修改代码,但会深入分析代码
- 通过日志、监控等手段定位问题
- 需要理解业务逻辑和实现原理
- 要分析系统架构和组件交互
- 需要综合运用各种工具和方法
- 是一个需要深厚技术功底的工作
# 19. 性能测试出现问题这块,你从测试角度一般能找到什么样的原因?
答题思路:系统化说明性能问题分析方法,体现专业性。
答题话术:
- 通过监控数据定位问题范围
- 分析数据库慢查询和索引问题
- 检查应用代码的性能瓶颈
- 分析系统配置和资源使用情况
- 检查网络环境和中间件性能
- 给出具体的优化建议和方案
# 20. 通过什么去分析的?
答题思路:具体说明分析工具和方法,体现实操能力。
答题话术:
- 使用APM工具监控应用性能
- 通过数据库监控工具分析SQL性能
- 使用JVM监控工具分析内存和GC
- 通过系统监控工具分析资源使用
- 使用网络分析工具排查网络问题
- 综合各种监控数据进行分析
# 21. 像你刚刚讲的linux常用命令都是现成的命令就能查到呀,都是现成的呀
答题思路:说明命令使用的技巧和经验价值,体现实践能力。
答题话术:
- 虽然命令是现成的,但需要知道何时使用什么命令
- 需要理解命令输出结果的含义
- 要能够组合使用多个命令解决问题
- 需要根据实际情况调整命令参数
- 这些都需要丰富的经验和实践积累
- 我们建立了常用的命令知识库
# 22. 你们的产品运行的时候也会输出日志对吧?还是说你们不看日志。直接让开发去看?那也是常用的linux命令吧
答题思路:说明日志分析的重要性和方法,体现问题定位能力。
答题话术:
- 日志分析是问题定位的重要手段
- 我们测试人员会首先分析日志定位问题
- 使用grep、awk等命令快速筛选日志
- 通过日志分析还原问题场景
- 只有复杂问题才会求助开发人员
- 建立了日志分析规范和流程
# 23. 你们有没有做过可靠性测试?
答题思路:说明可靠性测试实践,体现质量保障全面性。
答题话术:
- 我们定期进行可靠性测试
- 包括长时间运行测试和故障恢复测试
- 模拟异常情况验证系统稳定性
- 测试系统在压力下的表现
- 验证监控告警机制的有效性
- 输出可靠性测试报告和改进建议
# 24. 所以你在公司做的测试都比较简单,主要还是功能测试吧?
答题思路:全面展示测试工作内容,消除片面认识。
答题话术:
- 我们的测试工作涵盖多个方面
- 功能测试只是基础部分
- 还包括接口自动化、性能测试、安全测试等
- 参与测试工具和平台开发
- 负责测试流程优化和方法改进
- 是一个综合性的质量保障工作
# 25. 那你有没有自己的一个职业规划?
答题思路:展示清晰的职业规划,体现发展潜力。
答题话术:
- 短期希望深耕测试开发领域
- 中期目标成为全栈质量保障专家
- 长期希望向技术管理方向发展
- 持续学习新技术,提升专业能力
- 希望能够在贵公司实现这些目标
- 为公司质量保障体系做出贡献
# 26. 所以你还是想往自动化发展?
答题思路:明确发展方向,体现技术追求。
答题话术:
- 自动化是测试发展的重要方向
- 我希望在自动化领域深入发展
- 但同时也会保持对其他测试领域的关注
- 目标是成为综合性的测试专家
- 自动化是手段,提升质量才是目的
- 会根据工作需要平衡发展各个方面
# 27. 你有没有想问我的?
答题思路:提出有深度的问题,展现对公司的兴趣和思考。
答题话术:
- 想了解团队现在的测试技术栈和发展规划
- 公司对测试人员的成长有哪些支持措施
- 这个岗位面临的最大挑战是什么
- 团队的工作方式和协作流程是怎样的
- 公司未来的业务发展方向是什么
- 对这个岗位的候选人有什么期待
# B站真题二
# 1)进程和线程的区别
答题思路:
从资源分配、执行单位、开销、通信方式等角度对比,强调进程是资源分配的最小单位,线程是CPU调度的最小单位。
答题话术:
进程和线程是操作系统中的基本概念,主要区别包括:
- 资源分配:进程是资源分配的最小单位,每个进程有独立的地址空间;线程属于进程,共享同一进程的资源。
- 切换开销:进程切换需要保存和恢复整个上下文,开销大;线程切换只需保存少量寄存器,开销小。
- 通信方式:进程间通信(IPC)需要管道、消息队列等机制;线程间可直接读写共享数据(需同步)。
- 稳定性:一个进程崩溃不会影响其他进程;一个线程崩溃可能导致整个进程退出。
- 执行单位:线程是CPU调度的基本单位,进程是资源分配的基本单位。
# 2)最常用的协议,get和post的区别
答题思路:
从用途、安全性、参数传递方式、缓存等角度对比HTTP的GET和POST方法。
答题话术:
GET和POST是HTTP最常用的两种请求方法,区别如下:
- 用途:GET用于获取数据,POST用于提交数据。
- 参数位置:GET参数在URL中(明文),POST在请求体中(可加密)。
- 安全性:POST相对更安全(参数不直接暴露在URL)。
- 缓存:GET请求可被缓存,POST默认不缓存。
- 数据长度:GET受URL长度限制(约2048字符),POST支持更大数据量。
- 幂等性:GET是幂等的(多次请求结果相同),POST非幂等。
# 3)post提交数据类型有哪几种?
答题思路:
通过Content-Type头部指定数据类型,常见的有表单、JSON、文件等。
答题话术:
POST提交的数据类型主要由Content-Type头决定,常见的有:
application/x-www-form-urlencoded:默认表单格式,参数为键值对(如key1=value1&key2=value2)。multipart/form-data:支持文件上传,数据被分成多个部分。application/json:传递JSON格式的数据(如{"key":"value"})。text/plain:纯文本格式。application/xml:XML格式数据。
# 4)http协议除了get和post还有哪些?
答题思路:
列举其他HTTP方法并简要说明用途,如PUT、DELETE等。
答题话术:
HTTP协议除了GET和POST,还有:
- PUT:替换目标资源(全量更新)。
- DELETE:删除指定资源。
- HEAD:获取响应头(不返回body)。
- OPTIONS:查询服务器支持的请求方法。
- PATCH:部分更新资源。
- TRACE:回显服务器收到的请求(用于诊断)。
- CONNECT:建立隧道连接(用于代理)。
# 5)C++和python哪个执行效率更高?
答题思路:
从编译型vs解释型、静态vs动态类型、底层控制等角度分析C++效率更高。
答题话术:
C++执行效率更高,原因包括:
- 编译方式:C++是编译型语言,直接编译为机器码;Python是解释型语言,逐行解释执行。
- 类型系统:C++静态类型,编译期优化;Python动态类型,运行时类型检查开销大。
- 内存管理:C++可手动控制内存;Python依赖垃圾回收,有额外开销。
- 底层操作:C++可直接操作硬件和内存,适合高性能场景(如游戏、嵌入式)。
但Python开发效率更高,适合快速迭代和抽象层级高的任务。
# 6)迭代器怎么用
答题思路:
说明迭代器的概念,并通过iter()和next()函数或for循环演示用法。
答题话术:
迭代器是用于遍历集合的对象,实现__iter__()和__next__()方法。使用方法:
- 通过
iter()函数获取迭代器对象:it = iter([1,2,3])。 - 通过
next()依次获取元素:it = iter([1,2,3]) print(next(it)) # 输出1 print(next(it)) # 输出21
2
3 - 也可直接用
for循环自动处理迭代:for item in [1,2,3]: print(item)1
2
迭代器节省内存(惰性计算),适合处理大规模数据。
# 7)装饰器原理,什么原理实现?
答题思路:
解释装饰器本质是函数闭包+语法糖,用于扩展函数功能而不修改原代码。
答题话术:
装饰器本质是Python的高级函数,基于闭包和函数对象实现。原理:
- 闭包:装饰器是一个返回函数的高阶函数,内部函数引用外部变量(函数对象)。
- 语法糖:通过
@decorator简化调用,等价于func = decorator(func)。
示例:
def my_decorator(func):
def wrapper():
print("Before function")
func()
print("After function")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
# 调用时自动增强功能
say_hello()
2
3
4
5
6
7
8
9
10
11
12
13
输出:
Before function
Hello!
After function
2
3
# 8)Python异步编程,有用过异步编程吗?
答题思路:
介绍asyncio库和async/await语法,说明非阻塞IO的应用场景。
答题话术:
是的,我用过Python的异步编程(asyncio库)。核心是协程和事件循环,通过async/await语法实现非阻塞IO操作(如网络请求、文件读写)。
示例:
import asyncio
async def fetch_data():
print("Start fetching")
await asyncio.sleep(2) # 模拟IO操作
print("Done fetching")
return "Data"
async def main():
task = asyncio.create_task(fetch_data())
await task
asyncio.run(main())
2
3
4
5
6
7
8
9
10
11
12
13
优势:单线程内并发处理多个IO任务,避免线程切换开销,提高吞吐量(适合Web服务器、爬虫等)。
# 9)Python代码组织方式:脚本、类与方法调用
答题思路:
说明通过实例化类对象来调用方法,区分静态方法/类方法/实例方法。
答题话术:
Python中通过定义类并实例化对象来调用方法:
- 定义类和方法:
class MyClass: def my_method(self): print("Hello from method!")1
2
3 - 实例化对象并调用方法:
obj = MyClass() # 实例化 obj.my_method() # 输出:Hello from method!1
2 - 如果是静态方法(
@staticmethod)或类方法(@classmethod),可直接通过类调用:class MyClass: @staticmethod def static_method(): print("Static method") MyClass.static_method() # 无需实例化1
2
3
4
5
6
# 10)小程序、H5、APP三者的区别
答题思路:
从开发技术、性能、体验、发布流程等角度对比。
答题话术:
| 维度 | 小程序 | H5(Web App) | APP(原生) |
|---|---|---|---|
| 技术 | 微信框架(类HTML/CSS) | HTML5+JS+CSS | Java/Kotlin(Android)、OC/Swift(iOS) |
| 性能 | 接近原生,较高 | 依赖浏览器,较差 | 最高 |
| 体验 | 无需安装,即用即走 | 需浏览器访问 | 需安装,体验最流畅 |
| 发布 | 微信审核 | 无需审核,实时更新 | 应用商店审核 |
| 功能 | 受限微信API | 浏览器API | 可调用全部系统功能 |
# 11)登录页面测试用例设计
答题思路:
覆盖功能、UI、安全、兼容性、异常场景等。
答题话术:
针对登录页面(用户名、密码、登录按钮),测试用例包括:
- 功能测试:
- 输入正确用户名/密码,验证登录成功。
- 输入错误密码,提示“密码错误”。
- 用户名为空/密码为空,提示必填。
- 安全测试:
- 密码是否加密传输(HTTPS)。
- 错误次数过多是否锁账号。
- SQL注入测试(输入
'or'1'='1)。
- UI测试:
- 布局是否合理,元素对齐。
- 密码是否显示为掩码(***)。
- 兼容性:
- 不同浏览器/设备显示正常。
- 性能测试:
- 多次快速点击按钮是否重复提交。
# 12)延期最严重是什么,如何规避?
答题思路:
举例需求变更、技术风险等常见原因,并提出应对措施。
答题话术:
最严重的延期通常是需求频繁变更或技术方案不可行导致。规避方法:
- 前期明确需求:与产品经理深入评审,冻结需求基线。
- 拆分任务:采用敏捷开发,分迭代交付,降低风险。
- 技术预研:对未知技术提前验证(如Proof of Concept)。
- 缓冲区设置:计划中预留20%时间应对意外。
- 每日站会:及时同步进度,发现问题快速调整。
# 13)如何定位bug是前端还是后端问题?
答题思路:
通过抓包、日志、错误信息等手段判断问题归属。
答题话术:
- 抓包分析:
- 使用F12开发者工具或Fiddler抓包,查看请求参数和响应:
- 请求参数错误 → 前端问题。
- 响应数据错误 → 后端问题。
- 使用F12开发者工具或Fiddler抓包,查看请求参数和响应:
- 日志排查:
- 后端服务日志是否有错误记录(如数据库查询失败)。
- 直接测试接口:
- 用Postman直接请求后端API,复现问题则定位到后端。
- UI表现判断:
- 页面样式错乱/交互失效 → 前端问题。
- 数据加载失败/计算错误 → 后端问题。
# 14)测试用例包含哪些步骤?
答题思路:
按测试用例编写规范列举核心要素。
答题话术:
一个完整的测试用例通常包含:
- 用例ID:唯一标识(如TC_LOGIN_01)。
- 用例标题:简要描述目的(如“验证正确密码登录成功”)。
- 前置条件:执行前的状态(如用户已注册)。
- 测试步骤:详细操作(如输入用户名、密码,点击登录)。
- 预期结果:期望的输出(如跳转到首页)。
- 实际结果:执行后的实际输出(测试时填写)。
- 优先级:P0/P1/P2(影响程度)。
- 测试数据:使用的具体数据(如用户名test01)。
# 15)用例通过率、不通过率及问题类型
答题思路:
说明通过率计算公式,并列举常见不通过原因(如bug、环境问题)。
答题话术:
- 通过率 = (通过用例数 / 总用例数) × 100%。
- 不通过率 = 1 - 通过率。
常见不通过问题:
- Bug:功能未实现、逻辑错误(占大多数)。
- 环境问题:服务宕机、网络异常。
- 数据问题:测试数据被污染或缺失。
- 用例设计缺陷:预期结果不合理,需修改用例。
- 兼容性问题:特定浏览器/设备异常。
# 16)测试用例规模
答题思路:
根据项目复杂度灵活调整,通常以模块为单位统计。
答题话术:
用例规模因项目而异:
- 中小项目:通常几百到上千条用例。
- 大型系统:模块拆分(如用户模块300条、支付模块500条),总规模可达数千条。
我个人经历的项目中,单个核心模块的用例数在200~500条之间,全程维护约3000条用例(覆盖回归测试)。
# 17)持续集成什么时候跑?
答题思路:
说明CI的触发条件(如代码提交、定时任务)。
答题话术:
持续集成(CI)通常在以下时机自动触发:
- 代码提交:开发者push代码到主干或分支时(最常用)。
- 定时构建:每天凌晨自动运行(用于每日版本验证)。
- 手动触发:测试人员按需启动(如验证紧急修复)。
- 依赖任务完成:下游任务在上游通过后触发(如部署后自动测试)。
# 18)你有什么要问我的?
答题思路:
提问体现对岗位的兴趣和思考,避免敏感问题。
答题话术:
- 团队与项目:
“请问目前测试团队规模和主要负责的产品方向是什么?” - 技术栈:
“团队常用的测试工具和自动化框架有哪些?(如Selenium、Jmeter)” - 发展机会:
“公司是否有内部培训或技术分享机制?” - 后续流程:
“接下来的面试流程是怎样的?”
# 京东真题一
# 1)自我介绍
答题思路:
自我介绍应简洁明了,涵盖个人背景、工作经验、技能特长以及职业兴趣,突出与测试相关的经验和能力。
答题话术:
您好,我叫[您的姓名],有[数字]年软件测试经验,专注于功能测试、自动化测试和性能测试。我熟悉Python、Selenium、Jenkins等工具,曾参与[项目类型]项目的测试工作,负责测试用例设计、自动化脚本开发和持续集成流程搭建。我注重测试效率和产品质量,善于团队协作和问题解决。希望能在贵公司贡献我的技能和经验。
# 2)自动化框架实现流程
答题思路:
从需求分析、工具选型、框架设计、脚本开发到维护优化,描述自动化测试框架的实现步骤。
答题话术:
自动化框架的实现流程包括:
- 需求分析:明确自动化测试范围、目标和资源。
- 工具选型:根据项目技术栈选择合适工具(如Selenium for Web, Appium for Mobile)。
- 框架设计:采用Page Object模式(PO)设计,实现代码复用和易于维护。
- 脚本开发:编写测试脚本,覆盖核心功能,参数化测试数据。
- 集成CI:将自动化测试集成到Jenkins,实现定时执行或触发执行。
- 报告分析:生成测试报告,分析结果并优化脚本。
- 维护优化:定期更新脚本以适应需求变化。
# 3)自动化框架是自己开发的吗
答题思路:
根据实际情况回答,如果是基于开源框架定制,说明自定义部分。
答题话术:
是的,我基于开源框架(如Selenium)进行了定制开发,增加了日志管理、数据驱动、报告生成等功能,使其更符合项目需求。例如,我使用Python和Pytest搭建了关键字驱动框架,提高了脚本的可读性和维护性。
# 4)测试用例有实现自动化吗?用的是python吗
答题思路:
肯定回答,并说明自动化用例的覆盖范围和使用的语言。
答题话术:
是的,部分测试用例实现了自动化,主要覆盖回归测试和核心功能测试。我使用Python作为主要编程语言,因为它语法简洁、库丰富(如Selenium、Pytest),能快速开发自动化脚本。
# 5)自动化用例在平时工作量占比?
答题思路:
给出一个百分比范围,并解释自动化测试的优先级和时间分配。
答题话术:
自动化用例约占工作量的30%-40%。初期脚本开发耗时较多,但后期维护和执行节省了大量手动测试时间,使我能更专注于新功能测试和缺陷分析。
# 6)什么样的自动化用例是好的自动化用例?
答题思路:
从可靠性、可维护性、效率、覆盖度等角度描述。
答题话术:
好的自动化用例应具备:
- 可靠性:稳定执行,失败仅因真实缺陷。
- 可维护性:代码清晰,易于修改和扩展。
- 效率:执行速度快,资源占用少。
- 覆盖度:覆盖核心业务场景。
- 独立性:用例之间无依赖,可单独执行。
- 数据驱动:参数化设计,支持多组数据测试。
# 7)自动化用例输出量
答题思路:
提供具体数字或范围,说明自动化用例的规模。
答题话术:
在我负责的项目中,自动化用例输出量大约在200-500条之间,覆盖主要功能模块。例如,用户管理模块有50条自动化用例,订单处理模块有100条。
# 8)Jenkins使用的场景和配置?
答题思路:
描述Jenkins在持续集成中的使用场景和常见配置项。
答题话术:
Jenkins用于持续集成,场景包括:
- 定时构建:每天凌晨执行自动化测试。
- 触发构建:代码提交后自动触发测试。
配置方面: - Job配置:设置源码管理(Git)、构建触发器(Poll SCM)、构建步骤(执行Python脚本)。
- 插件使用:安装Email Extension插件发送测试报告,Allure插件生成美观报告。
- 环境变量:配置测试环境参数,如数据库连接字符串。
# 9)集成Jenkins达到什么目标?
答题思路:
说明集成Jenkins的目的,如提高效率、快速反馈等。
答题话术:
集成Jenkins的主要目标:
- 自动化执行:减少手动操作,提高测试效率。
- 快速反馈:及时发现问题,缩短修复周期。
- 持续集成:确保代码变更后系统稳定。
- 报告可视化:提供清晰的测试结果,便于团队分析。
# 10)自动化搭建配置是自己做的吗?
答题思路:
肯定回答,并说明具体工作内容。
答题话术:
是的,我独立完成了自动化环境的搭建和配置,包括安装测试工具(如Selenium WebDriver)、设置Python虚拟环境、配置Jenkins Job以及部署测试服务器。
# 11)集成Jenkins详细工作?
答题思路:
详细描述集成Jenkins的步骤和所做的工作。
答题话术:
集成Jenkins的详细工作:
- 安装Jenkins:在服务器上部署Jenkins,安装必要插件。
- 配置Job:创建Freestyle或Pipeline Job,设置Git仓库地址、分支。
- 构建触发器:配置Webhook或Poll SCM,实现代码提交触发构建。
- 构建步骤:添加Execute Shell或Windows Batch Command,运行测试脚本(如
pytest test_suite.py)。 - 后处理:配置Allure或JUnit报告生成,并设置邮件通知。
- 监控:定期检查构建状态,优化脚本以提高稳定性。
# 12)覆盖哪些性能测试类型,做过哪些性能测试工作?
答题思路:
列举常见的性能测试类型,并结合个人经验说明。
答题话术:
覆盖的性能测试类型包括:
- 负载测试:模拟多用户并发,检查系统性能。
- 压力测试:逐步增加负载,找到系统瓶颈。
- 稳定性测试:长时间运行,检查内存泄漏等。
- 并发测试:多用户同时操作,验证数据一致性。
我做过的性能测试工作:使用JMeter对Web应用进行负载测试,模拟1000用户登录,分析响应时间和吞吐量;使用LoadRunner进行压力测试,识别数据库查询瓶颈。
# 13)稳定性怎么设计的?
答题思路:
从测试场景、持续时间、监控指标等方面描述稳定性测试设计。
答题话术:
稳定性测试设计:
- 测试场景:模拟正常用户操作,如持续下单、查询。
- 持续时间:通常运行8-24小时,甚至更长。
- 监控指标:跟踪内存使用、CPU利用率、响应时间、错误率。
- 数据收集:使用监控工具(如Grafana)实时收集数据。
- 分析优化:根据结果优化代码或配置,如调整数据库连接池。
# 14)其他的测试类型?
答题思路:
补充其他常见的测试类型,如安全测试、兼容性测试等。
答题话术:
除了功能、自动化、性能测试,我还涉及:
- 安全测试:SQL注入、XSS漏洞扫描(使用OWASP ZAP)。
- 兼容性测试:浏览器(Chrome、Firefox)、设备(iOS、Android)兼容。
- 接口测试:使用Postman测试API接口。
- 探索性测试:基于经验随机测试,发现潜在问题。
# 15)性能测试的测试方案怎么设计?
答题思路:
从目标、场景、环境、工具、数据、指标等方面描述性能测试方案设计。
答题话术:
性能测试方案设计:
- 目标定义:明确性能指标(如响应时间<2s,吞吐量100TPS)。
- 场景设计:识别关键业务场景(如用户登录、支付)。
- 环境准备:搭建类生产环境(硬件、网络、数据库)。
- 工具选型:选择JMeter、LoadRunner等。
- 测试数据:准备真实数据,参数化模拟用户。
- 执行计划:制定负载模型(并发用户数、 ramp-up时间)。
- 监控设置:配置服务器监控(CPU、内存、磁盘I/O)。
- 报告分析:生成报告,提出优化建议。
# 16)性能测试方案从哪些方面体现?
答题思路:
说明性能测试方案应包含的要素。
答题话术:
性能测试方案从以下方面体现:
- 测试目标:具体性能指标。
- 范围:测试的功能模块。
- 环境:硬件、软件配置。
- 工具:使用的测试工具。
- 场景:业务场景和负载模型。
- 数据:测试数据准备策略。
- 风险:潜在风险和应对措施。
- 进度:时间安排和资源分配。
# 17)如何根据数据分析了解到系统的什么点?
答题思路:
从性能数据中分析系统瓶颈和问题点。
答题话术:
通过性能测试数据,可以了解:
- 响应时间:判断系统处理能力,时间长可能表示代码或数据库问题。
- 吞吐量:系统处理事务的能力,低吞吐量可能表示网络或服务器配置问题。
- 错误率:高错误率可能表示程序bug或资源不足。
- 资源利用率:CPU、内存使用率高可能表示硬件瓶颈或内存泄漏。
例如,如果数据库服务器CPU使用率高,可能是SQL查询需要优化。
# 18)性能平行点跟指标方向的分析??
答题思路:
可能是指性能瓶颈和指标分析,解释如何识别和解决瓶颈。
答题话术:
性能瓶颈分析主要关注:
- 应用层:代码效率低、算法复杂。
- 数据库层:慢查询、索引缺失。
- 网络层:带宽不足、延迟高。
- 服务器层:硬件资源不足(CPU、内存)。
指标方向包括响应时间、吞吐量、并发用户数等。通过监控这些指标,定位瓶颈点并优化,如添加缓存、优化查询。
# 19)测试左移 测试右移是什么?这部分您在当中起到什么作用,意义成效?
答题思路:
解释测试左移和测试右移的概念,并说明个人贡献和效果。
答题话术:
- 测试左移:在开发早期介入测试,如需求评审、单元测试,提前发现缺陷。我参与需求评审,编写测试用例,进行代码审查,减少了后期bug数量。
- 测试右移:上线后持续监控,如日志分析、用户反馈跟踪。我配置了监控警报,及时处理生产环境问题,提高了系统稳定性。
意义:左移降低修复成本,右移提升用户体验,整体提高产品质量。
# 20)常用的测试用例设计方法?
答题思路:
列举黑盒测试常用方法,并简要说明。
答题话术:
常用的测试用例设计方法:
- 等价类划分:将输入数据分为有效和无效类,减少用例数。
- 边界值分析:测试输入边界值(如最小值、最大值)。
- 因果图:分析输入条件组合,生成测试用例。
- 场景法:基于用户场景设计用例。
- 错误推测法:基于经验猜测可能错误。
我经常使用等价类和边界值组合设计用例。
# 21)数据组合 状态机有用过吗
答题思路:
肯定回答,并说明使用场景和方法。
答题话术:
是的,我使用过数据组合和状态机测试:
- 数据组合:使用Pairwise或正交表法减少测试用例数量,覆盖多参数组合。例如,测试登录功能时,组合用户名、密码、验证码的不同值。
- 状态机:用于测试状态转换,如订单状态(待支付、已支付、已发货)。我设计状态转换图,覆盖所有可能路径。
# 22)编程题:丑树的定义 只包含质因数2 . 3 5 的正整数 给一个整数n 判断是否为丑树
答题思路:
编写函数判断数字n是否为丑数。丑数应被2、3、5整除,直到结果为1。注意处理n<=0的情况。
答题话术:
以下是Python代码实现:
def is_ugly(n):
if n <= 0:
return False
for p in [2, 3, 5]:
while n % p == 0:
n //= p
return n == 1
# 测试示例
print(is_ugly(6)) # True
print(is_ugly(14)) # False
print(is_ugly(1)) # True
2
3
4
5
6
7
8
9
10
11
12
解释:通过循环除以2、3、5,如果最终结果为1,则是丑数;否则不是。时间复杂度为O(log n)。
# 京东真题二
# 1)需求排期一般几天,最长的是多久
答题思路:
根据需求复杂度灵活评估,简单需求1-3天,复杂需求1-2周,需考虑测试深度和风险。
答题话术:
通常需求排期根据复杂度而定:
- 简单需求(如UI调整):1-3天
- 中等需求(如新功能模块):3-5天
- 复杂需求(如支付集成):1-2周
最长排期遇到过2周(涉及第三方接口联调和安全测试)。我会根据测试点数量、环境准备时间和风险评估来合理排期。
# 2)什么工具写用例
答题思路:
列举常用用例管理工具,并说明选择原因(如协同、效率)。
答题话术:
常用工具包括:
- Excel:快速编写和修改,适合中小项目。
- 禅道/JIRA:集成需求-用例-缺陷管理,便于团队协作。
- TestLink:专业用例管理,支持导出和统计。
我个人偏好禅道,因为它与需求、缺陷联动,能实时跟踪覆盖率。
# 3)排期两三天的需求用例写多少
答题思路:
根据需求粒度估算用例数,强调质量优于数量。
答题话术:
2-3天的需求通常编写20-50条用例,覆盖核心场景和异常情况。例如:
- 正向流程:5-10条
- 边界值/异常:10-15条
- 兼容性/UI:5条
会更注重关键路径的覆盖,而非追求数量。
# 4)给你一个PRD你写用例从哪里下手
答题思路:
说明从理解需求、识别功能点、到设计用例的完整流程。
答题话术:
- 通读PRD:理解业务背景和目标用户。
- 列出功能点:提取所有输入、输出、交互元素。
- 优先级排序:先覆盖核心功能(如登录、支付)。
- 设计用例:
- 用等价类划分和边界值设计输入框用例
- 用状态迁移图设计流程类用例
- 考虑兼容性和异常场景
- 评审:与产品、开发对齐,避免遗漏。
# 5)哔哩哔哩APP和PC登录页的用例设计
答题思路:
从功能、UI、安全、兼容性等角度设计登录用例。
答题话术:
共同用例:
- 正确用户名/密码登录成功
- 错误密码提示清晰
- 用户名为空提示
- 密码掩码显示
- 忘记密码跳转
APP特有: - 生物识别登录(指纹、面部)
- 第三方登录(微信、QQ)
- 离线登录提示
PC特有: - 扫码登录功能
- 浏览器记住密码
- 多标签页登录态同步
安全测试: - 密码加密传输
- 错误次数限制
- SQL注入尝试('or'1'='1)
# 6)排期两三天的需求写一个用例要多久
答题思路:
给出平均时间,并说明影响因素(如复杂度、历史经验)。
答题话术:
平均每条用例设计时间5-10分钟,包括思考、编写和复查。但会因情况而异:
- 简单输入框:2-3分钟(直接边界值)
- 复杂业务逻辑:10-15分钟(需画状态图)
我会优先保证核心用例质量,避免过度设计。
# 7)有没有主测过一个项目
答题思路:
肯定回答,并说明负责的内容和成果。
答题话术:
是的,我主测过[X项目](如电商平台)。负责:
- 制定测试计划和时间表
- 分配测试任务给组成员
- 设计核心用例(覆盖率90%+)
- 跟踪缺陷解决率(95%以上)
- 输出测试报告和上线建议
最终项目顺利上线,无重大故障。
# 8)你怎么确保项目上线没有风险
答题思路:
从测试覆盖、流程管控、监控等角度说明风险控制措施。
答题话术:
确保上线无风险的措施:
- 测试覆盖:核心路径100%覆盖,异常场景覆盖80%+
- 缺陷管理:所有P0/P1缺陷解决,遗留问题评估影响
- 回归测试:上线前全量回归核心功能
- 预发验证:在近生产环境验证数据和服务
- 监控准备:配置日志监控和业务指标看板
- 回滚方案:准备紧急回滚脚本和流程
# 9)怎么定位前后端问题
答题思路:
通过抓包、日志、数据库查询等手段快速定位。
答题话术:
- 抓包分析(Charles/Fiddler):
- 请求参数错误 → 前端问题
- 响应数据错误 → 后端问题
- 日志排查:
- 前端Console日志:JavaScript错误
- 后端应用日志:异常堆栈信息
- 数据库验证:查询数据是否正确写入
- 简单复现:
- 直接调用后端API → 复现则后端问题
- 修改输入数据 → 复现则前端问题
# 10)Bug开发不认怎么办
答题思路:
强调沟通和证据,避免冲突,上升机制。
答题话术:
- 清晰描述:提供复现步骤、截图、日志等证据
- 技术沟通:从代码逻辑或数据角度解释问题
- 第三方确认:请其他开发或测试人员验证
- 风险评估:说明不修复对用户的影响
- 上升PM:必要时由产品经理优先级决策
始终保持专业态度,对事不对人。
# 11)中间有意外没法准时上线怎么办
答题思路:
说明评估、沟通和应急计划的重要性。
答题话术:
- 评估影响:分析意外原因和解决时间(如阻塞性bug)
- 及时沟通:同步给项目经理和团队,调整预期
- 调整计划:
- 缩减非核心功能(经产品同意)
- 加班追赶进度(如有必要)
- 应急上线:
- 先上线核心功能,次要功能下个版本补
- 准备hotfix方案,上线后快速修补
# 12)App测试的侧重点你知道吗
答题思路:
对比Web测试,突出App特有的测试类型。
答题话术:
App测试侧重点:
- 安装升级:安装、卸载、跨版本升级
- 中断测试:来电、短信、低电量等中断行为
- 网络兼容:3G/4G/5G/WiFi切换、弱网测试
- 设备兼容:不同品牌、分辨率、OS版本
- 性能专项:启动时间、内存泄漏、CPU占用
- 安全测试:数据存储加密、反编译加固
# 13)Web怎么测
答题思路:
从功能、UI、兼容、性能等维度展开。
答题话术:
Web测试重点:
- 功能:表单提交、导航、数据展示
- UI:布局、字体、颜色符合设计稿
- 兼容性:
- 浏览器(Chrome/Firefox/Safari/Edge)
- 分辨率(PC/平板/手机响应式)
- 性能:页面加载时间(Lighthouse工具)
- 安全:XSS、CSRF、SQL注入扫描
- 缓存:Cookie、LocalStorage行为
# 14)接口测试怎么测
答题思路:
说明接口测试的工具、方法和关注点。
答题话术:
接口测试步骤:
- 工具准备:Postman(手动)、JMeter/Pytest(自动化)
- 请求构造:
- URL、Method(GET/POST)
- Headers(Content-Type/Authorization)
- Body(JSON/XML/form-data)
- 响应验证:
- 状态码(200/400/500)
- 数据格式和值
- 响应时间
- 异常测试:错误参数、重复提交、权限验证
# 15)你们怎么看接口返回对不对
答题思路:
从协议、业务逻辑和数据一致性角度验证。
答题话术:
验证接口返回:
- 协议层:状态码为200(成功)或符合预期(如404)
- 业务层:
- 返回数据与需求一致(如用户ID正确)
- 错误码和消息清晰(如"密码错误")
- 数据层:
- 对比数据库确认数据正确性
- 检查数据一致性(如订单状态同步更新)
- 结构验证:JSON Schema校验字段存在性和类型
# 16)断言怎么做的
答题思路:
举例说明自动化测试中的断言方法。
答题话术:
在自动化测试中,断言用于验证预期结果:
- 状态码断言:
assert response.status_code == 200 - 内容断言:
- 包含关键信息:
assert "success" in response.text - JSON字段值:
assert response.json()["code"] == 0
- 包含关键信息:
- 数据库断言:查询数据库对比接口操作结果
- 时间断言:
assert response.elapsed < timedelta(seconds=1)
使用Pytest的assert或JMeter的Response Assertion。
# 17)接口和数据库怎么检验
答题思路:
说明如何通过数据库查询验证接口操作的正确性。
答题话术:
接口和数据库联合检验:
- 插入操作:调用新增接口,查询数据库确认数据插入且字段正确
- 更新操作:调用修改接口,查询数据库检查字段更新
- 删除操作:调用删除接口,查询数据库确认数据标记删除或物理删除
- 事务测试:故意触发异常,验证数据库回滚(如余额不足支付失败)
常用SQL查询验证:SELECT * FROM table WHERE id = XXX
# 18)接口自动化是怎么做的
答题思路:
介绍框架、工具和持续集成流程。
答题话术:
接口自动化实施:
- 框架选型:Python + Pytest + Requests
- 用例设计:
- 参数化测试数据(JSON/YAML文件)
- 封装公共方法(如登录token获取)
- 断言验证:响应状态码、业务码、数据一致性
- 报告生成:Allure报告,展示通过率和失败详情
- CI集成:Jenkins定时执行,结果邮件通知
- 环境管理:通过配置文件切换测试/生产环境
# 19)UI自动化做过吗
答题思路:
肯定回答,并说明使用的工具和场景。
答题话术:
是的,我用UI自动化测试Web和移动应用:
- Web:Selenium + Pytest,实现跨浏览器测试
- 移动:Appium + TestNG,测试Android/iOS应用
主要覆盖核心场景(如登录、下单),因为UI自动化维护成本高,所以选择高 ROI 的用例进行自动化。
# 20)给你个Web做UI自动化你会怎么做
答题思路:
从分析、设计到实现的步骤说明。
答题话术:
我会按以下步骤进行:
- 需求分析:确定自动化范围(优先核心流程)
- 技术选型:Selenium(Web)、Pytest(框架)、Page Object模式
- 环境搭建:安装浏览器驱动、配置IDE
- 脚本开发:
- 封装页面元素定位和操作(如click_input)
- 编写测试用例,参数化测试数据
- 添加等待和截图机制,提高稳定性
- 执行调试:本地运行调试,修复元素定位问题
- 持续集成:集成Jenkins,定时执行并生成报告
# 21)数据库增删改查去重操作
答题思路:
给出常用SQL语句示例。
答题话术:
常用SQL操作:
- 增:
INSERT INTO table (col1, col2) VALUES (v1, v2) - 删:
DELETE FROM table WHERE condition - 改:
UPDATE table SET col1 = v1 WHERE condition - 查:
SELECT * FROM table WHERE condition - 去重:
SELECT DISTINCT col FROM tableGROUP BY col
测试中常用于验证数据是否正确持久化。
# 22)Redis了解吗?用在什么地方
答题思路:
简介Redis特点及常见应用场景。
答题话术:
Redis是内存键值数据库,特点:高性能、支持持久化、多种数据结构。常用场景:
- 缓存:缓存热点数据,减轻数据库压力
- 会话存储:存储用户登录态(Session)
- 排行榜:利用ZSET实现实时排名
- 消息队列:用List结构实现简单队列
在测试中需关注缓存一致性(如数据库更新后缓存是否失效)。
# 23)性能测试怎么做的
答题思路:
从目标、工具、场景、分析到优化描述流程。
答题话术:
性能测试流程:
- 目标确定:响应时间<2s,TPS>100等
- 脚本开发:用JMeter模拟用户操作(登录、浏览)
- 场景设计:
- 负载测试:模拟50-100用户
- 压力测试:逐步增加用户直到系统崩溃
- 环境准备:独立测试环境,监控服务器资源
- 执行监控:收集CPU、内存、响应时间指标
- 分析优化:识别瓶颈(如数据库查询慢),配合开发优化
# 24)做测试从开始到现在,你哪里变化最大
答题思路:
从技术广度、深度和软技能角度说明成长。
答题话术:
变化最大的是:
- 技术栈拓宽:从手动功能测试到自动化、性能、安全测试
- 深度提升:不仅会使用工具,还能设计框架和优化用例
- 风险意识:从单纯执行用例到评估项目风险和制定质量保障策略
- 沟通协作:更主动与产品、开发沟通,推动问题解决
# 25)职业规划
答题思路:
分短期和长期,体现持续学习和贡献意愿。
答题话术:
我的职业规划:
- 短期(1-2年):深入测试开发,提升自动化框架设计和性能测试能力
- 中期(3-5年):成为测试专家,主导质量体系建设和团队技术培训
- 长期:向技术管理发展,统筹项目质量和流程优化
希望在贵公司持续成长,为团队带来价值。
# 26)哪里是弱项,怎么达成目标
答题思路:
诚实提及改进点,并说明具体学习计划。
答题话术:
我的弱项是大规模高并发性能测试经验,目前主要通过以下方式提升:
- 学习理论:阅读《性能测试实战》等书籍
- 工具深入:学习JMeter分布式部署和调优
- 实践机会:在项目中主动承担性能测试任务
- 交流分享:参加技术沙龙,向专家请教
设定每季度完成一个性能测试案例的目标,逐步积累经验。