# 通信厂商
# 中兴真题一
# 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. 简单说一下怎么做的压测
答题思路:
按流程说明(目标→脚本→环境→执行→监控→分析),突出工具链和协作细节。
话术:
- 目标设定:与产品/开发确定TPS、响应时间、错误率指标(如投保接口TPS≥100);
- 脚本开发:用JMeter模拟用户行为,参数化数据(如保单号),关联token;
- 环境隔离:使用独立压测环境,避免干扰生产;
- 场景执行:阶梯加压(如5-10-20线程逐步增加),持续运行30分钟以上;
- 监控:集成Prometheus监控服务器指标(CPU/内存),SkyWalking追踪链路;
- 分析:生成报告,定位瓶颈(如数据库慢查询、线程阻塞)。
# 6. 遇到哪些常见的性能问题并解决
答题思路:
分类举例(数据库/代码/中间件/配置),每个问题附根因和解决动作,体现分析能力。
话术:
- 数据库慢查询:理赔查询接口超时,通过索引优化和读写分离解决;
- 线程阻塞:保单生成接口并发时死锁,调整事务隔离级别和锁顺序;
- 缓存穿透:频繁查询不存在的保单号,用布隆过滤器或缓存空值;
- JVM FGC频繁:Young区过小,调整堆大小和GC策略(G1GC)。
# 7. 有过对性能测试关于代码层面的优化吗
答题思路:
从测试角度提建议(如算法/连接池/序列化),而非直接改代码,体现开发协作。
话术:
我会通过Profiler工具(如Arthas)定位代码瓶颈,并推动开发优化:
- 建议将递归查询改为迭代,减少栈溢出风险;
- 优化JSON序列化(Jackson替换FastJSON);
- 调整连接池参数(如Druid最大连接数避免超时)。
# 8. 协助开发调优可能是开发代码本身逻辑的问题,怎么弄
答题思路:
强调用数据说话(压测结果+监控日志),避免主观判断,提供优化方向。
话术:
- 压测中记录异常节点(如SQL执行时间长),用APM工具定位到具体方法;
- 提供线程dump或内存快照给开发,分析锁竞争或对象堆积;
- 建议优化逻辑:如循环内避免重复查询DB,改用批量操作;
- 验证优化后重新压测,对比指标是否达标。
# 9. 测试左移
答题思路:
解释概念(提前测试),列举实践(需求评审/单元测试/冒烟用例),体现质量共建。
话术:
测试左移是将测试活动提前到开发阶段:
- 参与需求评审,识别业务漏洞(如理赔规则歧义);
- 提供冒烟用例给开发自测,提前发现阻塞问题;
- 推动单元测试覆盖核心逻辑,用Jacoco检查覆盖率;
- 集成静态代码扫描(SonarQube)规范代码质量。
# 10. 有对开发自测进行检验吗?怎么确定自测达到标准
答题思路:
通过工具(覆盖率报告/冒烟通过率)和流程(提测门槛)量化标准。
话术:
会设置提测门槛:
- 开发需提供单元测试覆盖率报告(核心模块≥80%);
- 冒烟用例全部通过(自动化脚本校验);
- 代码扫描无严重漏洞(如空指针、SQL注入);
- 未达标则打回提测,并协助开发补充用例。
# 11. 提测时都会去看开发单元测试的覆盖率吗
答题思路:
肯定回答,说明检查工具和标准,强调核心模块重点覆盖。
话术:
是的,我会用Jacoco检查单元测试覆盖率:
- 整体覆盖率要求≥70%,核心业务(如保费计算)≥90%;
- 关注未覆盖的分支(如异常流程),督促开发补充;
- 将覆盖率与CI流水线集成,未达标则阻断构建。
# 12. 说一下测试的流程规范
答题思路:
按阶段描述(需求→用例→执行→报告→复盘),突出闭环和规范输出。
话术:
- 需求阶段:参与评审,输出测试点;
- 设计阶段:编写用例(MindMap+Excel),组织评审;
- 执行阶段:冒烟→功能→自动化→性能,缺陷跟踪(Jira);
- 报告阶段:输出测试报告,包括覆盖率、缺陷密度;
- 复盘阶段:总结漏测点,更新用例库。
# 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. 有什么想问我的吗
答题思路:
围绕团队技术栈、项目挑战、绩效标准提问,体现积极性和思考。
话术:
- 团队目前的自动化覆盖率和后续推进计划?
- 保险业务中最大的技术挑战(如数据一致性或性能瓶颈)?
- 测试团队的职业发展路径和培训机会?