一、TestNG 相关标准答案
- TestNG 常用注解有哪些?
@BeforeSuite/@AfterSuite、@BeforeTest/@AfterTest、@BeforeClass/@AfterClass、@BeforeMethod/@AfterMethod、@Test、@DataProvider、@Parameters、@Listeners。用于分层初始化、数据驱动、用例分组、依赖执行、失败重试等。 - TestNG 和 JUnit 区别?
- TestNG 支持依赖测试、分组执行、并发执行、失败重试、更灵活的生命周期。
- 支持通过
xml统一管理套件,更适合自动化项目规模化使用。 - JUnit 更轻量,偏单元测试;TestNG 更适合自动化测试框架。
- 数据驱动 @DataProvider 怎么用?
- 定义一个返回
Object[][]的方法,加上@DataProvider(name="xxx")。 - 测试方法用
@Test(dataProvider = "xxx")关联。 - 可以对接 Excel、CSV、数据库,实现外部数据驱动。
- TestNG 失败用例自动重试怎么实现?
- 实现
IRetryAnalyzer接口,重写retry方法。 - 自定义
Listener或在@Test中指定retryAnalyzer。 - 达到失败自动重跑、减少偶发失败误报。
- TestNG 报告优化怎么做?
- 默认报告太简单,一般集成 Allure 或 ExtentReport。
- 通过监听器拦截用例结果,添加步骤、截图、日志,生成可视化报告。
二、Java + 测开基础标准答案
- 接口自动化如何封装?
- 封装统一 HTTP 工具类(RestAssured/OkHttp)。
- 全局处理请求头、Token、超时、日志、加解密。
- 封装通用断言、返回体校验、异常捕获。
- 用 POJO 接收响应,方便字段断言。
- Java 反射 / 注解在测开中的用途?
- 反射:动态执行用例、读取类信息、初始化对象、调用方法。
- 注解:自定义用例标记(用例等级、业务模块),配合监听器实现扩展功能。
- 自动化用例不稳定怎么处理?
- 增加显式等待,避免强制等待。
- 用例之间数据隔离、环境隔离。
- 加入失败重试机制。
- 日志、截图、录屏全量留存,便于定位偶发问题。
- 如何做接口依赖(登录→下单→支付)?
- 使用
dependsOnMethods控制执行顺序。 - 提取公共前置方法(
@BeforeMethod/@BeforeClass)。 - 用 ThreadLocal 保存上下文,避免用例间相互污染。
- 如何实现分布式 / 多线程执行?
- TestNG 支持
parallel属性实现多线程。 - 结合 Jenkins + 多节点分布式执行。
- 用例无依赖、无共享数据,才能安全并发。
- Java+testNg框架是怎么管理的
- 我们的 Java+TestNG 框架是基于 Maven 构建的,采用分层封装结构,通过 TestNG.xml 管理测试套件和用例执行,使用注解控制用例生命周期,结合数据驱动、监听器实现失败重试和 Allure 报告,最后通过 Jenkins 做持续集成,整体做到配置分离、易于维护和扩展。
- 按包结构分层:
- constant:常量、枚举
- util:工具类(HTTP、Excel、加密、日志)
- pojo:实体类,接口返回对象映射
- testcase:测试用例类
- listener:自定义监听器
- config:全局配置文件
- 用例管理
- 通过 TestNG.xml 管理测试套件、分组、线程数、执行顺序。
- 用
@Test标记用例,支持分组groups、依赖dependsOnMethods、优先级priority。 - 用
@DataProvider做数据驱动,支持 Excel、YAML、数据库数据源。
- 生命周期与前置后置管理
- 使用
@BeforeSuite做全局初始化(加载配置、登录获取 token)。 @BeforeClass/@BeforeMethod做类级别、方法级别的准备。@AfterMethod做用例后置处理、日志收尾。
- 使用
三、实战场景题标准答案
- 偶发缺陷怎么处理?
- 第一时间保留现场日志、抓包、截图、操作步骤。
- 标记复现概率、环境信息,提交规范缺陷。
- 长时间遍历、边界场景、多设备 / 网络复现。
- 配合开发抓堆栈、看监控,定位根因。
- 修复后重点回归,多次验证,闭环。
- 你们自动化体系是什么样的?
- Java + TestNG + RestAssured 做接口自动化。
- PageObject 模式做 UI 自动化。
- Jenkins 定时构建、自动执行、发送报告。
- 用例统一管理,接入 Allure 展示结果。
- 自动化如何落地产生价值?
- 替代大量回归手工测试,缩短发布周期。
- 每日回归快速发现问题,降低线上故障。
- 统一测试流程,提升团队效率和产品质量。
- 一万条用例如何管理?
- 按模块分组,按优先级标记。
- 核心用例每次必跑,非核心用例定时执行。
- 分布式执行 + 多线程,提升执行速度。
- 沉淀用例库,持续维护,淘汰失效用例。
四、自我介绍可直接用的结尾(加分)
我主要负责测试平台与自动化框架开发,基于 Java + TestNG 搭建过接口自动化体系,实现用例管理、自动执行、失败重试、可视化报告与 Jenkins 持续集成,能够有效提升回归效率,保障版本质量。