一、编写测试用例
场景示例:
“请为电商平台的‘用户登录’功能设计测试用例。”
应对步骤:
- 需求理解:确认登录方式(手机号+密码、短信验证码、第三方登录)、边界条件(密码错误次数限制)等。
- 用例设计:
- 功能测试:
- 正常登录(正确手机号+密码)。
- 异常登录(错误密码、空密码、未注册账号)。
- 短信验证码登录(验证码过期、错误验证码)。
- 兼容性测试:不同浏览器(Chrome、Safari)、移动端机型。
- 安全性测试:密码是否加密传输、暴力破解防护。
- 功能测试:
- 输出格式:
用例ID | 测试项 | 输入数据 | 预期结果 | 实际结果 | 优先级 TC001 | 正常登录 | 手机号:138XXXXXX, 密码:123456 | 跳转至首页 | Pass | P0 TC002 | 错误密码 | 手机号:138XXXXXX, 密码:654321 | 提示“密码错误” | Pass | P1
加分项:
- 结合等价类划分、边界值分析等方法。
- 提及使用禅道/XMind管理用例。
二、执行自动化测试脚本(Selenium+Python)
场景示例:
“请用Selenium编写一个自动化脚本,实现百度搜索‘软件测试’并验证结果。”
应对步骤:
- 环境准备:
- 安装Python、Selenium库、ChromeDriver。
- 基础框架搭建(Page Object模式)。
- 脚本编写:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() driver.get("https://www.baidu.com") # 输入搜索词 search_box = driver.find_element(By.ID, "kw") search_box.send_keys("软件测试") # 点击搜索按钮 search_button = driver.find_element(By.ID, "su") search_button.click() # 显式等待结果加载 WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.XPATH, "//div[@id='content_left']")) ) # 验证结果标题 assert "软件测试" in driver.title driver.quit()
- 调试与解释:
- 说明显式等待(避免元素未加载导致的失败)。
- 提及异常处理(如try-catch捕获NoSuchElementException)。
加分项:
- 提到使用Pytest框架管理用例或生成测试报告。
- 展示对Page Object模式的理解(“我在博客项目中用PO模式封装页面元素”)。
三、接口测试(Postman/Fiddler)
场景示例:
“使用Postman测试一个用户注册接口(URL: /api/register,方法: POST,参数: phone, password)。”
应对步骤:
- 正常场景测试:
- 请求参数:
{"phone": "13812345678", "password": "Test@123"}
。 - 预期结果:状态码200,返回
{"code": 0, "msg": "注册成功"}
。
- 请求参数:
- 异常场景测试:
- 空参数:
{"phone": "", "password": ""}
→ 状态码400,提示“参数缺失”。 - 密码强度不足:
{"phone": "13812345678", "password": "123"}
→ 状态码400,提示“密码需包含字母和数字”。
- 空参数:
- Fiddler抓包分析:
- 拦截请求,修改参数测试边界条件(如手机号长度超限)。
- 对比请求与响应数据,定位接口逻辑问题。
加分项:
- 使用Postman的Collection管理用例或设置环境变量。
- 提到通过Fiddler的AutoResponder功能模拟接口异常(如超时)。
四、性能测试(JMeter)
场景示例:
“使用JMeter模拟100用户并发访问某登录接口,持续5分钟,分析结果。”
应对步骤:
- 脚本配置:
- 线程组:100线程,循环次数“永远”,持续时间300秒。
- HTTP请求:填写接口URL、方法(POST)、参数(phone/password)。
- 监听器:添加“查看结果树”“聚合报告”“响应时间图”。
- 执行与监控:
- 关注TPS(每秒事务数)、平均响应时间、错误率。
- 通过“断言”验证响应数据(如检查返回code=0)。
- 瓶颈分析:
- 若错误率升高:检查服务器日志(如数据库连接池不足)。
- 若响应时间过长:优化SQL查询或增加缓存。
加分项:
- 提到分布式压测(多台机器协同)。
- 结合项目经验:“在ERP数据大屏测试中,通过JMeter定位到慢查询SQL,优化后响应时间降低50%”。
五、缺陷跟踪(禅道)
场景示例:
“在禅道中提交一个‘用户登录失败’的缺陷报告。”
应对步骤:
- 缺陷标题:简明扼要,如“用户登录-输入正确密码仍提示错误”。
- 复现步骤:
1. 打开登录页面; 2. 输入已注册手机号(138XXXXXX)和正确密码(Test@123); 3. 点击“登录”按钮; 4. 页面提示“密码错误”。
- 期望结果:正常跳转至首页。
- 附件补充:
- Fiddler抓包截图(请求参数与响应)。
- 日志片段(如后端报错“密码校验失败”)。
- 优先级与分类:标记为“严重”或“阻塞”。
加分项:
- 关联测试用例(如缺陷对应TC002)。
- 跟进缺陷状态,主动与开发沟通。
六、数据库验证(Navicat)
场景示例:
“验证用户注册后,数据库是否成功插入记录。”
应对步骤:
- SQL查询:
SELECT * FROM user_table WHERE phone = '13812345678';
- 验证字段:
- 检查手机号、加密后的密码、注册时间等字段是否符合预期。
- 事务一致性:
- 在ERP项目中,对比订单表与库存表的更新时间戳是否一致。
加分项:
- 使用JOIN语句验证多表关联数据。
- 提到通过Navicat的数据对比工具快速定位差异。
七、日志分析(Xshell)
场景示例:
“服务器响应超时,请通过日志定位问题。”
应对步骤:
- 连接服务器:
ssh username@server_ip -p port
- 查看日志:
tail -f /var/log/nginx/error.log # 实时跟踪Nginx错误日志 grep "Timeout" /var/log/app.log # 筛选超时关键字
- 分析原因:
- 数据库连接池耗尽:日志中出现“Connection pool is full”。
- 慢查询:MySQL日志中“Query took 5.2s”。
加分项:
- 使用
awk
/sed
快速提取关键信息。 - 结合监控工具(如Prometheus)分析系统资源(CPU、内存)。
实操通用技巧
- 时间分配:
- 优先完成核心功能测试(如登录、支付),再处理边界条件。
- 问题定位:
- 二分法:逐步缩小问题范围(前端→接口→数据库→服务器)。
- 沟通与反馈:
- 遇到卡点时,主动说明思路(如“我怀疑是缓存未更新,正在验证”)。
总结:面试实操重在展示逻辑清晰、工具熟练、结果导向。结合简历中的项目经验(如ERP、小程序测试),提前准备代码片段、测试用例模板等材料,面试时更能从容应对!
THE END