接口自动化测试 Pytest+ChatGPT

📌 多少人都在自己的认知里想的通透,然而活不通透.

前言


✍🏻        在AI能力大幅进步的背景下,日常的编码工作ChatGPT使用频率确实较高,突出表现在报错问题排查及代码优化方面给予了很大帮助. 近段时间在尝试调研自动化测试辅助方面如何借助AI相关或ChatGPT来提高效率或找一个突破口尝试下,将实际的业务场景给到ChatGPT,进行json数据生成并输出测试用例,在对ChatGPT的输出结果进行简单的调整和修改后,就可以用于业务测试中了. 以下是对比了ChatGPT_3.5模型和ClaudeAI2.0的输出, 结合上下文需要调教一番:

loading

loading

loading

调研过程

什么是Fuzzing

模糊测试(Fuzzing)的核心思想是通过系统自动生成随机数据作为输入, 来验证被测程序的可靠性.

在测试领域中, Fuzzing经常作为一种补充接口测试手段, 来覆盖/探索接口中潜在的异常/临界值场景.

简单来说, 系统通过给定种子用例, 随机生成大批量用例, 调用被测接口, 尝试发现问题(挖掘bug).

模糊测试的难点在于如何基于种子用例生成随机有效的用例数据, 从业界的经验来看, 测试人员通过对生成内容进行建模、设计相应算法来匹配被测对象, 才能取得比较好的生成效果.

随着ChatGPT的发布, 其AIGC的能力令人惊艳,如果借助ChatGPT的优势,能否降低生成随机数据的成本, so, 围绕ChatGPT生成用例的可行性进行了尝试.

结合Fuzzing与ChatGPT可以做什么

经过上述的调研,模糊测试(Fuzzing)的思路是 : 基于种子用例生成随机用例 -> 执行用例 -> 发现问题(bug挖掘),但其难点在于如何生成高质量的随机用例, 而ChatGPT的内容生成能力,似乎可以解决这一问题. 将两者尝试结合, 模糊测试作为核心思想, ChatGPT作为用例生成服务,目标是通过大量ChatGPT生成的用例,来挖掘被测对象潜在的问题.

loading

设计实践

✍🏻

在自动化测试中, 以模糊测试为基石, 让ChatGPT来充当规则变异器, 自动生成接口测试用例, 覆盖率作为检验生成用例的有效性,目的是发现问题和提高自动化测试的效率.

ChatGPT生成用例的可行性

1) 结合现有的自动化测试项目进行改造优化,使期达到预期目的

2) 为了保证公司接口不全部暴露给ChatGPT , 设计前置规则:不提供接口地址

3) 基于 auto_api_tc 项目

一键执行(测试人员尽可能少的输入相关入参,以下流程步骤全部自动完成):

  • 脚本自动生成相关目录及文件(脚本代码)

  • 调用openai生成测试用例数据并写入临时表

  • 将数据格式化后根据模板写入yaml

  • 执行测试脚本并生成allure报告

设计思路

实现过程

代码部分

input -> fileTemplate.py -> fileCreator.py -> AITestCaseGenerator.py -> output

基于pytest框架 将conftest\test_xxx.py\yml等文件封装成模板,一键生成

ChatGPT_prompt 提示词信息写在markdown文件中,便于维护及gpt更好的识别

封装执行文件

(初始化文件夹及文件→ChatGPT调用提示词生成测试用例→存入临时文件json→将用例提取转化接口数据文件data_yml→执行测试用例)

测试执行文件

✍🏻   参数说明:

        安装: pip install openai==0.28

        说明:

         一.调用方法说明:

        默认路径: auto_api_tc/testSimple

        实例化 AITestCase类,传入参数

        类方法: create_files(): 创建用例文件夹及其下相关文件:__init__.py, data_xxx.yml, conftest.py, test_xxx.py

        类方法: generate(): 根据要求调用openai生成用例数据以字典格式输出

        类方法: write_yml_data(): 根据要求调用openai生成用例数据以字典格式输出,并写入yml文件         类方法: run_test(): 执行用例文件,并生成allure报告

        用例执行: 方式1: 直接执行test_xxx.py文件

                        方式2: 执行pytest命令,如: pytest -s test_xxx.py;生成allure报告:allure serve report/result

执行结果

工具定位

1.扫描接口, 利用随机入参带来的不确定性,来验证接口的稳定性

比如:用作新接口的异常测试入参验证

新接口的异常测试入参校验在没有经过测试验证前,校验项是容易存在遗漏缺失,通过随机生成的入参内容,可以用来验证校验逻辑的完备性

2.在不同代码版本中,回归接口的稳定性

比如用作新老代码在异常入参测试领域用作回归测试

3.生成的推荐用例可以用来验证同一接口在不同代码版本下响应,理论上针对推荐用例的响应,预期是一致的

它能做什么、不能做什么

可以做

1.创建并执行随机参数输入的模糊测试

2.批量测试用例生成(非业务语义)

3.基于创建的执行集,在每个代码版本中用作回归测试验证(不同代码版本对同一份测试用例的结果校验)

暂时不能做

1.替代手工测试/场景化测试,原因是ChatGPT还不能很好的生成具有业务语义内容的数据

与现有自动化/功能测试之间的关系

2.原有自动化/功能测试不会针对异常入参场景做详尽的参数输入测试,而自动推荐用例服务,可以在数量上弥补这一场景

3.从替代性上来说,目前无法替代现有的自动化/功能测试,只能用作辅助测试,最大的问题还是自动推荐用例服务 还不具备完善的业务语义(真实)数据生成的能力

后续规划

  • 补充完善自动化断言输出部分

  • 测试报告结果分析自动化输出

  • 优化调试prompt(提高入参推荐准确度及内容生成质量)

  • 结合django_vue 开发可视化页面,使其更方便使用

  • 用例数据生成部分加入安全测试相关case

  • 深度挖掘ChatGPT在自动化测试领域的其他可行性

  • 设计ChatGPT可识别的语言模板,使期更精准输出

  • 搭建私有化数据模型,搜集并存储所有(业务)用例数据,进行标注训练 #(idea)


  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: GPT-3 API 是一种可以让你在程序中方便地使用 GPT-3 模型进行自然语言处理任务的接口。 它允许你通过简单的 API 调用来发送请求,获得 GPT-3 模型生成的文本。你可以通过 GPT-3 API 进行诸如文本生成、问答、翻译等多种自然语言处理任务。 使用 GPT-3 API 需要你先注册帐号,然后使用 API 密钥才能调用 API。你可以在官网(https://beta.openai.com/docs/quickstart/gpt3-api)上找到如何使用 GPT-3 API 的详细文档。 ### 回答2: GPT-3(Generative Pre-trained Transformer 3)是一种人工智能模型,具备极高的语言生成能力和智能对话能力。GPT-3的API接口调用可以帮助开发者将GPT-3集成到自己的应用程序中。 GPT-3 API接口调用的过程如下: 1. 注册:开发者需要在OpenAI官方网站上注册一个账号,并且申请API密钥。经过审核后,就可以获得访问GPT-3 API的权限。 2. 安装SDK:开发者可以根据自己的需求选择合适的SDK(软件开发工具包)来与GPT-3 API进行交互。目前,OpenAI官方支持多种编程语言的SDK,如Python、JavaScript等。 3. 配置环境:安装SDK后,需要根据官方文档的指示,进行相应的环境配置。这包括设置API密钥、安装相关依赖库等。 4. 创建API实例:在代码中,开发者需要创建一个GPT-3 API的实例对象,并通过传入API密钥等参数进行初始化。 5. 发起请求:调用实例对象的方法,向GPT-3 API发起请求。请求中包含输入的文本/问题等信息。 6. 处理响应:GPT-3 API会返回一个生成的文本作为响应。开发者可以对响应进行处理,提取所需信息等。 7. 优化和调试:在实际使用中,可能需要调整请求的参数、优化代码逻辑,以提升响应的质量和速度。 需要注意的是,GPT-3目前还处于测试阶段,OpenAI官方可能会对API进行调整和更新。因此,开发者应该及时关注官方文档和更新,以确保API调用的准确性和可用性。 总的来说,GPT-3 API接口调用是通过SDK与API进行交互,通过发送请求获取智能的语言生成和对话功能。这为开发者提供了一个强大的工具,可以应用于各种文本生成和自然语言处理的场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值