探秘Shortest:基于 Playwright 的 AI 驱动的自动化测试利器

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


测试之困,Shortest 来解

在软件开发的漫漫长路上,测试既是守护质量的坚固盾牌,却也常常沦为开发者们的 “心腹大患”。就拿端到端(E2E)测试来说,传统流程宛如一座难以逾越的高山,让无数开发者望而却步。深入理解复杂的测试框架、熟练掌握精巧的编码技巧,这已然是不小的挑战,更何况还要在荆棘丛中穿梭,处理那繁杂琐碎的环境配置。每一项任务都如同精密仪器中的齿轮,环环相扣,缺一不可,但凡有一处出现差池,都可能让整个测试工作陷入僵局,耗费的大量时间与精力,换来的可能只是微薄的进展。

不过,正所谓 “柳暗花明又一村”,当我们在测试的迷宫中徘徊时,GitHub 上一款名为 Shortest 的端到端 AI 测试框架宛如一颗璀璨的启明星,划破夜空,带来了全新的希望曙光。它创新性地引入了 Anthropic Claude 的强大自然语言处理能力,如同为开发者们配备了一位智能助手,让大家只需用日常语言轻轻诉说测试需求,就能魔法般地生成可执行的单元测试。这一变革性的突破,不仅让测试工作变得如同闲庭信步般简单直观,更为整个测试领域推开了一扇通往新世界的大门,让我们得以窥探那些前所未有的可能性,开启一场测试效率与质量的双重飞跃之旅。

Shortest 初印象

项目简介

 

Shortest 作为一款别具一格的端到端测试框架,稳稳扎根于 Playwright 这片坚实的 “土壤” 之上,巧妙融合了前沿的 AI 技术,宛如一位智能领航员,引领我们开启全新的测试之旅。它的出现,打破了传统测试的重重枷锁,让测试开发过程如同一场轻松愉悦的对话,测试人员只需用通俗易懂的日常语言,就能将测试需求娓娓道来,而框架背后的 “智慧大脑” 则会迅速理解这些指令,自动转化为精准、可执行的测试代码。这一创新性的交互模式,极大地提升了测试效率,让测试人员从繁琐的编码工作中解脱出来,将更多精力投入到测试策略的优化与创新上。

核心亮点

自然语言编写测试说明Shortest 开创性地允许开发者运用自然语言精心雕琢测试用例,这一变革性的举措,无疑是为测试领域的准入门槛来了一场 “大裁军”。在过往,测试用例的编写宛如一场 “高智商游戏”,需要开发者精通复杂的编程语言与晦涩的测试框架语法,这使得众多非技术人员只能望而却步。然而,Shortest 的诞生彻底改写了这一局面,如今,即便是毫无编程基础的业务人员,也能凭借自己对业务流程的熟稔,用日常交流般的自然语言清晰勾勒出测试场景,让测试设计不再是技术人员的 “专利”,真正实现了全员参与、群策群力。

AI驱动转化解释:在 Shortest 的核心地带,Anthropic Claude API 宛如一颗强劲的 “智慧引擎”,驱动着自然语言向代码的无缝转化。这一智能转化过程,绝非简单的 “文字搬家”,而是一场深入理解、精准执行的 “智能演绎”。它能够凭借对自然语言语义的深度剖析,精准推测出可能潜藏的边界情况,进而对测试用例进行智能优化。就好比一位经验丰富的测试老手,不仅能敏锐捕捉到常规测试路径,还能前瞻性地预见那些容易被忽视的 “角落”,让测试用例更加完备,将人为遗漏的风险降至最低。

基于Playwright的优势:站在 Playwright 这位 “巨人” 的肩膀上,Shortest 继承了其跨浏览器支持的强大基因,无论是 ChromeFirefox,还是 SafariEdge 等主流浏览器,Shortest 都能游刃有余地穿梭其中,确保测试结果在不同浏览器环境下保持高度一致,就像为测试结果穿上了一层坚固的 “防护甲”,有效抵御因浏览器差异而引发的不确定性。同时,Playwright 卓越的稳定性,也为 Shortest 提供了坚实的后盾,让测试过程如同在平稳的轨道上行驶的列车,极少出现意外 “颠簸”,大大提升了测试的可靠性与可重复性。

GitHub与2FA集成Shortest 与 GitHub 的深度融合,恰似为软件开发的 “流水线” 安装了一台精密的 “智能控制器”。它能够顺滑无阻地嵌入到 CI/CD 流水线之中,实现测试流程的自动化触发与即时反馈,让每次代码提交都能迅速接受严格的测试检验,确保代码质量始终处于 “健康状态”。尤为值得一提的是,它对双因素认证(2FA)的贴心支持,为敏感操作筑牢了一道坚固的 “安全防线”。在涉及用户登录验证、权限管理等关键环节,2FA 如同一位忠诚的 “卫士”,有效抵御潜在的安全威胁,让开发过程更加安心、稳健。

Mailosaur邮件验证集成:在当今数字化的浪潮中,邮件功能已然成为众多应用不可或缺的 “标配”,而 Shortest 与 Mailosaur 平台的无缝对接,则为邮件功能的测试点亮了一盏 “明灯”。无论是新用户注册时的验证邮件,还是密码重置时的确认邮件,Shortest 都能像一位严谨的 “质检员”,精准捕捉邮件的发送与接收流程,确保每一封邮件都能准确无误地送达目的地,每一个链接都能正常工作,让涉及邮件交互的功能测试变得轻松、高效。

上手体验

安装部署

Shortest 的安装过程简洁流畅,如同为开发者精心铺设的一条 “快速通道”,让大家能以最快的速度开启这场智能测试之旅。目前,它提供了三种便捷的安装方式,以满足不同开发者的习惯与需求。

1.使用 npm ,只需在终端轻轻输入以下命令

npm install -D @antiwork/shortest

系统便会自动拉取所需依赖,将 Shortest 稳稳地安装到项目的开发依赖中;

2.pnpm,只需执行以下命令

pnpm add -D @antiwork/shortest

就能享受 pnpm 高效快速的安装体验,迅速完成框架部署;

3.而对于习惯使用 yarn 的开发者来说,可以使用以下命令

yarn add -D @antiwork/shortest

这条命令,也能轻松将 Shortest 引入项目环境。安装完成后,通过 npx shortest(对应 npm 安装方式)、pnpm shortest 或 yarn shortest 等命令,即可一键启动测试流程,让 Shortest 迅速投入 “工作”,为项目质量保驾护航。

配置参数详解

Shortest的配置世界里,shortest.config.ts文件宛如一位贴心的 “管家”,精心打理着测试运行的各项细节。其中,headless 参数恰似一扇 “开关门”,当设置为 false 时,测试过程中的浏览器操作将可视化呈现,开发者得以亲眼目睹每一个点击、输入、跳转的精彩瞬间,这对于调试复杂测试场景、精准定位问题根源极为有利;而若设置为 true,浏览器则会在后台默默运行,如同一位 “隐形助手”,以静默模式高效完成测试任务,节省系统资源,加快测试进程。baseUrl 则像是为测试指明方向的 “导航仪”,开发者填入应用程序的基础 URLShortest 便能依据此精准定位,快速发起请求,确保测试准确无误地针对目标应用展开。testDir 如同一个 “收纳盒”,指定测试文件的存放目录,让繁多的测试用例各归其位,井然有序,方便管理与维护。而 anthropicKey,作为连接 Shortest 与 Anthropic Claude API 的 “密钥”,开发者将申请到的 API 密钥妥善填入此处,便能激活 Shortest 的智能核心,开启自然语言与代码转化的神奇之旅。

import type { ShortestConfig } from "@antiwork/shortest";

export default {
  headless: false,
  baseUrl: "http://localhost:3000",
  testPattern: "**/*.test.ts",
  anthropicKey: process.env.ANTHROPIC_API_KEY,
} satisfies ShortestConfig;

编写测试用例示例

以常见的用户登录功能测试为例,让我们一同领略 Shortest 的便捷与强大。首先,在指定的测试目录(如上文配置的 app/tests)下创建一个名为 login.test.ts 的测试文件。

import { shortest } from '@antiwork/shortest'

shortest('Login to the app using email and password', {
  username: process.env.GITHUB_USERNAME,
  password: process.env.GITHUB_PASSWORD
})

这里,第一个参数用自然语言清晰地描述了测试意图,让框架一目了然;第二个参数对象则巧妙地利用环境变量传入用户名与密码,既保障了敏感信息的安全性,又实现了测试数据的灵活配置。当测试启动,Shortest 便会依据这些指令,自动操控浏览器打开应用登录页面,精准输入用户名和密码,随后模拟点击登录按钮,并智能判断登录是否成功,整个过程一气呵成,无需开发者手动编写繁琐的操作步骤与断言逻辑,真正将测试从复杂的编码工作中解放出来,让开发者得以聚焦于测试策略的优化与创新。

使用回调函数

你也可以使用回调函数来添加额外的断言和其他逻辑。AI 将在浏览器测试执行完成后执行回调函数。

import { shortest } from "@antiwork/shortest";
import { db } from "@/lib/db/drizzle";
import { users } from "@/lib/db/schema";
import { eq } from "drizzle-orm";

shortest("Login to the app using username and password", {
  username: process.env.USERNAME,
  password: process.env.PASSWORD,
}).after(async ({ page }) => {
  // Get current user's clerk ID from the page
  const clerkId = await page.evaluate(() => {
    return window.localStorage.getItem("clerk-user");
  });

  if (!clerkId) {
    throw new Error("User not found in database");
  }

  // Query the database
  const [user] = await db
    .select()
    .from(users)
    .where(eq(users.clerkId, clerkId))
    .limit(1);

  expect(user).toBeDefined();
});

生命周期钩子

你可以使用生命周期钩子在测试前后运行代码

import { shortest } from "@antiwork/shortest";

shortest.beforeAll(async ({ page }) => {
  await clerkSetup({
    frontendApiUrl:
      process.env.PLAYWRIGHT_TEST_BASE_URL ?? "http://localhost:3000",
  });
});

shortest.beforeEach(async ({ page }) => {
  await clerk.signIn({
    page,
    signInParams: {
      strategy: "email_code",
      identifier: "iffy+clerk_test@example.com",
    },
  });
});

shortest.afterEach(async ({ page }) => {
  await page.close();
});

shortest.afterAll(async ({ page }) => {
  await clerk.signOut({ page });
});

链式测试

// Sequential test chain
shortest([
  "user can login with email and password",
  "user can modify their account-level refund policy",
]);

// Reusable test flows
const loginAsLawyer = "login as lawyer with valid credentials";
const loginAsContractor = "login as contractor with valid credentials";
const allAppActions = ["send invoice to company", "view invoices"];

// Combine flows with spread operator
shortest([loginAsLawyer, ...allAppActions]);
shortest([loginAsContractor, ...allAppActions]);

API 测试

const req = new APIRequest({
  baseURL: API_BASE_URI,
});

shortest(
  "Ensure the response contains only active users",
  req.fetch({
    url: "/users",
    method: "GET",
    params: new URLSearchParams({
      active: true,
    }),
  }),
);

# 或者
shortest(`
  Test the API GET endpoint ${API_BASE_URI}/users with query parameter { "active": true }
  Expect the response to contain only active users
`);

运行测试

pnpm shortest                              # Run all tests
pnpm shortest __tests__/login.test.ts      # Run specific test
pnpm shortest --headless                   # Run in headless mode using cli

Shortest 大显身手的舞台

Web 应用端到端测试

在现代 Web 应用的开发进程中,端到端测试犹如一场艰难的 “马拉松”,尤其是面对那些业务逻辑错综复杂、页面跳转频繁、用户交互动态多变的应用时,挑战更是接踵而至。而 Shortest 就像是一位专业的 “领航员”,凭借其强大的自然语言处理能力与智能测试生成机制,能够轻松驾驭这复杂的局面。

以一个典型的电商购物流程为例,用户从浏览商品列表、查看商品详情,到将心仪商品加入购物车,再到填写收货地址、选择支付方式,直至完成订单支付,这一系列操作涉及多个页面的无缝切换与大量动态数据的交互验证。使用 Shortest,测试人员只需用自然语言清晰描述每个步骤,如 “用户在首页搜索栏输入‘智能手机’,点击搜索按钮,进入商品列表页面”“在商品列表中选择某款手机,进入详情页,验证产品名称、价格、参数等信息是否正确显示” 等。Shortest 便能迅速理解这些指令,自动操控浏览器精准模拟用户行为,在各个页面间流畅跳转,不仅仔细检查页面元素的加载与显示是否准确无误,还会对每一步操作后的数据交互进行严格验证,确保购物流程如丝般顺滑,不放过任何一个可能出现的漏洞,为用户带来完美的购物体验提供坚实保障。

CI/CD 流程自动化

在当今高效的软件开发协作流程中,CI/CD(持续集成 / 持续部署)已然成为提升效率、保障质量的关键 “引擎”,而 Shortest 与 GitHub 的深度融合,更是为这台 “引擎” 注入了强大动力。当开发团队成员将代码提交到 GitHub 仓库时,Shortest 就如同一位时刻坚守岗位的 “质检员”,能够自动感知代码的变化,迅速启动预先配置好的测试流程。

它会依据项目中的测试配置,有条不紊地执行各类测试任务,涵盖单元测试、集成测试以及至关重要的端到端测试。在测试过程中,Shortest 利用其智能优势,精准捕捉每一个潜在问题,并将详细的测试结果实时反馈给开发团队。无论是测试通过时的 “绿灯” 提示,还是发现问题时的精准报错信息,都能让团队成员第一时间了解代码质量状况。这一自动化流程,不仅极大地节省了人工手动触发测试的时间与精力,还通过及时反馈确保问题能够在最短时间内被发现与修复,有效避免了问题在后续开发阶段的 “雪球式” 积累,让软件交付的 “管道” 始终保持畅通无阻,加速产品迭代升级的步伐。

用户认证与安全测试

在当今数字化时代,用户认证与安全防护犹如一座城堡的坚固城门,是各类应用系统的重中之重。Shortest 深知其重要性,凭借对 2FA(双因素认证)和邮件验证等功能的原生支持,为这座 “城门” 筑牢了每一道防线,成为测试用户登录、注册流程的不二之选。

以金融类应用为例,在用户登录环节,除了常规的用户名与密码验证,往往还启用了 2FA 机制,如短信验证码、硬件令牌或生物识别等额外验证方式。Shortest 能够轻松应对这一复杂场景,通过自然语言编写测试用例,如 “使用正确用户名与密码登录应用,在弹出的 2FA 验证页面,输入短信验证码,验证是否成功登录”,它便会自动模拟整个流程,细致检查每一个验证步骤是否按预期执行,确保恶意攻击者无法仅凭窃取的用户名和密码突破防线。同样,在注册流程测试中,对于新用户注册后触发的邮件验证环节,ShortestMailosaur的紧密集成发挥了关键作用。它可以精准监测邮件的发送、接收以及验证链接的有效性,确保新用户能够顺利完成注册流程,同时杜绝虚假注册、恶意注册等安全隐患,全方位守护应用系统的用户认证安全防线。

与传统测试框架一决高下

在当今软件开发的测试领域中,传统测试框架宛如一位位经验丰富的 “老将”,曾在漫长岁月里为保障软件质量立下赫赫战功。然而,随着技术的飞速发展与需求的日益繁杂,它们的局限性也逐渐暴露出来。与之相比,Shortest 这款新兴的 AI 驱动测试框架,则像是一位朝气蓬勃、身怀绝技的 “后起之秀”,为测试工作注入了全新活力。

从编写方式上看,传统测试框架要求测试人员运用专业编程语言,依照特定语法规则,逐行编写详细测试脚本,这一过程犹如精心雕琢一件复杂工艺品,需对代码结构、逻辑流程有深入理解,技术门槛颇高,往往只有具备深厚编程功底的专业人员才能胜任。而 Shortest 则借助强大的 AI 能力,允许测试人员用通俗易懂的自然语言描述测试场景,仿佛与人日常交谈般轻松惬意,大大降低了准入门槛,让非技术背景的业务人员也能参与其中,各抒己见,实现测试设计的多元化与全民化。

在技术门槛维度,传统框架涉及诸多复杂概念与精细操作,如 Selenium 需精准配置 WebDriver,处理不同浏览器驱动的兼容性问题,同时要熟练掌握多种等待策略,以应对页面加载的不确定性;Cypress 虽在部分功能上有所简化,但仍需深入了解其独特的 API 及运行机制,学习成本不容小觑。反观 Shortest,依托自然语言处理技术,将复杂技术细节封装于智能内核之中,测试人员无需过多纠结底层实现,只需专注于清晰表达测试需求,即可借助框架自动生成高质量测试代码,轻松跨越技术鸿沟。

执行效率方面,传统框架受限于架构设计与操作模式,常存在一定短板。以 Selenium 为例,其基于 WebDriver 协议与浏览器交互,通信过程相对繁琐,尤其在处理大规模测试套件时,成千上万次的请求响应积累,使得测试耗时显著增加;且由于缺乏高效的并行执行内置支持,需借助额外工具搭建分布式测试环境,配置复杂,进一步影响整体效率。Shortest 则基于 Playwright 构建,天生具备卓越性能基因,不仅利用 WebSocket 直连浏览器,削减通信开销,还内置强大并行机制,能依据系统资源智能调度测试任务,充分发挥多核 CPU 优势,如同开启多车道高速公路,让测试流程风驰电掣,大大缩短测试周期。

功能覆盖领域,传统测试框架通常专注于核心测试功能,对于一些新兴或复杂应用场景,如双因素认证邮件验证等,往往需要借助各类插件或自行编写大量额外代码来实现支持,这不仅增加了开发工作量,还可能引入兼容性隐患,犹如为房屋添砖加瓦时需四处寻觅适配材料,拼凑痕迹明显。Shortest 则直击痛点,原生集成 2FA 验证、Mailosaur 邮件验证等实用功能,从登录安全到邮件交互流程,全方位覆盖现代应用测试需求,一站式解决测试难题,为软件质量保驾护航。

最为关键的 AI 驱动特性,更是 Shortest 与传统框架的分水岭。传统框架在测试用例生成、优化过程中,主要依赖人工经验与手动编写,测试人员需凭借敏锐洞察力与丰富实践去设想各种边界情况、潜在风险,犹如在黑暗中摸索,难免有所遗漏,且效率低下。Shortest 背后的 Anthropic Claude API 宛如一盏智能明灯,通过对自然语言语义的深度剖析,自动推测边界条件,智能拓展测试场景,不仅让测试用例更加周全缜密,还能在代码生成瞬间完成优化,确保测试质量与效率双丰收,将人为疏忽的风险降至最低。

综上所述,Shortest 在与传统测试框架的较量中,凭借自然语言编写、低技术门槛、高效执行、广泛功能覆盖以及前沿的 AI 驱动等诸多优势脱颖而出,为现代软件开发测试描绘出一幅全新蓝图,引领行业迈向更高效、智能的未来。

参考视频

相关链接

Github:https://github.com/anti-work/shortest
官网:https://shortest.com/

如果你觉得这篇文章还不错,不妨动动手指,给它点个赞👍,让更多人看到它的魅力。觉得内容对你有帮助,就大胆地分享到朋友圈吧,让知识传递得更远。同时,也欢迎在评论区留下你的想法和见解,我们一起交流探讨。当然,别忘了关注我,这样你就不会错过我后续的精彩分享啦!最后,记得点个“在看”👀,让我们共同见证测试之美!

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】
在这里插入图片描述
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值