# 通信厂商

# 中兴真题一

# 1. 自我介绍

答题思路
结合当前岗位需求,突出测试经验(尤其是保险/金融领域)、技术栈(自动化/性能/安全)、核心能力和项目亮点,体现综合实力。

话术
您好,我是XX,有X年软件测试经验,专注于保险和金融领域的系统测试。擅长接口自动化(Python+Requests+Pytest)、性能测试(JMeter+监控分析)和安全测试(基础漏洞扫描)。在最近的项目中主导了测试框架搭建和CI/CD集成,推动测试左移和质量流程优化。注重用技术手段提升效率,比如通过自动化脚本将回归测试时间缩短50%。


# 2. 简单介绍一下在最近工作中担任的角色负责什么模块

答题思路
说明负责的核心业务模块(如保险承保、理赔、支付等),强调测试职责(功能/自动化/性能)和跨团队协作(开发/产品)。

话术
我主要负责保险核心系统中的投保承保模块理赔流程模块。具体包括:

  • 功能测试:需求评审、用例设计、缺陷跟踪;
  • 自动化:用Python编写接口自动化脚本,覆盖主流程场景;
  • 性能测试:主导高峰场景压测,如并发投保、批量理赔;
  • 协作:参与技术方案评审,推动开发修复性能瓶颈和安全漏洞。

# 3. 介绍一下保险的上下游链路以及在框架中所用到的中间件

答题思路
分上下游描述(前端→业务→第三方),结合中间件(消息队列/缓存/数据库)说明作用,体现系统架构理解。

话术
保险系统的上下游链路包括:

  • 上游:用户端(APP/Web)、渠道方(代理/银行)、第三方(支付/征信);
  • 下游:再保公司、监管平台、内部系统(财务/CRM)。
    用到的中间件主要有:
  • Kafka:异步处理投保单和理赔通知,削峰填谷;
  • Redis:缓存产品信息、用户会话,减少数据库压力;
  • Dubbo:内部微服务调用,如核保服务调用风控服务;
  • Elasticsearch:日志聚合和保单查询加速。

# 4. 平时工作中功能、接口自动化和性能的比例是多少

答题思路
根据实际分配给出比例,强调自动化投入增长和性能测试的场景驱动(如大促前)。

话术
大致比例是:功能测试占50%,接口自动化占30%,性能测试占20%。但近期在推动自动化覆盖,比例逐渐倾斜。性能测试通常集中在版本末期或重大活动前(如双11保险促销),会集中进行压测和调优。


# 5. 简单说一下怎么做的压测

答题思路
按流程说明(目标→脚本→环境→执行→监控→分析),突出工具链和协作细节。

话术

  1. 目标设定:与产品/开发确定TPS、响应时间、错误率指标(如投保接口TPS≥100);
  2. 脚本开发:用JMeter模拟用户行为,参数化数据(如保单号),关联token;
  3. 环境隔离:使用独立压测环境,避免干扰生产;
  4. 场景执行:阶梯加压(如5-10-20线程逐步增加),持续运行30分钟以上;
  5. 监控:集成Prometheus监控服务器指标(CPU/内存),SkyWalking追踪链路;
  6. 分析:生成报告,定位瓶颈(如数据库慢查询、线程阻塞)。

# 6. 遇到哪些常见的性能问题并解决

答题思路
分类举例(数据库/代码/中间件/配置),每个问题附根因和解决动作,体现分析能力。

话术

  • 数据库慢查询:理赔查询接口超时,通过索引优化和读写分离解决;
  • 线程阻塞:保单生成接口并发时死锁,调整事务隔离级别和锁顺序;
  • 缓存穿透:频繁查询不存在的保单号,用布隆过滤器或缓存空值;
  • JVM FGC频繁:Young区过小,调整堆大小和GC策略(G1GC)。

# 7. 有过对性能测试关于代码层面的优化吗

答题思路
从测试角度提建议(如算法/连接池/序列化),而非直接改代码,体现开发协作。

话术
我会通过Profiler工具(如Arthas)定位代码瓶颈,并推动开发优化:

  • 建议将递归查询改为迭代,减少栈溢出风险;
  • 优化JSON序列化(Jackson替换FastJSON);
  • 调整连接池参数(如Druid最大连接数避免超时)。

# 8. 协助开发调优可能是开发代码本身逻辑的问题,怎么弄

答题思路
强调用数据说话(压测结果+监控日志),避免主观判断,提供优化方向。

话术

  1. 压测中记录异常节点(如SQL执行时间长),用APM工具定位到具体方法;
  2. 提供线程dump或内存快照给开发,分析锁竞争或对象堆积;
  3. 建议优化逻辑:如循环内避免重复查询DB,改用批量操作;
  4. 验证优化后重新压测,对比指标是否达标。

# 9. 测试左移

答题思路
解释概念(提前测试),列举实践(需求评审/单元测试/冒烟用例),体现质量共建。

话术
测试左移是将测试活动提前到开发阶段:

  • 参与需求评审,识别业务漏洞(如理赔规则歧义);
  • 提供冒烟用例给开发自测,提前发现阻塞问题;
  • 推动单元测试覆盖核心逻辑,用Jacoco检查覆盖率;
  • 集成静态代码扫描(SonarQube)规范代码质量。

# 10. 有对开发自测进行检验吗?怎么确定自测达到标准

答题思路
通过工具(覆盖率报告/冒烟通过率)和流程(提测门槛)量化标准。

话术
会设置提测门槛:

  • 开发需提供单元测试覆盖率报告(核心模块≥80%);
  • 冒烟用例全部通过(自动化脚本校验);
  • 代码扫描无严重漏洞(如空指针、SQL注入);
  • 未达标则打回提测,并协助开发补充用例。

# 11. 提测时都会去看开发单元测试的覆盖率吗

答题思路
肯定回答,说明检查工具和标准,强调核心模块重点覆盖。

话术
是的,我会用Jacoco检查单元测试覆盖率:

  • 整体覆盖率要求≥70%,核心业务(如保费计算)≥90%;
  • 关注未覆盖的分支(如异常流程),督促开发补充;
  • 将覆盖率与CI流水线集成,未达标则阻断构建。

# 12. 说一下测试的流程规范

答题思路
按阶段描述(需求→用例→执行→报告→复盘),突出闭环和规范输出。

话术

  1. 需求阶段:参与评审,输出测试点;
  2. 设计阶段:编写用例(MindMap+Excel),组织评审;
  3. 执行阶段:冒烟→功能→自动化→性能,缺陷跟踪(Jira);
  4. 报告阶段:输出测试报告,包括覆盖率、缺陷密度;
  5. 复盘阶段:总结漏测点,更新用例库。

# 13. 有产品验收的流程吗

答题思路
说明UAT环节(用户/产品验证),列举验收标准和输出物。

话术
有的,在测试通过后:

  • 预生产环境部署,由产品经理和业务方验收;
  • 验收标准:主流程畅通、UI/交互符合原型、数据准确;
  • 输出验收报告和签字确认,完成后上线。

# 14. 怎么保证测试用例的覆盖率

答题思路
结合方法论(等价类/边界值/场景法)和工具(需求覆盖追踪),强调持续维护。

话术

  • 设计时用等价类划分、边界值分析覆盖正常和异常场景;
  • 通过需求矩阵表(Traceability Matrix)确保每个需求点有用例;
  • 定期回归评审,补充漏测场景(如生产问题反向用例);
  • 用Pytest+Allure统计自动化用例覆盖的业务接口。

# 15. 做过安全相关的测试吗?接口测试怎么保证安全性

答题思路
列举安全测试经验(工具+手动),接口安全重点(鉴权/参数/加密)。

话术
做过基础安全测试:

  • 用BurpSuite扫描SQL注入、XSS;
  • 接口测试中校验:
    • 鉴权:token失效或越权访问是否阻断;
    • 参数:特殊字符(如SQL符号)、边界值、批量请求防重放;
    • 加密:敏感字段(身份证号)是否脱敏或加密传输。

# 16. 接口测试怎么做的

答题思路
说明技术栈(Python+Pytest+Allure)、框架设计(分层+数据驱动)和CI集成。

话术

  • 用Python+Requests发请求,Pytest管理用例,Allure出报告;
  • 框架分层:基础封装(API基类)、数据驱动(YAML文件)、工具类(数据库校验);
  • 覆盖场景:正常流程、异常参数、业务规则(如保费计算);
  • 集成Jenkins每日执行,企业微信通知结果。

# 17. 主流数据库会到哪种程度

答题思路
强调测试常用操作(增删改查/联表/事务),略提高阶能力(索引优化/存储过程)。

话术
熟练使用MySQL和Oracle:

  • 日常:复杂查询(多表关联、子查询)、事务验证(回滚机制)、数据构造;
  • 优化:通过执行计划分析索引有效性,建议开发添加索引;
  • 会写存储过程和触发器用于数据迁移或校验。

# 18. 编写存储过程有问题吗

答题思路
肯定能力,举例简单场景(数据加工/批量更新),避免过度承诺。

话术
可以编写基础存储过程,比如:

  • 批量生成测试数据(如万级保单记录);
  • 数据清洗:将异常保单状态批量更新;
  • 但复杂逻辑(如递归查询)仍需开发协助优化。

# 19. 对中间件了解怎么样,平常有测试过相关的中间件吗

答题思路
结合测试场景(消息堆积/缓存失效)说明验证方法,体现问题排查能力。

话术
测试中常验证中间件功能:

  • Kafka:模拟消费者宕机,检查消息是否重复消费或丢失;
  • Redis:测试缓存击穿(查不存在Key)和雪崩(大量Key过期);
  • Dubbo: mock服务提供者超时,验证熔降级机制。

# 20. 对缓存了解到什么程度,说一下缓存使用场景

答题思路
说明缓存作用(提速/削峰),举例业务场景(热点数据/会话),注意缓存问题。

话术
缓存主要用于高频访问数据:

  • 场景:保险产品信息、用户画像、会话token;
  • 注意问题
    • 缓存与DB一致性(延时双删或订阅binlog);
    • 热点Key倾斜(用本地缓存+分片);
    • 缓存穿透(布隆过滤器)。

# 21. 为什么查询缓存比数据库快

答题思路
对比内存vs磁盘IO、数据结构优化(哈希表)、避免SQL解析。

话术

  • 内存读写速度远高于磁盘IO;
  • Redis用哈希表存储,时间复杂度O(1),而SQL需解析、优化、执行;
  • 缓存避免网络开销(如应用与DB服务器距离)。

# 22. 有出现数据库和缓存不一致的情况吗

答题思路
举例场景(并发更新),说明解决方案(延时双删/重试机制)。

话术
遇到过,比如并发下单时:

  • 先更新DB,后删缓存,但删除失败导致脏数据;
  • 解决方案:
    • 写DB后休眠500ms再删缓存(延时双删);
    • 通过Canal订阅binlog,异步淘汰缓存。

# 23. 接口自动化中用到的装饰器有哪些

答题思路
列举常用装饰器(日志/重试/数据驱动),说明自定义场景。

话术

  • @pytest.mark.parametrize:数据驱动;
  • @allure.story:用例分级;
  • 自定义装饰器:如@retry(重试机制)、@log(请求日志记录)。

# 24. 装饰器和闭包有什么区别

答题思路
从概念(功能增强vs函数捕获变量)、实现(语法糖vs嵌套函数)对比。

话术

  • 装饰器:一种语法糖,用于增强函数功能(如添加日志),基于闭包实现;
  • 闭包:嵌套函数,内层函数引用外层变量(如计数器函数),用于保存状态。

# 25. 迭代器和生成器的区别

答题思路
对比特性(惰性计算)、内存占用、实现方式(iter vs yield)。

话术

  • 迭代器:实现__iter__和__next__方法,逐次返回值;
  • 生成器:用yield关键字,更简洁,支持惰性计算(如读取大文件),节省内存。

# 26. 常见数据类型哪些是可迭代的

答题思路
列举序列(列表/字符串)、映射(字典)、集合,强调可遍历特性。

话术
所有实现了__iter__方法的对象:

  • 序列:list、str、tuple;
  • 映射:dict(迭代Key);
  • 集合:set、frozenset;
  • 文件对象(逐行迭代)。

# 27. 说一下在多线程编程中实现了哪些功能

答题思路
结合测试场景(并发请求/数据生成),说明线程池和锁的应用。

话术
在性能测试中常用:

  • 用concurrent.futures.ThreadPoolExecutor模拟并发用户;
  • 线程安全:通过Lock控制共享资源(如全局计数器);
  • 多线程生成测试数据(如万级保单号)。

# 28. 接口自动化中有用到多线程编程吗

答题思路
肯定并说明场景(批量执行/性能预热),注意线程安全。

话术
部分场景会使用:

  • 批量执行用例:如同时运行100个查询接口测试;
  • 预热环境:多线程调用接口准备测试数据;
  • 注意用线程池控制并发数,避免压垮测试环境。

# 29. 前端性能调优和后端性能调优有什么区别

答题思路
前端侧重资源加载/渲染(浏览器),后端侧重并发/代码/数据库(服务器)。

话术

  • 前端:减少HTTP请求(合并CSS/JS)、压缩图片、CDN加速、懒加载;
  • 后端:优化SQL、线程池、缓存、异步处理(消息队列);
  • 工具:前端用Chrome DevTools,后端用APM和压测工具。

# 30. 对页面加载很慢的情况有没有提过有效的意见

答题思路
从前端(资源优化)、后端(接口提速)、网络(CDN)多角度建议。

话术
分析Chrome Network面板后建议:

  • 前端:启用Gzip压缩、减少DOM数量、图片WebP格式;
  • 后端:接口响应时间>2s时,优化SQL或加缓存;
  • 网络:静态资源部署CDN,减少DNS查询。

# 31. 死锁是接口的字段产生的死锁吗

答题思路
澄清死锁通常源于资源竞争(数据库行锁/线程锁),非字段本身。

话术
死锁多与并发资源竞争有关:

  • 数据库死锁:并发更新保单表时,循环等待行锁;
  • 线程死锁:多线程持有锁并相互请求;
  • 解决方案:调整锁顺序、超时机制、事务拆解。

# 32. 会使用抓包,mock的基本工具吗

答题思路
肯定回答,列举工具(Charles/MockJS)和应用场景(调试/依赖解耦)。

话术

  • 抓包:用Charles/Fiddler分析请求响应,篡改数据测试边界值;
  • Mock:用MockJS模拟未开发接口(如支付回调),保证测试进度。

# 33. 有什么想问我的吗

答题思路
围绕团队技术栈、项目挑战、绩效标准提问,体现积极性和思考。

话术

  1. 团队目前的自动化覆盖率和后续推进计划?
  2. 保险业务中最大的技术挑战(如数据一致性或性能瓶颈)?
  3. 测试团队的职业发展路径和培训机会?