
大多数测试新人被问到脚本维护时,首选反应是“我写过脚本,能改”。但面试官真正想听的不是你会改,而是你如何让脚本不需要频繁改。
看一组数据:一个自动化项目在发布后,维护成本占总成本的60%~80%。写一条新脚本可能只要1小时,但维护它可能要花4小时。更残酷的是:团队里80%的加班不是因为需求多,而是因为脚本烂。
一个典型的反面案例:某测试团队用Python写UI自动化,半年后脚本总数300条,每天跑失败50条,原因都是定位器过期、等待超时、数据冲突。三个测试员专职修脚本,新功能测试反而延期。
面试官见过太多“会写脚本但不会维护”的候选人。他们最怕招进来一个人,三个月后留下的是一堆“只有自己能看懂”的代码。脚本维护能力代表了你对项目长期负责的态度,而不是只管当前一轮跑通。
写脚本是本能,维护脚本是本事。
所以,面试时如果你只说“我熟悉Selenium/Appium”,顶多及格。但如果你能说出”我如何通过封装、日志、版本控制让脚本存活率提升到95%”,直接拉开差距。
面试官评判脚本好坏,不看技术多炫,看三个维度。记住这组数据:可读性提升30%的脚本,排查时间缩短50%。
面试官会问:“你给脚本加注释吗?” 他真正想问的是“你的代码让别人接手时需不需要找你本人”。
实践要点:
click_login_button() 优于 clk_btn1()expected_order_total 而不是 a# 等待订单状态变为已完成,防止异步加载未结束面试官问:“假如被测系统新增一个页面,你的脚本改动多大?”
回答框架:
面试官喜欢听到你“消除重复”的具体案例。例如:
assert_element_present(by, locator, timeout),避免每个脚本重复写try-except重复代码每多一行,维护成本就翻一倍。
光说理论面试官不信,拿出你真实改造过的案例。下面是一个典型面试中能说的经历——把失败率从40%降到5%。
find_element_by_name、find_element_by_xpath、find_element_by_css_selector 混用time.sleep(3),环境一慢就报错driver.find_element_by_id("order123") 订单ID写死,每次回归前都要手动改首选步:封装统一驱动管理
效果:脚本行数减少30%,浏览器崩溃时自动截图到报告
第二步:显式等待替代sleep
效果:脚本跑一遍时间从40分钟降到22分钟,失败数从40条降到5条
第三步:数据外部化
效果:新增一组测试数据只需3分钟,以前需要2小时改脚本
“我接手时脚本漏掉率40%,我通过三步改革:统一驱动管理、显式等待、数据外部化,三个月后失败率稳定在5%以下,团队其他成员也能独立维护。具体做法是……”
维护不是补漏,而是构建防漏体系。
面试官常挖三个陷阱,答错直接减分。
错误回答:“可以,95%的用例自动跑。”
正确拆解:“自动化覆盖率85%,剩余15%是异常场景(如网络中断、数据回滚),这些我手动验证,并写日志辅助排查。自动化不是取代手工,而是把重复工作给机器,把复杂判断留给人。”
错误回答:“重新跑一次。”
正确拆解:“首先分析失败原因——是环境部署失败、数据污染还是网络问题?我会做三件事:
1. 脚本中加入重试机制(最多3次)
2. 失败时截图+保存HTML快照,归档到测试报告
3. 编写《环境检查清单》交给运维,减少环境问题重复发生”
错误回答:“尽量少用xpath,多用id。”
正确拆解:
contains组合面试不是在考答案,而是在考你的“系统思维”。
很多人在面试中讲得漂亮,但实际入职后犯低级错误。这些坑在面试时也要主动规避,表明你已经吃过教训。
密码硬编码、token写死在代码里——安全扫描直接报警。面试官会问:“你怎么管理密钥?” 回答“环境变量+加密配置文件”加分。
“稳定跑通的脚本”不等于“有价值的脚本”。面试官要听到你设计过失败场景:输入非法数据、网络超时、弹窗异常等。
很多脚本跑失败后只知道“用例失败”,不知道原因。每个操作都要记录日志,包括时间、操作名称、结果、耗时。 面试时举一个真实案例:“有一次失败不知道原因,我加了详细日志后才发现是第三方支付接口返回了500,不是脚本问题。”
个人主义是维护的大敌。主动要求同事review你的脚本,使用Git分支管理,每次合并前必须通过评审。 面试时可以说:“我推动团队建立了脚本评审制度,代码质量提升30%。”
---
维护脚本的最高境界,是让后来的测试工程师感叹:这代码真清楚,我可以直接上手。 面试官要的就是这个效果。
别再只说“我会写自动化脚本”了。下次面试,直接掏出你维护过的脚本——失败率、整合用时、团队协作数据,一亮出来,offer向你招手。