# 新能源汽车
# 蔚来真题一
# 1. 自我介绍
答题思路:
结合测试经验、技术栈和项目亮点,突出自动化、性能测试能力,以及保险/金融领域经验,体现综合实力和职业素养。
话术:
您好,我是XX,拥有X年软件测试经验,专注于保险和金融领域的系统测试。我擅长接口自动化(使用Python、Pytest和Requests框架)、性能测试(使用JMeter和监控工具)以及安全测试。在以往的项目中,我主导了测试框架的搭建和CI/CD集成,成功将回归测试时间缩短了50%。我注重测试左移和质量流程优化,能够与开发团队紧密协作,提升整体产品质量。期待在贵公司贡献我的技能和经验。
# 2. 项目介绍
答题思路:
选择最近或最相关的项目,简要描述项目背景、个人角色、负责模块和取得的成果,突出测试贡献和技术挑战。
话术:
最近我参与了一个保险核心系统项目,该系统处理投保、核保、理赔和支付等流程。我担任测试负责人,主要负责投保和理赔模块的功能测试、接口自动化和性能测试。我设计了自动化测试框架,覆盖了80%的核心接口,并通过性能测试发现了数据库瓶颈,推动开发优化了SQL查询,使系统TPS提升了30%。项目成功上线后,得到了客户的好评。
# 3. 给一个登录和注册的功能框,里面有账号,密码,忘记密码,注册/登录这4个功能框,设计一下测试用例
答题思路:
基于功能点设计测试用例,覆盖正常流、异常流、边界值、安全性和用户体验等方面,确保全面覆盖。
话术:
针对登录和注册功能,我会设计以下测试用例:
- 正常流:
- 输入有效账号和密码,点击登录,验证成功跳转。
- 输入有效信息点击注册,验证注册成功并自动登录。
- 异常流:
- 输入错误密码,验证提示信息。
- 输入不存在的账号,验证提示信息。
- 输入无效邮箱格式注册,验证提示。
- 忘记密码:
- 点击忘记密码,输入注册邮箱,验证重置链接发送。
- 输入未注册邮箱,验证提示信息。
- 边界值:
- 输入超长账号/密码,验证处理。
- 输入特殊字符,验证过滤或提示。
- 安全性:
- 验证密码是否加密传输。
- 验证多次失败登录是否锁定账号。
- 用户体验:
- 验证记住密码功能。
- 验证登录后会话管理。
总计约20-30个用例,确保覆盖所有场景。
# 4. 有两张表,一个数学成绩表,一个班级名称表,数学成绩表里存了学生的ID和数学成绩,班级名称表里里面学生ID和班级名称,我要查询每个班上数学成绩大于90分的人数个数并且按照这个人数个数进行一个倒序的排列,最后要展现给我的是一个班级名称,一个是人数个数,说出完整的sql
答题思路:
使用SQL JOIN连接两张表,GROUP BY分组计数,WHERE过滤条件,ORDER BY排序,确保语法正确。
话术:
假设数学成绩表名为math_scores,包含字段student_id和score;班级名称表名为classes,包含字段student_id和class_name。完整的SQL查询如下:
SELECT
c.class_name,
COUNT(m.student_id) AS count_students
FROM
classes c
JOIN
math_scores m ON c.student_id = m.student_id
WHERE
m.score > 90
GROUP BY
c.class_name
ORDER BY
count_students DESC;
2
3
4
5
6
7
8
9
10
11
12
13
这个查询会返回每个班级名称和成绩大于90分的学生人数,并按人数降序排列。
# 5. 说下你对容器和K8S的了解
答题思路:
解释容器和K8S的基本概念、优势以及在测试中的应用,体现技术广度和实践能力。
话术:
容器是一种轻量级的虚拟化技术,如Docker,可以将应用及其依赖打包成镜像,实现环境一致性。Kubernetes(K8S)是容器编排平台,用于自动化部署、扩展和管理容器化应用。
在测试中,我们使用Docker容器快速搭建测试环境,避免环境差异问题。K8S用于管理测试集群,实现动态资源分配和弹性伸缩,例如在性能测试中自动扩容Pod以模拟高并发。我还用K8S部署测试工具如JMeter,提高测试效率和可靠性。
# 6. 写过存储过程吗?简单说下代码
答题思路:
肯定回答,举例一个简单的存储过程,说明用途和代码结构,避免过于复杂。
话术:
是的,我写过存储过程。例如,一个用于计算保险保单总数的存储过程:
DELIMITER //
CREATE PROCEDURE GetPolicyCount(IN startDate DATE, OUT totalCount INT)
BEGIN
SELECT COUNT(*) INTO totalCount FROM policies WHERE created_date >= startDate;
END //
DELIMITER ;
2
3
4
5
6
这个存储过程接受开始日期参数,输出保单数量。它简化了复杂查询,提高了数据操作效率。
# 7. 性能压测流程
答题思路:
按步骤描述性能压测的全流程,从计划到报告,突出关键活动和工具使用。
话术:
性能压测流程包括:
- 需求分析:与业务团队确定性能指标(如TPS、响应时间、并发用户数)。
- 场景设计:基于用户行为设计压测场景(如登录、下单)。
- 脚本开发:使用JMeter或LoadRunner编写脚本,参数化数据,添加断言。
- 环境准备:搭建独立压测环境,配置监控(如Prometheus、Grafana)。
- 执行压测:逐步增加负载,记录性能数据。
- 监控分析:实时监控系统资源(CPU、内存、数据库),识别瓶颈。
- 调优验证:与开发协作优化代码或配置,重新压测验证。
- 报告输出:生成性能报告,包括结论和建议。
整个过程确保系统满足性能要求。
# 8. jmeter压测怎么实现上下接口的关联
答题思路:
解释关联的概念,介绍JMeter中常用的关联方法如正则表达式提取器或JSON提取器。
话术:
在JMeter中,上下接口关联通常通过提取响应数据并传递给后续请求实现。例如,登录接口返回token,需要在后续请求中使用。
- 使用正则表达式提取器:在登录请求后添加该组件,设置正则表达式匹配token,如
"token":"(.+?)",将值保存到变量如${token}。 - 使用JSON提取器:如果响应是JSON,直接指定JSON Path表达式,如
$.token,保存到变量。
然后在后续请求的Header或Body中引用变量,如Authorization: Bearer ${token}。
这样可以动态处理依赖关系,模拟真实用户会话。
# 9. TPS的定义是什么?TPS和吞吐量有啥区别,他们之间的关系是什么
答题思路:
定义TPS和吞吐量,对比它们的关注点和计算方式,说明相互关系。
话术:
- TPS(Transactions Per Second):每秒事务数,衡量系统处理事务的能力,如每秒完成的订单数。
- 吞吐量(Throughput):单位时间内系统处理的请求数量,通常指每秒请求数(QPS)。
区别:TPS关注事务完成(如一个事务可能包含多个请求),吞吐量关注请求处理量。关系:TPS是吞吐量的子集,如果每个事务只包含一个请求,则TPS等于吞吐量;但通常事务涉及多个请求,所以吞吐量可能高于TPS。
在性能测试中,我们更关注TPS,因为它直接反映业务处理能力。
# 10. 印象深刻的性能调优说一下
答题思路:
选择一个具体案例,描述问题、分析过程、解决方案和结果,体现问题解决能力。
话术:
在一次保险理赔系统压测中,TPS达不到目标,响应时间慢。通过监控发现数据库CPU高,分析慢查询日志,发现一个理赔查询SQL没有索引。
- 问题:多表关联查询时全表扫描。
- 解决方案:与开发合作添加复合索引,优化SQL语句,减少JOIN操作。
- 结果:优化后TPS从50提升到150,响应时间从2s降低到200ms。
这个案例强调了数据库优化的重要性。
# 11. 你们的性能压测TPS目标是怎么制定的?你们系统一天的访问量有多少?
答题思路:
说明TPS目标基于业务数据和历史峰值,举例访问量计算,体现数据驱动决策。
话术:
TPS目标通常基于业务高峰期的访问量制定。例如,我们系统一天访问量约为100万次,高峰时段在上午10点-11点,访问量占全天的20%,即20万次。高峰时段持续3600秒,所以TPS目标为200000 / 3600 ≈ 56。我们会预留20%余量,设定TPS为70。
实际压测中,我们会模拟这个TPS并监控系统表现,确保稳定运行。
# 12. redis怎么测试的
答题思路:
介绍Redis测试的重点,如功能、性能、高可用,以及常用测试方法。
话术:
Redis测试主要包括:
- 功能测试:验证数据读写、过期时间、数据结构(如哈希、列表)操作是否正确。
- 性能测试:使用工具如redis-benchmark测试读写速度,关注并发连接数和响应时间。
- 高可用测试:模拟主从切换、哨兵模式故障转移,验证数据一致性。
- 缓存测试:检查缓存击穿、雪崩、穿透的防护措施,如使用布隆过滤器。
我会编写脚本模拟常见场景,确保Redis可靠性和性能。
# 13. 使用过Jenkins吗?说一下他的作用
答题思路:
解释Jenkins作为CI/CD工具的作用,举例在测试中的应用,如自动化测试触发。
话术:
是的,我使用过Jenkins。它是一个开源的CI/CD工具,用于自动化构建、测试和部署。在测试中,我配置Jenkins流水线:
- 自动触发代码提交后的单元测试。
- 定时执行接口自动化测试,生成Allure报告。
- 集成性能测试脚本,定期压测。
Jenkins提高了测试效率,实现了持续集成和快速反馈。
# 14. 您说你做过接口自动化,接口自动化怎么做的?那web自动化和app自动化您有了解吗?
答题思路:
详细描述接口自动化框架和技术,简要说明web和app自动化的了解,体现广度。
话术:
接口自动化我使用Python+Pytest+Requests框架:
- 编写基础封装类处理HTTP请求。
- 使用YAML文件管理测试数据。
- 用Pytest组织用例,Allure生成报告。
- 集成Jenkins实现持续执行。
对于web自动化,我了解Selenium with Python,用于UI测试;app自动化我了解Appium,用于移动端测试。虽然主要精力在接口自动化,但我能快速上手web和app自动化。
# 15. 给你一个列表,列表里有张三@qq.com,李四@qq.com,王老六@qq.com,我需要提取这个列表里的所有用户名,例如张三,李四,王老六,并以列表的形式返回给我,这个怎么实现
答题思路:
使用Python字符串处理,分割邮箱提取用户名,返回列表。
话术:
在Python中,可以通过列表推导式和字符串分割实现:
email_list = ["张三@qq.com", "李四@qq.com", "王老六@qq.com"]
username_list = [email.split('@')[0] for email in email_list]
print(username_list) # 输出: ['张三', '李四', '王老六']
2
3
这段代码遍历邮箱列表,用split('@')分割取第一部分,生成用户名列表。
# 16. 你们接口自动化一共有多少case?是所有的接口都覆盖了吗?
答题思路:
给出大致案例数,说明覆盖策略,强调核心接口覆盖而非全部。
话术:
我们接口自动化大约有500个case,覆盖了核心业务接口的80%,如投保、理赔、支付等。并非所有接口都覆盖,因为一些边缘接口或变化频繁的接口采用手动测试。我们定期评审用例,根据业务变化增加覆盖,确保关键路径质量。
# 17. 说下装饰器的理解,工作过程中有写过装饰器吗?
答题思路:
解释装饰器概念和作用,举例实际编写的装饰器,体现编程能力。
话术:
装饰器是Python中用于增强函数功能的语法糖,它允许在不修改原函数代码的情况下添加功能。
在工作中我写过装饰器,例如用于接口自动化测试的日志装饰器:
def log_api_call(func):
def wrapper(*args, **kwargs):
print(f"Calling function {func.__name__} with args {args}")
result = func(*args, **kwargs)
print(f"Function {func.__name__} returned {result}")
return result
return wrapper
@log_api_call
def api_request(url, data):
# 发送请求代码
return response
2
3
4
5
6
7
8
9
10
11
12
这个装饰器记录了函数调用和返回,便于调试。
# 18. 说一下冒泡排序怎么写
答题思路:
描述冒泡排序算法,提供Python代码示例,说明其原理和效率。
话术:
冒泡排序是一种简单的排序算法,它重复遍历列表,比较相邻元素并交换,直到排序完成。
Python实现:
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
# 示例
arr = [64, 34, 25, 12, 22]
print(bubble_sort(arr)) # 输出: [12, 22, 25, 34, 64]
2
3
4
5
6
7
8
9
10
11
尽管冒泡排序效率不高(O(n^2)),但易于理解和实现。
# 19. 我们的自动化框架是robertframework, 这个你之前有了解过吗?我们之后是需要使用这个框架来执行接口自动化的,你觉的你能胜任吗?
答题思路:
如果了解,直接肯定;如果不了解,表达学习能力和类似经验,展现自信。
话术:
我对RobotFramework有一定了解,它是一个关键字驱动的自动化测试框架,支持接口、web和app测试。虽然我主要使用Python-based框架,但RobotFramework的语法和概念与我经验相似。我有快速学习新工具的能力,相信通过短期学习能熟练使用RobotFramework进行接口自动化,胜任相关工作。
# 20. 对加班怎么看
答题思路:
表现积极态度,强调工作责任和效率,同时关注工作生活平衡。
话术:
我理解在项目关键时刻加班是必要的,我会以工作为重,确保任务完成。同时,我注重提高工作效率,避免不必要的加班。我相信通过合理规划和团队协作,可以最小化加班情况。如果有需要,我愿意配合团队安排。
# 21. 多久能上班
答题思路:
根据实际情况回答,通常2-4周,表现灵活性。
话术:
如果我收到offer,我需要大约2周时间完成当前工作交接,最快可以在2周内到岗。如果有紧急需要,我可以尽量协调提前。
# 22. 有什么要问我的?
答题思路:
提问关于团队、项目、技术挑战或发展机会,展现兴趣和思考。
话术:
我有几个问题:
- 团队目前的测试自动化覆盖率是多少?未来有哪些改进计划?
- 这个角色面临的最大技术挑战是什么?
- 公司对测试职业发展有哪些培训或晋升机制?
谢谢!