以效率为导向:用ChatGPT和HttpRunner实现敏捷自动化测试(二)
1、前言
在上一篇文章: 利用ChatGPT提升测试工作效率——测试工程师的新利器(一)中,我们提到了如何通过chatGPT生成单接口测试用例,然后再让chatGPT去根据测试用例去生成接口自动化脚本。本篇文章将详细讲解一下我们团队内部在遇到业务痛点时如何利用Httprunner框架进行接口自动化测试的。当最近邂逅chatGPT后又是如何将二者结合起来,实现"敏捷"自动化测试的。
首先业务测试面对的痛点就是在商业化Devops产品在交付过程中,不同的客户现场和公司内部存在各种各样的环境还有各种国产化系统,并行多个客户交付,多版本需要进行回归测试。如果在有限的人力资源下,通过测试人员人工进行回归的化可能就会不能按时按点完成交付。如何快速的实现接口自动化辅助回归,经过团队内部选型,根据快速性,灵活性,易用性最终选择了HttpRunner框架。最终实现了能在不同的客户现场环境,当运维人员部署完成环境后能够快速实现基本功能回归测试,大大减少了测试人员的回归时间。
接下来详细讲一下我们是如何使用Httprunner通过“点”,“改”,“查”这三板斧进行接口自动化测试的。点就是通过在web前端进行业务操作将对应接口录制下来,然后一条命令输出自动化脚本。改就是需要将所有重复需要替换的内容用脚本进行批量更改,当然变量抽取及断言目前仍然需要每个接口人工进行更改。查就是运行调试找错修正。相比一些接口测试工具或平台需要人工单接口录入,Httprunner简直是so easy,哪里麻烦点哪里!下面先举例详细介绍一下如何通过Httprunner生成自动化脚本。
2、招式一:点一点
现在我以一个简单的业务场景进行说明,要将在团队空间模块创建团队空间,创建迭代,创建卡片整个流程实现自动化。首先需要在Web端进行对应的操作。

同时用Fiddler等抓包工具,或者浏览器本身的F12功能也可以抓取业务流程接口。删除次要保留核心接口,将所有接口导出成har文件createSpaceCardDemo.har。(抓包工具及浏览器都可以导出)

接下来通过Httprunner框架的工具命令行:har2case.exe createSpaceCardDemo.har将har文件转化成py脚本。(当然也可以是yml格式,相比较而言py格式的更简洁易读)

3、招式二:改一改
运行命令第一轮生成这样的:通过观察发现脚本里面url,headers,cookies,请求体等信息会根据不同环境不同用户进行变更,所以需要参数化。

“秘制”脚本第二轮替换后变成这样:将url,headers,cookies进行抽离后,此时脚本已经非常简洁明了了。

人工第三轮替换:将入参参数化保证每次都能运行。返回值字段抽取后吐给下个结果或其他依赖脚本。断言针对每个接口的业务特性有针对性的进行判断。

4、招式三:查一查
修改完成后,通过命令hrun .\testcases\space\space\createSpaceCardDemo_test.py --html=reports\index.html运行,检查脚本的正确性。

是不是感觉特别简单。比把大象装冰箱还要简单。

说明:前期框架需要做好规划,变量抽离函数封装要做好。还需要考虑不同环境,不同部署方式,接口前缀变动等等业务特点。这样后期的自动化脚本就越简单。
5、ChatGPT生成用例
以上就是Httprunner实现接口自动化的基本流程。但是如果要做核心接口的异常场景如何测试呢,前端不能通过点一点,录制一下就会自动生成脚本。如果人工去手工写也会大大提高测试人员的工作量。现在chatGPT闪亮登场了。初步想法就是给chatGPT接口入参,入参的约束条件。然后让chatGPT生成接口的异常场景的测试用例。再让chatGPT将我们的测试用例转成我们需要的自动化脚本。又是如此简单,so easy!哪里不对再让chatGPT改哪里。

经过几轮的改改改,最终chatGPT生成的用例如下:

6、ChatGPT生成Httprunner脚本
接下来再将生成好的测试用例喂给chatGPT,让它自动生成接口自动化脚本。先训练按照一个用例生成符合预期的接口自动化脚本。

接下来将所有生成的测试用例"喂"给chatGPT,让其将所有测试用例生成Httprunner接口自动化脚本。通过命令hrun .\testcases\space\exceptions\createSpaceException_P01_test.py运行后发现直接成功。当然目前的断言还只是状态码断言,还需针对不同场景的消息体进行断言。


7、总结
以上就是当chatGPT与Httprunner(官网链接)碰撞出的火花。Httprunner对于写接口用例已经非常简单了,当再遇到chatGPT后功能又大大增强了。我们对于能录制的接口只需通过三板斧,点一点,改一改和查一查就能写好一个场景的用例。对于不能进行录制的单接口可以通过chatGPT去生成用例,然后再让chatGPT去自动生成自动化脚本。当然目前的应用还属于相对比较简单的接口,前期刚刚使用可能会像小孩子刚学走路会磕磕绊绊,但是我相信随着不断探索和学习,随着chatGPT的发展会越来越熟练。因为星星之火可以燎原。
作者:京东科技 张兴磊
来源:京东云开发者社区 转载请注明来源
以效率为导向:用ChatGPT和HttpRunner实现敏捷自动化测试(二)的更多相关文章
- 基于HttpRunner的接口自动化测试平台HttpRunnerManager(二)
https://github.com/HttpRunner/HttpRunnerManager HttpRunnerManager Design Philosophy 基于HttpRunner的接口自 ...
- jenkins结合httprunner配置实现自动化测试
jenkins结合httprunner配置实现自动化测试 自动化测试思路: jenkins发布代码到预发布环境 –> 触发自动化测试预发布环境 à 返回测试结:如果测试通过则将代码推送到生产环境 ...
- HttpRunner Manager接口自动化测试平台实践(Windows)
1. 源码下载 github: https://github.com/HttpRunner/HttpRunnerManager 下载后放入项目目录,结构如下: 2.依赖环境 根据根目录require ...
- ChatGPT推荐最常用的自动化测试、性能、安全测试工具!
ChatGPT是一种当前被广泛关注的人工智能技术,它具备生成自然语言的能力,能够完成一些简单的文本生成.对话交互等任务.ChatGPT 算法的出现,打破了以前自然语言处理的瓶颈,使得机器具备了更加贴合 ...
- ChatGPT调研分析与应用场域结合构想
作者:京东科技 胡骏 摘要 1. ChatGPT调研分析 2022年11月30日,ChatGPT横空出世,在全球范围内形成了热烈的讨论.根据Similarweb的数据,今年1月,平均每天约有1300万 ...
- ChatGPT如何助力DevOps|用例解读
DevOps 是一种方法论,旨在提高软件开发和 IT 运营团队的协作和效率.DevOps 涉及各种任务和流程的自动化,例如规划.编码.测试.部署.监控和故障排除.然而,其中一些任务和流程仍然有大量任务 ...
- ChatGPT搭建AI网站实战
1.概述 ChatGPT是一款基于GPT-3.5架构的大型语言模型,它能够进行自然语言处理和生成对话等任务.作为一款智能化的聊天机器人,ChatGPT有着广泛的应用场景,如在线客服.智能助手.个性化推 ...
- OpenAI ChatGPT 能取代多少程序员的工作?导致失业吗?
阅读原文:https://bysocket.com/openai-chatgpt-vs-developer/ ChatGPT 能取代多少程序员的工作?导致我们程序员失业吗?这是一个很好的话题,我这里分 ...
- 判断List、Map、Set是否为空及效率比较
//如果object为null,则设置为defaultValue ObjectUtils.defaultIfNull(object, defaultValue); //判断集合是否为null Li ...
- 【Python | opencv+PIL】常见操作(创建、添加帧、绘图、读取等)的效率对比及其优化
一.背景 本人准备用python做图像和视频编辑的操作,却发现opencv和PIL的效率并不是很理想,并且同样的需求有多种不同的写法并有着不同的效率.见全网并无较完整的效率对比文档,遂决定自己丰衣足食 ...
随机推荐
- 基于.NetCore开发博客项目 StarBlog - (29) 开发RSS订阅功能
前言 最近忙中偷闲把博客的评论功能给做完了,我可以说这个评论功能已经达到「精致」的程度了 但在正式发布之前,先卖个关子,来介绍一下另一个新功能--RSS订阅 RSS是啥 来自hk gov新闻网的介绍~ ...
- 密码学概念科普(加密算法、数字签名、散列函数、HMAC)
密码散列函数 密码散列函数 (Cryptographic hash function),是一个单向函数,输入消息,输出摘要.主要特点是: 只能根据消息计算摘要,很难根据摘要反推消息 改变消息,摘要一定 ...
- Unity的IGenerateNativePluginsForAssemblies:深入解析与实用案例
Unity IGenerateNativePluginsForAssemblies Unity是一款非常流行的游戏引擎,它支持多种平台,包括Windows.Mac.Linux.Android.iOS等 ...
- 吴恩达优化算法 (Optimization algorithms)笔记
Mini-batch 梯度下降(Mini-batch gradient descent) 使用batch梯度下降法,一次遍历训练集只能让你做一个梯度下降,使用mini-batch梯度下降法,一次遍历训 ...
- 【小小demo】Springboot + Vue 增删改查
vue-table-ui 该工程提供的是 一个简单的 Vue + Element-UI 的表格,增删改查操作. 工程代码在最下面. 环境 jdk1.8 idea maven springboot 2. ...
- hexo博客yilia主题_缺失模块_解决方案
hexo博客yilia主题,左侧栏目有一个全部文章的按钮,刚开始开始报错缺失模块,如下图: 我解决了这个问题着实不容易饶了弯路,但是跟着提示步骤,其实很简单,走起: 1.查看node版本 win键+R ...
- PTA 21级数据结构与算法实验7—查找表
目录 7-1 电话聊天狂人 7-2 两个有序序列的中位数 7-3 词频统计 7-4 集合相似度 7-5 悄悄关注 7-6 单身狗 7-7 词典 7-8 这是二叉搜索树吗? 7-9 二叉搜索树 7-1 ...
- C语言基础--逻辑判断和循环
目录 一.储存标识符 1.auto 2.register 3.static 4.const 二.运算符 1.逻辑运算符 2.位运算符 3.运算符 4.三元运算符 三.选择结构 1.if判断 1.1 i ...
- OOP第三次大作业
前言 前言的前言 快期末,也一直在等这次作业发布,我现在只能说终于等到了!!!跟上一个Blog的时间相隔比较大,内容也比较多,涉及范围也比较广7-11次小练习,废话不多说,直接开始吧.如果对我blog ...
- Node: 使用nvm切换node版本
软件下载 https://github.com/coreybutler/nvm-windows/releases/tag/1.1.7 解压并安装 双击程序一路安装即可.安装完成后,在控制台输入nvm出 ...