在上一篇文章: 利用 ChatGPT 提升测试工作效率——测试工程师的新利器 (一)中,我们提到了如何通过 chatGPT 生成单接口测试用例,然后再让 chatGPT 去根据测试用例去生成接口自动化脚本。本篇文章将详细讲解一下我们团队内部在遇到业务痛点时如何利用 Httprunner 框架进行接口自动化测试的。当最近邂逅 chatGPT 后又是如何将二者结合起来,实现"敏捷"自动化测试的。
首先业务测试面对的痛点就是在商业化 Devops 产品在交付过程中,不同的客户现场和公司内部存在各种各样的环境还有各种国产化系统,并行多个客户交付,多版本需要进行回归测试。如果在有限的人力资源下,通过测试人员人工进行回归的化可能就会不能按时按点完成交付。如何快速的实现接口自动化辅助回归,经过团队内部选型,根据快速性,灵活性,易用性最终选择了 HttpRunner 框架。最终实现了能在不同的客户现场环境,当运维人员部署完成环境后能够快速实现基本功能回归测试,大大减少了测试人员的回归时间。
接下来详细讲一下我们是如何使用 Httprunner 通过 “点”,“改”,“查” 这三板斧进行接口自动化测试的。点就是通过在 web 前端进行业务操作将对应接口录制下来,然后一条命令输出自动化脚本。改就是需要将所有重复需要替换的内容用脚本进行批量更改,当然变量抽取及断言目前仍然需要每个接口人工进行更改。查就是运行调试找错修正。相比一些接口测试工具或平台需要人工单接口录入,Httprunner 简直是 so easy,哪里麻烦点哪里!下面先举例详细介绍一下如何通过 Httprunner 生成自动化脚本。
现在我以一个简单的业务场景进行说明,要将在团队空间模块创建团队空间,创建迭代,创建卡片整个流程实现自动化。首先需要在 Web 端进行对应的操作。
同时用 Fiddler 等抓包工具,或者浏览器本身的 F12 功能也可以抓取业务流程接口。删除次要保留核心接口,将所有接口导出成 har 文件 createSpaceCardDemo.har。(抓包工具及浏览器都可以导出)
接下来通过 Httprunner 框架的工具命令行:h*ar2case.exe createSpaceCardDemo.har* 将 har 文件转化成 py 脚本。(当然也可以是 yml 格式,相比较而言 py 格式的更简洁易读)
运行命令第一轮生成这样的:通过观察发现脚本里面 url,headers,cookies,请求体等信息会根据不同环境不同用户进行变更,所以需要参数化。
“秘制” 脚本第二轮替换后变成这样:将 url,headers,cookies 进行抽离后,此时脚本已经非常简洁明了了。
人工第三轮替换:将入参参数化保证每次都能运行。返回值字段抽取后吐给下个结果或其他依赖脚本。断言针对每个接口的业务特性有针对性的进行判断。
修改完成后,通过命令hrun .\testcases\space\space\createSpaceCardDemo_test.py --html=reports\index.html运行,检查脚本的正确性。
是不是感觉特别简单。比把大象装冰箱还要简单。
说明:前期框架需要做好规划,变量抽离函数封装要做好。还需要考虑不同环境,不同部署方式,接口前缀变动等等业务特点。这样后期的自动化脚本就越简单。
以上就是 Httprunner 实现接口自动化的基本流程。但是如果要做核心接口的异常场景如何测试呢,前端不能通过点一点,录制一下就会自动生成脚本。如果人工去手工写也会大大提高测试人员的工作量。现在 chatGPT 闪亮登场了。初步想法就是给 chatGPT 接口入参,入参的约束条件。然后让 chatGPT 生成接口的异常场景的测试用例。再让 chatGPT 将我们的测试用例转成我们需要的自动化脚本。又是如此简单,so easy! 哪里不对再让 chatGPT 改哪里。
经过几轮的改改改,最终 chatGPT 生成的用例如下:
接下来再将生成好的测试用例喂给 chatGPT,让它自动生成接口自动化脚本。先训练按照一个用例生成符合预期的接口自动化脚本。
接下来将所有生成的测试用例"喂"给 chatGPT,让其将所有测试用例生成 Httprunner 接口自动化脚本。通过命令 hrun .\testcases\space\exceptions\createSpaceException_P01_test.py 运行后发现直接成功。当然目前的断言还只是状态码断言,还需针对不同场景的消息体进行断言。
以上就是当 chatGPT 与 Httprunner(官网链接) 碰撞出的火花。Httprunner 对于写接口用例已经非常简单了,当再遇到 chatGPT 后功能又大大增强了。我们对于能录制的接口只需通过三板斧,点一点,改一改和查一查就能写好一个场景的用例。对于不能进行录制的单接口可以通过 chatGPT 去生成用例,然后再让 chatGPT 去自动生成自动化脚本。当然目前的应用还属于相对比较简单的接口,前期刚刚使用可能会像小孩子刚学走路会磕磕绊绊,但是我相信随着不断探索和学习,随着 chatGPT 的发展会越来越熟练。因为星星之火可以燎原。
作者:京东科技 张兴磊
来源:京东云开发者社区 转载请注明来源