ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

自动化本科生必做小项目:接口测试与Jenkins流水线实战

自动化本科生必做小项目:接口测试与Jenkins流水线实战 先别急着去找现成的教程或者收藏一堆“适合大学生的项目清单”我作为一个从自动化专业毕业、后来一直干自动化测试和运维相关工作的老学长想先和你聊点实在的自动化本科生最该动手做的小项目其实不是那些网上满天飞的“智能小车”“温度控制系统”而是那些能让你把“自动化”三个字真正吃透的东西。这篇文章我想围绕“自动化本科生值得自己动手的小项目”这个主题把我这些年见过、踩过、也带人做过的一些项目方向拆开讲。核心思路很简单项目要小但链路要完整技术不必最新但逻辑必须跑通。最合适的人群是自动化、计算机、电子信息相关专业的在校生尤其是大二大三准备找实习、或者大四准备秋招的同学。看完你会知道选哪些方向、每个方向怎么做、会遇到什么坑以及怎么把一个小项目变成简历上拿得出手的东西。1. 先想清楚自动化本科生做小项目到底在练什么1.1 别把“小项目”做小了选项目的三个硬标准我在学校的时候就发现一个现象身边的同学一提到做项目第一反应就是“买一块开发板跟着视频做一个东西”。不能说这样没意义但对自动化专业的学生来说如果只停留在点亮一个LED、驱动一个电机那和电子爱好者没什么区别完全体现不出“自动化”这个专业的核心能力。自动化专业的核心是什么是控制、是反馈、是系统集成说白了就是让一个系统自动地、稳定地完成某件事。所以选小项目的第一个标准就是项目必须包含“自动执行状态反馈异常处理”这一整条链路。比如你写一个脚本自动登录网站看起来简单但它里面暗含了“登录成功没有”“页面加载失败怎么办”这些反馈和容错逻辑这就比单纯写个循环有意义得多。第二个标准是必须能跑出一个可观察的结果。很多同学做了项目说不清楚“跑成功了”是什么状态。我建议项目要有明确的输出标志一份测试报告、一个定时任务日志、一个自动生成的文件或者一个可视化界面。有结果你才知道系统有没有真的“自动”起来别人也能一眼看懂你做了什么。第三个标准是最好能打通多个环节。自动化是一个“集成型”能力你如果能把“写代码触发控制 数据处理 结果通知”串起来比单独精通某一个小工具要值钱太多。HR和面试官看的是你有没有闭环思维而不是你会不会某个函数。1.2 哪些方向值得优先碰结合当前行业和招聘热度我建议自动化本科生优先考虑下面几个方向它们都能对应到实际岗位需求又能用小项目自行验证。第一个是自动化测试方向。这个方向投入产出比极高不需要硬件设备一台普通电脑就能做。你熟悉Selenium也好用Playwright也罢核心是学会“用程序代替人去做重复验证”。它和自动化专业的关系也很大因为做测试的本质就是“给系统加一个反馈环节”和自动控制里的闭环思想一脉相承。第二个是自动化部署与运维方向。也就是把“打包、部署、测试、通知”这一套流程自动化。很多同学觉得这是计算机专业的事实际上自动化专业做这个有天然优势你比计算机专业更懂流程和系统。只要把Jenkins、Git、Shell这些工具链走一遍就能做出一个非常亮眼的“持续集成小项目”。第三个是接口自动化与数据自动化处理方向。这是一个偏软件开发与测试结合的方向。你不需要做特别酷炫的界面只需要学会用Python把一批接口按顺序调用、校验结果、生成报告这套能力在工作里比很多“花架子”更实用。还有一个容易被忽视的方向是手机和桌面自动化。现在大家都在讲移动端自动化测试Appium、AutoFlow这类工具能让你直接用程序去控制安卓手机上的App。对自动化专业学生来说这个方向能直观感受到“程序控制硬件”的乐趣又能快速出成果。我个人的建议是不要贪多抓住一到两个方向把项目做深把文档写清楚就已经超过大多数同龄人了。2. 方向一自动化测试最容易上手也最容易踩坑2.1 Web UI自动化Selenium还是Playwright如果2026年还有人让我推荐Web自动化我会毫不犹豫地说优先考虑Playwright但Selenium必须会看。为什么这么说Selenium是目前生态最老、资料最多的框架企业里存量项目几乎都离不开它。你出去实习或者工作大概率会遇到一个用Selenium写的老项目所以你不能不会。但Selenium的缺陷也很明显WebDriver和浏览器版本要严格匹配不同浏览器驱动还得分别下载这对新手来说非常劝退。Playwright是后起之秀它的优势是安装简单一条命令就能把浏览器内核一起搞定不再有“驱动版本不匹配”的噩梦。代码书写也更现代化自动等待机制做得很好定位不到元素的问题比Selenium少很多。所以我的建议是先用Playwright把项目跑通理解自动化测试的整个流程再花半天看Selenium的语法知道两者在定位、点击、输入上的对应关系。这样你既能用新工具做出漂亮的作品又不会在面试聊到Selenium时哑口无言。这里说一个非常基础但经常被忽略的知识点无论是Selenium还是Playwright本质都在做三件事——定位页面元素、模拟用户操作、断言页面状态。和自动控制里的“检测—执行—反馈”完全是一个套路。学的时候带着这个思路你会觉得轻松很多。2.2 接口自动化pytest搭一个能跑的框架如果你不想和浏览器纠缠接口自动化是另一个特别好的起点。接口自动化的意思是不通过界面直接向服务器的接口发HTTP请求然后校验返回的数据对不对。为什么推荐这个因为现在前后端分离的架构越来越多测试的重点逐渐从“点页面”转向“调接口”。而且接口自动化的技术栈非常简单一个Python加上requests库、pytest框架就可以搭出一个有模有样的项目。我建议的练手方式是做一个“自动查询天气/快递/汇率”之类的接口测试脚本。这类公共服务接口通常免费文档清楚还不用真金白银买服务器。你可以通过pytest来管理测试用例用requests发送请求用断言来判断接口返回码和关键字段再用allure或者pytest-html生成一份漂亮的测试报告。在这个过程里你会接触到几个特别重要的概念fixture测试夹具、参数化、断言、测试报告、日志收集。别嫌这些词高大上中文翻译就是一个嵌套的“准备数据—发送请求—比对结果”流程。你把这些东西用熟后面看任何接口自动化框架都会觉得很亲切。2.3 移动端和桌面端Appium、AutoFlow、PyAutoGUI移动端自动化听着很酷但坑也比Web端多得多。安卓手机要先开USB调试要装对应版本的ADB驱动Appium还要配置Desired Capabilities很多同学光这一步就折腾一下午。但是别怕折腾一次之后你对安卓系统、对设备通信的理解会暴涨。如果你是安卓设备的自动化可以关注一下AutoFlow。这是一个不需要独立官网的安卓自动化工具通常在酷安等社区能找到下载链接直接在平板浏览器里下载安装即可。它最大的特色是可以直接在设备上配置自动化流程不需要写太多代码适合用来理解“自动点击—条件判断—循环执行”的逻辑。不过要注意这种工具通常依赖无障碍服务使用时要留意权限设置不同安卓版本表现会有差异。如果你需要更专业、更可控的方案还是推荐Appium。它支持Android和iOS底层原理是通过WebDriver协议来驱动手机。你可以在电脑上写Python代码控制手机上的App进行自动化测试。它的缺点是环境配置复杂但你一旦配通了成就感很高面试时也很有谈资。桌面端另说如果你的目标是办公自动化那么PyAutoGUI非常推荐。它可以模拟鼠标和键盘操作比如自动打开某个软件、填表、点击按钮、截图。这个工具特别适合用来做“没有接口的老旧系统自动化”很多公司的ERP、OA系统都有这种需求。你可以拿它做一个“自动整理Excel报表并发送邮件的脚本”既有数据操作又有任务调度非常全面的一个小项目。3. 方向二自动化部署与运维把“发布”这件事跑通3.1 用Jenkins做一个最简单的自动化流水线很多自动化专业的同学对这个方向有误解觉得“运维”是计算机专业的事。但你去看看招聘要求很多自动化工程师岗位都写着“熟悉Jenkins了解持续集成”。因为自动化专业培养的是“让系统自动运行”的能力而Jenkins正是让软件从代码提交到发布全自动流转的工具。练手项目可以这样设计本地写一个Python项目推到Git仓库比如Gitee或GitHub然后配置Jenkins让它监听代码更新。一旦代码有新的提交Jenkins自动拉取代码、安装依赖、跑测试脚本、生成报告甚至把结果通过邮件或企业微信机器人通知给你。整个流程跑通后你对“自动化流水线”的理解会到达一个新层次。原来所谓DevOps就是把“人盯着操作”变成“系统盯着事件”这本质上就是反馈控制系统。配置Jenkins有一个容易劝退的点下载插件慢、环境变量找不到、Python路径对不上。我的建议是不要在一开始就追求完美先用本机Jenkins把最简单的任务跑起来然后再慢慢加步骤。最开始只要能在代码更新后自动执行一个python test.py就算成功了一大半。3.2 自动化调度系统设计不能只会点按钮Jenkins做的是软件发布的自动化但自动化专业里还有一类更底层的问题就是任务调度。你写了一大堆自动化脚本什么时候跑谁先跑失败了重不重试这就是调度系统要考虑的事。在小项目里调度可以先用Python的schedule库或者APScheduler来做。APScheduler是一个非常经典的Python调度库支持按固定间隔、定时、指定日期等多种方式触发任务。你可以用它做一个“每天定时抓取新闻/天气整理成报告然后发送邮件”的小系统。别小看这个项目它里面包含了一个调度系统最核心的天花板问题任务优先级、失败重试、分布式扩展。你一开始只需要在单机上跑起来但如果在文档里写下“如果任务量增大可以引入消息队列或分布式调度框架”面试官会觉得你不仅有动手能力还有系统扩展的思维能力。还有一点很关键会点按钮配置调度不算本事能把调度逻辑写清楚、把日志留完整才是本事。做完这个项目你可以试着回答一个问题如果某个自动化任务在凌晨三点失败你怎么第一时间知道这个问题能引导你思考监控、告警、日志这些运维中的真问题。4. 实操记录我搭一个“接口自动化Jenkins定时执行”的小项目4.1 项目需求与整体架构上面讲了不少方向但你可能还是觉得有点虚。这一节我用一个实实在在的练手项目帮你把前面说的东西串起来。项目叫“接口自动化巡检小工具”核心需求非常简单每天定时对几个公共API发送请求校验接口是否正常如果异常就发邮件告警。这个项目我选它作为例子是因为它同时涉及了接口自动化、调度系统、报告生成、告警通知四件事但每一件事都不复杂非常适合理清“自动化”的完整链路。整体架构分四层数据层用YAML或JSON保存接口地址和预期结果、执行层Python脚本读取数据并发送HTTP请求、报告层生成HTML测试报告、调度告警层用APScheduler定时执行失败时通过smtplib发送邮件。工具选型我特意挑了最基础的东西Python3 requests pytest APScheduler Jenkins。你不用一次全上可以先在本地把脚本跑通再考虑加Jenkins。4.2 核心代码实现与参数设计接口就用最常见的公共接口举例比如查询IP地址归属地。先写一个最简单的requests请求。import requests def check_ip_info(ip: str, expected_status: int 200): url https://ipapi.co/{}/json/.format(ip) resp requests.get(url, timeout10) assert resp.status_code expected_status, 接口状态码异常: {}.format(resp.status_code) data resp.json() print(IP归属地:, data.get(city), data.get(country_name)) return data这段代码看起来没什么技术含量但它已经是接口自动化的最小单元了发送请求、检查状态、提取关键信息。如果你要把它做得更规范就用pytest来管理。import pytest import requests test_cases [ {ip: 8.8.8.8, expected_city: None}, {ip: 1.1.1.1, expected_city: None}, ] pytest.mark.parametrize(case, test_cases) def test_ip_info(case): url https://ipapi.co/{}/json/.format(case[ip]) resp requests.get(url, timeout10) assert resp.status_code 200 assert city in resp.json()接着加上调度逻辑让这个测试每天凌晨跑一次。这里用APScheduler。from apscheduler.schedulers.blocking import BlockingScheduler import subprocess def run_test(): result subprocess.run([pytest, -q, --htmlreport.html], capture_outputTrue, textTrue) if result.returncode ! 0: send_alert_email(result.stdout) scheduler BlockingScheduler() scheduler.add_job(run_test, cron, hour2, minute0) scheduler.start()这里有一个细节值得注意定时任务里执行pytest我用的是subprocess而不是直接调用pytest.main()。为什么因为subprocess方式隔离主进程即使测试崩溃也不会带崩调度进程。这个小细节能体现你做工程的周全性。发送邮件的函数你可以用smtplib写比较简单这里不再展开。做完这些你已经有了一台“会自己跑测试、失败会叫”的巡检系统。4.3 Jenkins定时配置细节如果你还想更进一步可以把上述脚本托管到Git仓库然后用Jenkins来做定时构建。很多人第一次用Jenkins卡在“找不到pytest命令”这个问题上。原因是Jenkins服务进程使用的用户环境变量和你终端登录用户不一致导致它找不到Python或pytest的路径。解决办法有两种第一种是在Jenkins的“系统管理—系统配置—全局属性”里勾选“环境变量”把PATH值改成包含Python和pytest的路径第二种是在执行Shell时显式使用Python绝对路径比如/usr/bin/python3 -m pytest。配置定时任务时Jenkins的cron表达式比Linux的cron多了一个参数比如H 2 * * *表示每天凌晨两点左右执行。这里的H是哈希值分散避免同一时刻负载过重。你刚开始可以直接写0 2 * * *固定凌晨两点跑更简单直白。跑通一次构建之后记得去“构建历史”里看控制台输出。控制台日志是你排查自动化任务最重要的朋友任何一次失败都会在日志里留下原因。经常看日志的人调试能力绝对差不了。5. 常见问题与排查技巧实录5.1 Web自动化最容易踩的坑第一个坑是元素定位不到。这类问题十个有八个是页面还没加载完脚本就去点按钮了。解决办法是显式等待WebDriverWait而不是固定sleep。我见过太多人一上来就time.sleep(5)这是典型的“能跑但不稳”因为网络快慢不同固定等待要么等久了浪费时间要么等不够照样失败。第二个坑是浏览器驱动版本和浏览器版本不匹配。如果你用Selenium驱动版本必须和浏览器主版本一致这个非常烦。Playwright没这个问题所以我才建议新手优先用Playwright。第三个坑是不要在网页拼图验证码上死磕。很多同学练Web自动化时会遇到拼图验证码然后花好几天研究怎么模拟滑条轨迹。从学习和项目展示角度这样做收益不高真要做你应该绕过去比如找测试环境关掉验证码的开关或者用第三方打码平台。项目重点放在流程自动化上而不是对抗验证码。5.2 接口自动化常见的坑接口自动化最烦的问题是“前面接口返回的数据后面接口要用”比如登录Token。很多人的第一版代码会把Token写死在脚本里一过期就全挂。正确做法是用fixture或者session对象维护登录状态让登录的返回值动态传给下一个请求。还有一个坑是断言不完整。很多人只断言状态码200觉得接口通了就没问题。实际上接口返回200但业务字段可能是错的。所以断言一定要覆盖关键业务字段比如用户ID、订单状态、返回码。你判断一个接口是否正常要像自动控制系统检查被控量一样多维度反馈而不是只看系统有没有“启动”。5.3 环境与工具链常见的坑如果你在同一台电脑上既写爬虫又做自动化测试会经常遇到依赖冲突。这时候强烈建议用虚拟环境比如Python的venv或者conda。花十分钟配好虚拟环境能帮你省下几十个重新安装依赖的下午。安卓自动化还有一个高发坑手机连到电脑后ADB显示设备状态是unauthorized。这个问题几乎都是因为你没有在手机上点击“允许USB调试”的授权弹窗。有些机型需要在开发者选项里先关闭“监控ADB安装应用”或者反复插拔几次仔细看手机屏幕的弹窗提示。还有的话使用无线调试会更方便但需要安卓11以上系统。6. 把一个练手项目变成简历项目6.1 展示什么别堆砌技术名词很多同学做完项目简历上写“熟悉Selenium、Appium、Jenkins、Python”这样写非常吃亏因为这是“会用工具”而不是“做完项目”。面试官想看的是你怎么解决问题怎么设计流程。我建议简历上项目描述采用「项目背景我做了什么结果是什么」的结构。比如“为了减少人工回归测试的时间我使用Playwright搭建了一个Web自动化测试脚本覆盖登录、查询、导出等核心流程并将脚本集成到Jenkins中定时执行每次执行后自动生成Allure报告。项目上线后单次回归测试时间由30分钟缩短到了5分钟。”如果你没有真实数据可以写“单次执行耗时下降了80%”这种你在本地实测得到的数字。只要不是乱编这种量化的表述比形容词有说服力得多。还有一个加分项是文档。项目里附带一个简洁的README说明项目结构、环境依赖、怎么运行这会让你在一堆只丢代码的人里非常显眼。自动化讲究可重复、可交接一个文档不清晰的项目等同于一个不稳定的控制系统。6.2 后续还能怎么扩展如果你到了大三大四发现这些基础项目已经不太能刺激到你了可以尝试往AI自动化测试平台方向扩展。比如在网上搜索一下“AI自动化测试平台搭建”很多开源项目已经支持用自然语言生成测试脚本或者用大模型来自动识别页面元素并生成测试代码。你可以自己尝试接入一个开源大模型做一个“你说需求它生成Selenium脚本”的小工具。还有“Agent”这个概念现在很火你完全可以做一个“自动化测试Agent”让大模型充当你的大脑把繁琐的测试步骤拆解成工具调用。你不用真的做出一个商用级平台只要能在一个很小的场景里跑通“用户自然语言输入—Agent规划任务—调用自动化工具执行—返回结果”的链路就已经是非常前沿的毕业设计或简历项目了。我个人认为自动化专业的优势从来不是某一个具体工具而是你把现实世界的流程抽象成可执行脚本、把脚本组合成闭环系统的能力。从控制论的角度看任何一个自动化工具的祖师爷都是反馈控制从就业角度看懂这个思维的本科生不管去做软件测试、运维开发还是工控系统都比只会调包、只会接线的人走得远得多。最后分享一个我自己的习惯做完小项目后我会把失败记录单独整理成一个文档比如“滑条验证码不要碰”“Jenkins的定时任务要写全路径”“安卓设备授权弹窗要点掉”。这些经验在学校里不值钱但工作后非常值钱。自动化这行最怕的不是不会做而是踩过坑却不复盘、不记录。你把这个习惯养好一个小项目带来的成长速度不亚于一学期书本知识。
返回列表