十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

AI自动化测试入门实战:7小时跑通UI与接口全流程

AI自动化测试入门实战:7小时跑通UI与接口全流程 先给结论AI自动化测试不是让 AI 完全取代测试工程师而是把“写脚本、维护脚本、分析失败原因、生成测试数据”这类重复劳动交给模型让人把时间花在场景设计和结果判断上。这篇文章适合刚接触自动化测试、想用 AI 提效、又不想走弯路的测试同学。很多人问7小时能不能入门我的看法是7小时足够让你跑通一条完整链路搭建环境、写一条UI自动化用例、用AI生成接口测试脚本、接入AI Agent做结果分析、处理常见的弹窗和超时问题。至于能从入门到熟练还是要靠后面持续写用例和踩坑。下面我按实际操作顺序来写尽量把我自己在本地环境里跑过的流程、看过的报错、调过的参数都讲清楚。你不需要一次性看完跟着章节走每一步跑通再进入下一步。1. 先搞清楚AI自动化测试解决什么问题1.1 传统自动化测试的痛点做自动化测试的同学应该都有体会写一条用例不难难的是维护。页面结构一变定位器就要改弹窗出现时机不稳定断言就开始随机失败接口返回字段调整脚本里的一大片解析代码就要跟着动。这些问题不是因为框架不好而是因为“人的维护成本”一直存在。传统自动化测试还有一个门槛上手成本。新手要理解页面对象模型、等待策略、数据驱动、断言方式还要会处理各种环境差异。如果只用过 Postman 调接口突然让他写一套 pytest Selenium 的框架确实需要一段时间。1.2 AI到底补了哪块能力AI 自动化测试真正有价值的地方是这三块代码生成根据测试场景描述直接生成测试脚本。比如“打开购物车页面判断商品价格总和是否正确”模型能生成对应的 Selenium 或 Playwright 代码。脚本维护页面元素变更后AI 可以根据新页面结构自动修正定位器。这一点在实际项目里非常实用。结果分析测试失败后AI 能自动从日志、截图、接口返回中判断是环境问题、数据问题还是产品 bug然后给出分类建议。注意这不等于 AI 能直接替你测试。它更像一个“高级测试助手”能把你的意图快速翻译成代码也能帮你快速定位问题但最终判断还是要人来做。1.3 合适的学习路径和预期如果你是完全没写过代码的测试同学建议路径是先学 Python 基础语法不用太深能看懂列表、字典、函数、类就够了。再学一个自动化测试框架比如 Selenium 或 pytest。然后了解接口测试比如 requests 库的基本用法。最后再引入 AI让 AI 帮你生成用例、分析失败信息、做框架代码的补全和优化。如果按这个顺序走7小时其实挺紧张但能走完前3步。如果只想体验 AI 写用例的感觉那第一晚就能看到效果。建议不要一上来就同时学 Selenium、Appium、Playwright、接口自动化、AI Agent。一次只跑通一个方向跑通之后再加难度。2. 工具选型和环境准备别一开始就纠结哪个最强2.1 当前主流工具怎么选现在接触到的自动化测试工具基本可以分成三类类型代表工具适用场景上手成本Web UI 自动化Selenium、PlaywrightPC 浏览器页面、后台管理系统、购物流程中移动端自动化Appium、AirtestAndroid、iOS App偏高接口自动化requests、pytest、Java RestAssured后端接口、微服务、数据校验低搜索里经常能看到 Selenium、Appium、Playwright、Airtest、pytest 这些词。选型时不用追求“最强”要看你的业务形态。如果公司做的是管理系统、官网、电商平台优先学 Selenium Python资料多招聘需求也常见。如果是 App 应用为主可以学 Appium但它对环境和版本要求比较敏感新手容易卡在环境启动上。如果只是纯后端项目直接学接口自动化测试框架搭建性价比最高一条接口用例的价值经常抵得上好几条UI用例。另外 Playwright 最近很火它对现代浏览器的支持更稳定自带等待机制用来做 Web 自动化体验比 Selenium 顺滑。但它不等于 Selenium不能混着理解。2.2 Python环境准备直接在 Windows 上安装 Python要注意勾选Add Python to PATH选项。这一步看起来简单但很多报错都因为没勾导致命令行敲python提示找不到命令。安装完之后建议先建一个虚拟环境避免多个项目依赖冲突python -m venv venvWindows 下激活venv\Scripts\activatemacOS 或 Linux 下激活source venv/bin/activate激活后命令行前面会出现(venv)标志说明当前处于虚拟环境中。接下来的依赖都装在这里面不会污染系统全局环境。然后安装自动化测试基础库pip install selenium pytest requests如果要用 Playwright再执行pip install playwright playwright installplaywright install会下载浏览器内核这个过程比较耗时而且需要网络稳定。如果安装失败可以先检查网络、磁盘空间和权限。2.3 浏览器驱动注意事项用 Selenium 时浏览器驱动是新手最容易踩的坑。Chrome 浏览器会自动更新但驱动版本跟不上就会报session not created或chromedriver相关错误。比较省事的方案是用webdriver-manager自动管理驱动pip install webdriver-manager然后写代码时自动指定驱动不需要手动下载from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service driver webdriver.Chrome(serviceService(ChromeDriverManager().install()))这样每次本地环境变化时驱动会自动匹配省掉很多排查时间。3. 用Selenium跑通第一个UI自动化用例3.1 先从最小用例开始不要一上来就设计一个复杂的测试框架。先写一条最简单的用例打开一个测试页面确认标题存在然后关闭浏览器。from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager driver webdriver.Chrome(serviceService(ChromeDriverManager().install())) driver.get(https://example.com) assert Example in driver.title print(driver.title) driver.quit()这条用例的作用是验证环境通不通。如果这个能跑通说明 Python、Selenium、浏览器驱动、网络访问都没问题。如果这里就报错先不要往下写。常见失败场景浏览器打开后立刻闪退可能是驱动版本不匹配。访问目标网址超时可能是网络或公司代理限制。页面标题不对可能是访问到了跳转页或登录页。3.2 定位元素和等待策略接下来需要操作页面上的按钮、输入框、文本等元素。Selenium 最基础的方式是用find_element结合 ID、name、CSS 选择器、XPath 定位。举个例子在搜索框输入关键词并点击搜索按钮from selenium.webdriver.common.by import By driver.get(https://www.baidu.com) search_box driver.find_element(By.ID, kw) search_box.send_keys(AI自动化测试) search_button driver.find_element(By.ID, su) search_button.click()为什么这里要强调等待策略因为页面加载是异步的元素不一定立即存在。新手常见的错误是直接用sleep(3)等固定时间。这种方法不稳定网络慢的时候还是会失败网络快的时候又白白浪费时间。更好的方式是使用显式等待from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait WebDriverWait(driver, 10) search_button wait.until( EC.element_to_be_clickable((By.ID, su)) ) search_button.click()显式等待的意思是在 10 秒内不断检查元素是否可点击超时才抛异常。这比固定 sleep 要稳定很多。可以把它封装成一个工具函数后续所有用例都复用。3.3 第一个AI辅助断言所谓“AI辅助断言”不是让 AI 在运行时做判断而是让 AI 帮你生成断言逻辑和分析断言结果。比如你希望验证“搜索结果页包含指定关键词”可以让 AI 先生成一个通用断言模型找所有标题元素提取文本再判断关键词是否出现。from selenium.webdriver.common.by import By results driver.find_elements(By.CSS_SELECTOR, h3) texts [item.text for item in results] assert any(AI自动化测试 in text for text in texts), 搜索结果中没有找到目标关键词实际项目中“该断言怎么写”也需要分析。这时候把需求描述给 AI它会给你一个基础版本你再根据页面 DOM 结构调整选择器。不要直接复制代码不验证因为 AI 不知道真实页面的结构。4. 让AI生成和维护测试用例4.1 用AI生成测试用例现在有很多方式可以让 AI 参与测试脚本编写使用支持 AI 的 IDE 插件比如 Cursor、Pycharm 里的 AI 插件在编辑器里直接输入自然语言需求生成测试脚本。使用大模型 API把页面 HTML 片段和测试需求发给模型让它返回测试代码。使用测试平台内置的 AI 功能比如 Playwright 的部分工具已经有 AI 辅助能力。最常用的思路是把需求描述得尽量具体包括页面路径、要操作的元素、期望结果、使用的框架和语言。比如使用 Python Selenium打开 https://example.com点击 Login 按钮等待邮箱输入框出现输入 testexample.com点击提交验证页面出现错误提示。AI 返回代码后不要直接跑。先人工检查以下几点定位器是否可能不唯一。点击前是否加了等待。失败时是否有截图或日志。是否做了浏览器关闭操作。AI 生成的代码最大的问题不是语法而是定位器不稳定和业务逻辑不完整。好的做法是把它生成的代码当成初稿自己再做一遍业务场景梳理。4.2 让AI修复定位器UI 自动化维护成本最高的是元素定位失败。以前的做法是人肉在 DevTools 里重新复制 XPath然后改代码。现在可以用 AI 做这件事从失败截图和页面源码中提取关键信息。把页面 HTML 片段发送给 AI。让 AI 给出新的定位方式并解释为什么原定位会失效。需要注意不要直接把整个大型页面的全部 HTML 发给模型否则不仅消耗 token模型也不一定抓得住重点。更合理的做法是提取元素附近的 HTML 片段比如父节点到相邻节点控制在几十行。这个流程跑通之后会明显感觉到脚本维护时间变短。但边界也要清楚如果页面结构改动极大或者元素被完全重构AI 也只能给出猜测最终要以真实页面为准。4.3 本地模型还是API模型很多同学会问是不是一定得用本地大模型跑自动化测试不一定。本地模型的优势是数据不出内网、隐私性好但对硬件有要求尤其是长上下文和代码生成场景。如果公司预算有限用商用大模型 API 也是常见方案关键是不要把所有内容都发给模型只发送必要的页面片段和错误日志。当前更稳的做法是分层日常写脚本用 IDE 的 AI 插件比如 Cursor。跑批量用例时不实时调大模型而是先收集失败信息事后统一做失败分析。如果确实要实时分析给 AI 接口设置合理的超时时间和重试机制避免单个用例失败拖垮整个任务队列。注意不要在生产环境的自动化任务里对每个失败用例同步调用一次大模型既慢又贵。先跑完批量任务再对失败结果做统一分析是更经济的做法。5. 接口自动化测试AI Agent能帮你自动生成用例5.1 接口自动化测试框架怎么搭接口自动化测试相对 UI 自动化来说稳定性更高上手速度也更快。比较常见的组合是 Python requests pytest。一个基础框架建议包含这四层请求封装层统一封装 GET、POST、PUT、DELETE 方法记录日志。测试用例层每条用例描述一个业务场景。数据管理层输入数据、预期结果、接口地址用配置文件或测试数据文件维护。报告层生成测试报告失败时保留请求和响应信息。示例目录结构可以这样设计api_test/ ├── config/ │ └── config.yaml ├── data/ │ └── test_login.json ├── utils/ │ ├── http_client.py │ └── log.py ├── testcases/ │ └── test_login.py └── reports/最小封装的请求模块可以这样写import requests class HttpClient: def __init__(self, base_url): self.base_url base_url self.session requests.Session() def get(self, path, **kwargs): url self.base_url path response self.session.get(url, **kwargs) return response def post(self, path, jsonNone, **kwargs): url self.base_url path response self.session.post(url, jsonjson, **kwargs) return response这条链路里最值得花时间的是日志和响应结构。很多失败案例定位慢就是因为只管断言没记录请求体和响应体。加上日志后失败时就能一眼看出哪一步出了问题。5.2 用AI生成接口测试用例让 AI 生成接口用例时需要给它足够的接口信息请求方法、URL、请求头、请求体、预期返回码、预期返回字段。一个典型输入是这样的接口POST /api/login 请求头Content-Type: application/json 请求体 { username: test, password: 123456 } 预期返回 code0data.token 非空message 为 success 请用 Python requests 生成 pytest 测试用例。AI 可以生成基础用例但容易忽略边界条件。真正有价值的用法是让 AI 生成多组测试数据比如空用户名空密码用户名不存在密码错误用户名格式非法请求体缺失字段把这些测试组合交给 AI让它生成数据驱动用例你能很快得到一个覆盖面还不错的测试集。5.3 接口测试中常见的问题接口自动化测试本身不难但有几个问题经常遇到环境切换问题本地、测试环境、预发布环境的地址不同不写成配置就会到处改代码。依赖数据问题很多接口依赖登录 token 或前置数据需要用 fixture 统一处理不能每条用例都重复登录。断言太薄只断言返回码 200并不代表接口正确。要结合响应体、数据库状态、回调消息等一起判断。重试和补偿问题接口偶发超时不能简单就报失败需要结合业务场景设计重试机制。AI 在接口测试里能辅助的部分更多在前两点生成配置模板、生成 fixture 基础框架。后面的业务判断还得靠对系统的理解。6. 移动端、Web端和组件级自动化怎么选6.1 Appium做移动端自动化如果你的目标是 App 自动化Appium 是绕不开的名字。但它在环境配置上比 Selenium 复杂不少要装 JDK、Android SDK、Appium 服务还要准备真机或模拟器。很多新手卡在第一天的环境搭建上。我的建议是如果只是学习先在浏览器上用 Selenium 或 Playwright 跑通 Web 自动化。如果业务确实需要 App 自动化再单独安排时间学 Appium。不要同时学 Web 和移动端否则会消耗大量时间在环境问题上。用 Appium 写脚本的结构和 Selenium 有相似之处都需要定位元素、设置等待、断言结果。只是会话启动方式和设备信息不同。6.2 Playwright是另一种思路Playwright 的优势主要有三点内置自动等待很多元素不稳定问题会被框架自动处理。支持多浏览器同一套脚本可以跑 Chromium、Firefox、WebKit。自带截图、录制、跟踪功能排查问题更直观。如果是从零开始学 Web UI 自动化我会更推荐先试试 Playwright。它比 Selenium 的语法更现代写起来也更顺。但 Selenium 仍然有大量存量项目很多公司的招聘要求也写的是 Selenium所以两个都值得了解。一个 Playwright 用例大概长这样from playwright.sync_api import sync_playwright with sync_playwright() as p: browser p.chromium.launch(headlessFalse) page browser.new_page() page.goto(https://example.com) print(page.title()) browser.close()注意这里用了sync_playwright还有异步版本async_playwright。入门阶段先掌握同步写法异步写法等有性能要求时再学。6.3 什么时候不该上UI自动化这里要给一个反向建议。不是所有场景都适合用 UI 自动化。以下场景更适合接口测试或单元测试登录、注册、权限校验这类逻辑型操作大量数据校验复杂状态机转换性能测试UI 自动化适合的场景是用户主流程冒烟测试跨系统页面跳转验证页面显示、样式、文案检查回归测试中的核心链路另外还要看项目阶段。如果产品还处于频繁改版阶段页面结构三天两头变这套 UI 测试脚本维护成本会很高不如先把接口覆盖好。7. 非预期弹窗和批量任务失败的排查方案7.1 非预期弹窗导致失败怎么办热搜里有个词很典型自动化测试非预期弹窗导致失败。我几乎每周都会遇到表现形式一般是用例跑到第 20 步突然页面弹了一个提示框点击事件被拦截脚本报element click intercepted或超时。非预期弹窗的来源大概有这几种活动推广弹窗Cookie 授权提示浏览器通知权限新版本升级提示遮罩层和动画层处理方式不是硬等而是分步骤先判断弹窗是否会出现。如果出现优先点关闭按钮或执行取消操作。如果关闭按钮定位不稳定可以按 ESC 键。如果弹窗是异步加载的用显式等待判断等它出现后再处理。示例逻辑try: wait WebDriverWait(driver, 3) close_btn wait.until( EC.element_to_be_clickable((By.CSS_SELECTOR, .modal .close)) ) close_btn.click() except: # 没有弹窗继续正常流程 pass这里有个细节try-except不能吞掉真正的问题。如果元素一直不出现可能是因为页面卡住或加载失败而不是“没有弹窗”。建议在异常分支里打印当前页面标题和日志方便事后判断。7.2 批量任务失败的排查顺序批量跑用例时经常出现“单独跑通过批量跑失败”的情况。这背后的原因通常是资源竞争多个浏览器窗口或接口请求抢占系统资源。数据冲突用例之间共享了同一份测试数据前面删了后面要用的数据。状态残留前一条用例没有清 cookie、没有退出登录影响下一条用例。并发问题开启多个线程跑用例时没有做隔离。排查顺序建议是先看日志定位失败发生在哪一步。再看失败用例依赖的数据和前置操作。然后看执行模式是串行还是并行是否在同一个浏览器窗口执行。再看资源占用CPU、内存、磁盘是否达到上限。最后看超时阈值是否设置合理等待时间不够也可能导致偶发失败。不要一上来就调高超时时间那样会让整体执行时间变长而且不一定能解决问题。正确顺序是先消除变量再调参数。7.3 失败重试机制批量执行时建议给“可重试”的任务加失败重试机制但要注意区分“可重试”和“不可重试”。可重试网络超时、元素加载慢、临时服务不可用。不可重试断言失败、数据错误、业务逻辑有 bug。如果所有失败都重试不仅浪费时间还会掩盖真正的 bug。可以用 pytest-rerunfailures 插件做简单配置pip install pytest-rerunfailures运行命令pytest --reruns 2 --reruns-delay 1意思是失败后重试 2 次每次等待 1 秒。重试仍失败再标记为真实失败。这样既避免偶发网络问题导致误报也不会无限重试。8. 给自己定一个7小时学习计划8.1 时间分配建议7小时是挤出来的周末学习时间不是说周一上班就能全自动写脚本。我建议这样切分时间学习内容关键产出第1小时Python基础、虚拟环境、安装依赖环境跑通第2小时Selenium或Playwright最小用例能打开页面并断言标题第3小时元素定位、等待策略、弹窗处理能完成一个搜索操作流程第4小时pytest组织用例、报告生成能跑通多条用例第5小时接口自动化基础request pytest能跑通登录接口第6小时用AI生成和维护用例能用自然语言生成代码第7小时失败排查、批量任务、重试机制写一份自己的检查清单这里每一小时都是“学练”并行的不是只看视频不动手。只看不练睡一觉基本全忘。8.2 学习方法建议不要追求把所有工具都学会。学一个工具跑一个场景解决一个实际问题这样才能把知识固化下来。比如先选定一个你工作中最熟悉的页面比如公司后台的登录页。然后用 Selenium 写一条登录用例。再用 pytest 组织起来。再增加失败截图和日志。最后把需求发给 AI让它生成第二个场景的脚本你再修改。这种“以项目带学习”的方式比漫无目的地看教程有效得多。8.3 长期进阶方向如果以后想在测试开发这条路走得更远可以关注这些方向自动化测试平台的设计把用例管理、执行、报告、通知集成到一个平台里。AI Agent 与测试结合让 Agent 根据需求自动执行探索性测试并根据结果反馈自动调整测试策略。测试数据工厂用脚本自动生成和维护测试数据。质量度量通过测试结果数据反推项目质量建立风险预警。这些话题现在网上讨论很多但真正落地并不需要一上来就上高级架构。先把单条链路跑通把基础工具用熟再逐步扩展。AI 自动化测试最大的价值不在于“自动生成多少代码”而在于帮你把注意力从重复劳动中解放出来让你有精力去思考更复杂的质量问题。踩过几次坑后我发现很多测试脚本跑不稳问题不是 AI 能力不够而是前置环境没准备好、输入材料没整理干净、失败日志没保留完整。先把这些基本功做好AI 工具才能发挥出真正的价值。
返回列表