接口自动化框架选型
选择技术栈。Python、Java、Go三选一。能选Python就选Python。只会Java或只会Go才选Java Go。Python语法简单,上手容易,有一整套成熟的接口自动化测试方案,社区完善且持续迭代更新。
选择技术栈。Python、Java、Go三选一。能选Python就选Python。只会Java或只会Go才选Java Go。Python语法简单,上手容易,有一整套成熟的接口自动化测试方案,社区完善且持续迭代更新。
创建SpringBoot项目最便捷的方式一是在https://start.spring.io/根据步骤选择后,下载项目工程压缩包:
本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 如何评价接口自动化项目 我理想中的接口自动化项目,是有一套脚本,能够100%覆盖核心业务场景,能够回归线上频繁出现的问题,能够支持手工无法验证的场景,能够抛出偶现问题,能够包含容易遗漏的边界场景、异常场景,每天都能定时运行,出具报告,给予反馈。 用实际的指标量化下: 功能测试自动化率 = 自动化测试用例数/总测试用例数 自动化发现bug占比 = 自动化发现的bug/总bug数 自动化发现bug有效性 = 自动化发现的有效bug/自动化提交的bug总数 自动化执行成功率 = 自动化执行成功的次数/自动化执行总次数 周活跃自动化用例占比 = (∑每周执行过的自动化测试用例)/(∑周维度自动化测试用例) 应用维度自动化代码覆盖率 = 自动化用例覆盖代码行数/应用维度代码总行数 现状是什么(Situation) 我负责的业务是发票中台,数据流简化后如下图所示: 发票中台对调用方提供RPC服务,底层有读写MySQL、同步ES、消息队列、异步任务等服务,上游是用户和订单,需要账号、增票资质、订单等物料;下游是财务,推送申请单给财务开具发票等。 发票的接口自动化在多年前是写了的,用Java+TestNG+RPC本地化了一套框架来实现,因为人员离职和业务变更,这套自动化到我手上的时候,已经不能用了,本地化的接口自动化项目也无法做数据度量,只有接口测试平台写的自动化用例才会被统计到。 任务是什么(Task) 我给自己定的绩效是在Q2完成95条自动化用例,按照一个标准化的自动化项目来实现发票的接口自动化,结合测试环境、测试物料、流水线、精准分析,打造一个个人的稳定的沉淀物,无论是晋升还是求职,都能拿来讲点故事。 行动是什么(Action) 编写自动化用例的方式 1、最理想的方式,是能够录制线上流量直接转换为自动化用例,修修改改即可。虽然我们有流量录制回放平台,但是它跟接口自动化平台并没有打通,很可惜不能采取这种方式。 2、参考线上流量日志,抓取接口、入参,人工转化为自动化用例。 3、参考接口的代码设计,比如controller/provider/sdk都定义了应用接口,能知道哪些覆盖到了,哪些还需要补充。 4、根据入参模板自行构造参数。参数个数太多的话造起来很麻烦。 我主要采用第2种和第3种方式结合来编写自动化用例。 典型自动化用例 前置步骤:初始化数据,将订单发票类型更新为3。 预设变量:提供参数化数据。 执行步骤:调用修改订单发票类型接口,将发票类型3改为2,入参引用预设变量。 财务接口:依赖测试物料无法满足,通过Mock来返回模板数据,让接口继续往下走。 基础断言:接口响应状态码200。 业务断言:调用订单列表查询接口,用JSONPath提取响应中的发票类型,断言已经改成了2。 场景用例 数据准备:通过物料工具造订单数据,写入MySQL数据库中。 更新MySQL数据:更新订单的部分字段数据,触发binlake,将数据同步至ES,因为提交开票申请是读取的ES数据;从预设变量获取orderId。 提交开票申请:从ES读取订单数据,提交开票申请;从预设变量获取orderId和userId。 查询申请单号:根据订单号查询申请单号;从预设变量获取orderId和userId。用JSONPath提取申请单号,存入动态变量中。 推送财务:把申请单号推送给财务;从动态变量获取applyId。 覆盖更多代码 ①看代码: 在Java工程里面的Controller/Provider找到所有接口,分析可以用来做自动化的接口,设计自动化用例进行覆盖。 ②代码覆盖率: 借助于jacoco,在执行自动化用例后,把代码覆盖率跑出来,分析没覆盖的代码,补充更多正常/异常/边界的自动化用例。也就是精准测试。 自动化巡检 每天早上8点,定时任务执行用例集;发送邮件,抄送测试组、开发组、领导,让测试、开发和领导都知道自动化建设情况;如果出现问题,一定要在当天解决,并邮件回复问题原因;确保当天的自动化用例结果都是正确的;第二天接着继续巡检。 流水线 在持续集成中,引入自动化用例环节,把自动化用例跑通作为提测卡点,不通过可以驳回。 产出是什么(Result) 定性来看: 结合测试环境、测试物料、自动化、流水线、精准测试,完成了一个能对环境和业务进行稳定性巡检,能对研发提测进行质量门禁,能对应用进行代码覆盖率分析的接口自动化项目。 定量来看: 功能测试自动化率 = 自动化测试用例数/总测试用例数 95/100=95% 自动化发现bug占比 = 自动化发现的bug/总bug数 2/53=3.7% 自动化发现bug有效性 = 自动化发现的有效bug/自动化提交的bug总数 2/2=100% 自动化执行成功率 = 自动化执行成功的次数/自动化执行总次数 5396/5621=96% 周活跃自动化用例占比 = (∑每周执行过的自动化测试用例)/(∑周维度自动化测试用例) 77% 应用维度自动化代码覆盖率 = 自动化用例覆盖代码行数/应用维度代码总行数 39% 这个Q主要完成了核心流程和重要接口的自动化用例,还需要持续补充场景用例和异常/边界的自动化用例。 ...
电子书网站由AI实现,Claude Code+DeepSeek-V4-Pro。技术栈Python+MkDocs,主题Read the Docs,静态托管GitHub Pages。具有中文搜索功能。
Apache Kafka是一个开源的分布式事件流处理平台,主要用于高性能数据管道、流式分析、数据集成和关键任务应用。
本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 前言 2021年,测试平台如雨后春笋般冒了出来,我就是其中一员,写了一款pytest内核测试平台,在公司落地。分享出来后,有同学觉得挺不错,希望能开源,本着“公司代码不要传到网上去,以免引起不必要麻烦”的原则,只能在家从头写一个,边重新梳理代码边温习巩固知识点,以学习交流为目的,定义为“学习版”。 功能展示 登录 接口自动化 接口自动化–Dashboard: 接口自动化–环境变量: 接口自动化–fixtures: 接口自动化–用例管理: 接口自动化–用例管理–编辑用例: 接口自动化–测试计划: 接口自动化–语法说明: 小工具 小工具–共享脚本: 小工具–HTTP状态查询: 后台管理 后台管理–用户管理 后台管理–项目管理 本文开发内容 登录,登出 首页,修改密码,个人信息 后台管理,用户管理 JWT认证 本文先打个基础,既是测试平台基本结构,也可以作为CMS基础框架,定制开发各种小型项目。 技术栈 Node.js 12.16.3 Vue 4.5.11 Python 3.8 Django 3.1.3 Django REST framework 3.12.2 SQLite 3 IDE编辑器推荐PyCharm旗舰版,既能写Django也能写Vue项目。数据库使用Django自带SQLite ,省去安装MySQL和Navicat/Workbench麻烦,轻量级开发。SQLiteStudio为SQLite数据库可视化工具,只需要下载即可,无需安装,解压就用:: https://sqlitestudio.pl/ 由于会用到models.JSONField,SQLite默认不兼容,所以需要下载sqlite3.dll文件替换下: https://www.sqlite.org/download.html 根据Python版本选择,比如我的windows安装的Python38-32,下载了sqlite-dll-win32-x86-3340100.zip这个软件包,解压后将D:\Program Files (x86)\Python38-32\DLLs\sqlite3.dll替换。 创建Vue项目 设置npm淘宝镜像: npm config set registry https://registry.npm.taobao.org 安装Vue CLI: npm install -g @vue/cli 创建teprunner-frontend项目: ...
HTTP协议是无状态的,无状态意味着,服务器无法给不同的客户端响应不同的信息。这样一些交互业务就无法支撑了。Cookie应运而生。
这篇文章很难写!我最开始学 Python,和大多数人一样,是看的菜鸟教程:
本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 正则表达式是什么? 正则表达式,是一个表达式,用少量的简单字符,来表示复杂的长字符串。 实际工作用到很多,比如日志搜索、查找替换、JMeter 响应数据提取等。 先看一个例子,用户名包含字符、数字、下划线和连字符,并限制字符的个数: 这个表达式可以接受 john_doe、jo-hn_doe、john12_as,但是无法匹配到 Jo,因为它包含了大写的字母而且太短了。 字符匹配 正则表达式之所以强大,是因为通过一些特殊字符,能让它匹配到更多字符串。 表达式. 匹配任意单个字符除了换行符。 例:.ar => The car parked in the garage. 表达式[] 字符集。匹配方括号内的任意字符。并且字符是无先后顺序的。 例:[Tt]he => The car parked in the garage. 方括号的句号就表示句号。 例:ar[.] => A garage is a good place to park a car. 表达式[^] 否定的字符集。匹配除了方括号里的任意字符。 例:[^c]ar => The car parked in the garage. 表达式* 匹配 >= 0 个重复的在 * 号之前的字符。 例:a* => babaa123. 例:[a-z]* => The car parked in the garage #21. ...
本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 简介 MCP是什么?通俗易懂地讲,在互联网时代,应用程序是通过HTTP来交互的,而来到AI时代,大模型可以通过MCP来进行交互。MCP是Model Context Protocol缩写,专为大模型(LLM,Large Language Model)设计的大模型上下文协议。 MCP Server是什么?MCP Server就像网关之于应用程序,数据库连接池之于数据库,位于中间位置,接收请求,调用大模型。可以调用Server进行业务开发,也可以自建Server实现特定功能。 MCP Python SDK是什么?MCP的Python实现,它包含以下功能(官方原文): Build MCP clients that can connect to any MCP server Create MCP servers that expose resources, prompts and tools Use standard transports like stdio, SSE, and Streamable HTTP Handle all MCP protocol messages and lifecycle events 安装 推荐使用uv工具来管理Python项目。 安装3.10以上版本Python: uv python install 3.10 创建示例项目: uv init mcp-server-demo cd mcp-server-demo 创建虚拟环境: uv venv ### 如果当前不是默认Python3.10,需指定版本 uv venv --python 3.10 执行后会提示: Creating virtual environment at: .venv Activate with: source .venv/bin/activate 激活: ...