03 编程语言
2026/8/25...大约 5 分钟
03 编程语言
选一门主语言写自动化和工具,再补一门辅助语言扩大适配面。测开绕不开编程。
为什么重要
自动化框架、测试工具、质量平台、问题定位脚本,测开的所有产出物都是代码。「会调工具」和「会写代码」之间的差距,就是 L1 和 L2 的差距(参见第 01 章的能力分层)。
语言选择不必纠结太久。Java 和 Python 都能做测开,只是侧重点不一样:
| 语言 | 更适合的场景 | 建议重点补 |
|---|---|---|
| Java | 已有 Java 基础、目标公司技术栈偏 Java、想做测试平台或后端质量工具 | JUnit、TestNG、Rest Assured、Spring Boot |
| Python | 想快速写脚本、接口自动化、数据处理、日志分析、AI 工具链调用 | pytest、requests、Playwright、Locust |
| Java + Python | 想覆盖更广的岗位和项目 | Java 做平台和工程底座,Python 做自动化脚本和 AI 辅助工具 |
两个常见决策:
- 如果你本来就是 Java 后端,不要为了测开把 Java 扔掉重新学 Python。Java 的 Spring Boot、MySQL、Redis、接口设计、单元测试、日志排查经验都能迁移到测开,简历里也更好讲。Python 后面当第二语言补,一两周就能上手写脚本。
- 如果你没有明显语言基础,短期准备测开可以先学 Python。它写接口自动化、数据处理、批量脚本和 AI API 调用更轻,学习曲线更平缓。
知识清单
语言核心【必须掌握】
以 Python 为例(Java 对应类推):
- 基本语法:变量、条件、循环、函数、异常处理。
- 面向对象:类、继承、组合、魔术方法的用途(能设计简单的封装即可,不用抠元类这类深水区)。
- 常用集合:list、dict、set、tuple 的选型和常用操作。
- 文件读写:文本、JSON、CSV、YAML(配置文件的常态)。
- 模块与包管理:pip / venv(Java 对应 Maven / Gradle),requirements 锁定依赖。
- 网络请求:requests 库的 get / post、Header、超时、会话保持。
- 多线程 / 多进程 / 协程:概念和适用场景(并行跑用例时会用到)。
测试框架【必须掌握】
- Python:pytest(fixture、参数化、mark 标签、conftest、插件生态)、unittest(看得懂存量项目即可)、Mock(mock / pytest-mock)。
- Java:JUnit 5、Mockito、AssertJ。
工程习惯【必须掌握】
这是「脚本人」和「工程师」的分界线:
- 会写单元测试,理解测试自己的测试代码(自动化脚本本身也是代码,也会有 bug)。
- 配置与代码分离:环境地址、账号、开关不硬编码。
- 日志意识:关键步骤打日志,出问题时能还原执行过程。
- 代码规范与版本管理:lint(ruff / checkstyle)、有意义的提交信息。
能读懂和写小型服务【了解即可】
- Python:Flask 或 FastAPI 写一个增删改查小服务。
- Java:Spring Boot 起一个 REST 服务。
- 目的不是做开发,是给自己造一个被测系统:练接口测试、造数据、mock 第三方。
学习建议与常见误区
- 目标导向学语言,不要按教材从头啃到尾。 学完基本语法就直接开始写「调接口的脚本」,缺什么补什么。语言是在写自动化脚本的过程中真正学会的。
- 推荐练手主线:用 requests 写一个「登录 → 查列表 → 创建 → 查详情 → 删除」的脚本,再用 pytest 重构成用例(fixture 管登录态、参数化管数据)。这一条线走完,语言核心 + 测试框架就都覆盖了。
- 误区一:语言洁癖式学习。 花三个月研究语言细节(装饰器原理、JVM 调优),一条自动化脚本都没写过。测开面试考的是「用语言解决测试问题」。
- 误区二:同时开两门语言。 主语言没到能写项目的程度之前,不要分心学第二门。先深后广。
- 误区三:跳过异常处理和日志。 脚本能跑通就交差,一出问题只能靠 print 复盘。框架级的脚本,异常处理和日志从第一天就要有。
自查清单
- 不查资料,用主语言写出一个函数:请求指定 URL,返回状态码和响应 JSON 中指定字段的值,带超时和异常处理。
- pytest 的 fixture 是干什么的?setup/teardown 场景你会怎么用?
- 参数化数据放在哪里?文件里、代码里还是命令行传入?各自的适用场景?
- Mock 是什么?什么情况下接口自动化需要 mock 第三方依赖?
- 你的脚本失败了,怎么在不重新执行的情况下知道失败发生在哪一步、请求是什么、响应是什么?(答案应该是:日志)
- 用 Flask / FastAPI / Spring Boot 起一个有两个接口的小服务,能用它练接口测试。
推荐资源
- pytest 官方文档:fixture 和参数化两章值得精读,中文翻译版可搜「pytest 中文文档」。
- Requests 快速上手:接口自动化第一课。
- FastAPI 官方教程:中文友好,几小时就能起一个练手服务。
- 《Effective Python》《Effective Java》:主语言进阶后的习惯养成,选读。
- 廖雪峰 Python 教程:零基础入门的免费选择。
- AI 测试开发导航 · 教程专栏:编程语言与测试框架实战教程,与本章配套。