基于AI的接口测试实战

1.  基于AI的接口测试的重要性

      软件系统越来越趋向于采用微服务、服务化架构,系统的各个模块、组件之间通过API接口进行交互和集成。因此,确保这些API接口的正确性、可靠性和安全性对整个系统的质量至关重要。传统的手工测试接口的方式效率较低且容易受测试人员工作经验影响,已经无法满足现代软件开发的高效率和高质量要求。而基于人工智能(AI)技术的接口测试将极大提高测试的自动化、智能化水平。

1.1 接口测试的重要性

     接口测试作为软件测试的一个重要组成部分,其重要性主要体现在以下几个方面。

  1. 确保系统集成质量,现阶段软件系统通常是由多个组件或微服务构成的,它们通过API接口进行调用、交互。只有对这些API接口进行全面测试,才能够确保系统各模块之间的集成质量。
  2. 支持持续集成和交付,在持续集成和交付过程中,需要经常构建、部署和测试系统。API接口测试可以自动化执行,支持这些频繁的构建过程。
  3. 提高测试效率,与传统的UI测试相比,API接口测试更高效。它不必通过人工操作UI,而是直接调用API,执行速度更快。
  4. 支持并行测试,API接口测试可以轻松地实现并行化执行,从而充分利用硬件资源,加快测试速度。
  5. 发现潜在缺陷,对于一些UI上很难触发的场景,通过构造恰当的API请求数据,可能更容易发现潜在的缺陷和安全漏洞。
  6. 降低测试维护成本,与UI自动化测试相比,API接口测试的脚本通常更加简单和稳定,维护成本更低。
  7. 支持早期测试,在UI还未开发完成时,就可以针对已经实现的API接口开始进行测试,支持测试的更早介入软件研发过程。

       总之,随着软件架构的发展和敏捷实践的推广,API接口测试占据了越来越重要的地位。而引入AI技术将使API接口测试的效率、智能化水平得到进一步提升。

1.2  AI技术在接口测试中的应用前景

      人工智能(AI)技术在接口测试领域有着巨大的应用前景,它将从根本上改变接口测试的流程和方式,提升测试的自动化和智能化水平。以下是AI技术在接口测试中的一些主要应用前景。

  1. 自动生成测试用例,利用自然语言处理(NLP)和机器学习等AI技术,可以从API文档、需求说明等非结构化数据中自动提取测试场景和测试数据,智能生成测试用例,减轻测试人员的工作负担。
  2. 智能测试设计和优化,通过分析历史缺陷数据、代码复杂度等信息,AI算法能够优化测试策略,合理安排测试用例执行优先级,聚焦高风险区域,从而提高测试覆盖率和发现缺陷的效率。
  3. 自动生成测试脚本,根据生成的测试用例,AI工具可以自动生成对应的测试脚本,支持多种编程语言和测试框架,免去了人工编码的繁琐流程。
  4. 模糊测试和安全漏洞检测,基于AI的模糊测试引擎能够智能构造各种异常和恶意输入数据,模拟真实的攻击场景,从而发现API接口的安全漏洞和边界缺陷。
  5. 持续测试与回归测试,AI能够持续监控API的变化,识别新增或修改的接口,自动更新测试用例和测试脚本,确保测试的持续性和回归质量。
  6. 测试报告自动生成与分析,借助NLP技术,AI系统能够自动生成易于理解的测试报告,并对报告内容进行分析,提出优化建议,减轻测试人员的分析负担。
  7. 测试过程智能优化,通过分析测试执行数据和上下文信息,AI系统可以自动调整测试执行策略,提高测试资源的利用效率,智能优化整个测试过程。

      总之,AI技术将全方位赋能接口测试,推动测试向自动化、智能化的方向发展,这也是未来软件测试发展的必然趋势。测试人员需要主动拥抱AI技术,适应新的测试范式,提高工作效率和价值创造能力。

2 接口测试和性能测试案例环境的搭建

       “纸上得来终觉浅,绝知此事要躬行”,理论必须要与实践相结合。在本节笔者将详细讲解如何搭建一个旅行机票订购系统,它将作为后续接口测试与性能测试的案例系统。

2.1 案例下载

    下载 “WebTours.rar”文件,解压后可以看到如图1所示内容。

图1  案例压缩包解压后的内容

2.2 案例部署

    双击 “strawberry-perl-5.10.1.0.msi”文件,将出现Perl安装界面,如图2所示。

图2  Perl安装界面-许可协议

       选中“I accept the terms in the License Agreement”复选框,单击“Install”按钮。将出现图3所示界面,单击“Finish”按钮,就完成了Perl的安装。

图3  Perl安装界面-安装完成

2.3 案例启动

      进入“WebTours”文件夹,找到“StartServer.bat”文件,双击该文件即可运行案例程序,如图4所示。

图4  案例启动批处理文件

        执行批处理文件后,将出现图5所示命令行控制台窗口,使用CTRL+C组合键则关闭窗口,终止案例程序运行。

图5  案例启动后出现的命令行窗口

      案例服务启动后,在浏览器输入“http://IP:端口号/webtours”来访问案例,默认端口号为“1080”。因为笔者将案例部署在本机,所以访问地址为“http://127.0.0.1:1080/webtours”,如图6所示。切记,服务运行期间不可关闭命令行控制台窗口,否则,案例程序将不能提供正常服务。

图6  案例程序界面信息

      如果在案例部署过程中遇到端口号冲突的问题,则需要编辑位于“WebTours\conf”子目录下的“httpd.conf”文件,将端口号修改为一个未发生冲突的值,如图7所示。

图7  httpd.conf 文件中的端口配置信息

3 ChatGPT生成接口文档实践案例

       笔者并不是开发人员所以不能提供一个接口文档给大家。但是,可以结合旅行机票订购系统的功能,整理出相关信息来让ChatGPT帮我们生成符合OpenAPI 3.0格式的YAML格式接口文档。事实上,生成接口文档的方法有很多,如:研发手工编写、利用Swagger、Postman等工具和利用ChatGPT都可以做这件事儿。在此仅针对利用ChatGPT生成接口文档进行介绍,其它两种方法不予赘述。

      以旅行机票订购系统的用户注册功能为例,用户注册的界面,如图8所示。

图8  用户注册的界面

在本案例中,笔者准备的接口关键信息如下所示。

接口名称:用户注册接口

接口描述:新用户注册接口,注册内容包括:用户名、姓名、地址、邮编等。

请求地址:http://127.0.0.1:1080/cgi-bin/login.pl

请求方式:POST

请求体参数:

username         必填  用户名

password        必填  密码

passwordConfirm  必填  确认密码

firstName        选填  名字

lastName         选填 姓氏

address1         选填 街道地址

address2         选填 城市邮编

register.x       必填 注册x坐标

register.y       必填  注册y坐标

响应示例,如下所示。

1). 注册成功时,HTML格式页面并显示 Thank you ;

2). 密码不一致时,HTML格式页面并显示 Your password is invalid ;

3). 用户名重复注册时,HTML格式页面并显示 Your username is taken 。

        让ChatGPT将接口生成OpenAPI 3.0格式,便于项目组相关成员阅读。为什么要生成OpenAPI 3.0格式呢?笔者简单介绍一下OpenAPI 3.0。OpenAPI 3.0(又称为OpenAPI Specification 3.0或OAS 3.0)是一种规范,专门用于描述RESTful API。它是前一版本OpenAPI 2.0(之前称为Swagger)的升级版。OpenAPI 3.0的目标是提供更丰富的API文档和规范,以便开发人员更好地理解和使用API。这一规范采用JSON或YAML格式,因此易于阅读和编写。开发人员可以利用各种工具生成API文档,以更轻松地构建和维护API接口文档。这有助于提高API的可互操作性,促进不同开发团队之间的合作。

生成符合OpenAPI 3.0格式的旅行机票订购系统接口文档,笔者向ChatGPT发出如下提示词。

结合提供的下列信息,生成旅行机票订购系统接口文档,要求接口文档符合OpenAPI 3.0格式。每种响应示例,需要单独处理。
“
接口名称:用户注册接口
接口描述:新用户注册接口,注册内容包括:用户名、姓名、地址、邮编等。
请求地址:http://127.0.0.1:1080/cgi-bin/login.pl
请求方式:POST
请求体参数:
username         必填  用户名
password	     必填  密码
passwordConfirm  必填  确认密码
firstName	      选填  名字
lastName	      选填 姓氏
address1	      选填 街道地址
address2	      选填 城市邮编
register.x	      必填 注册x坐标
register.y	      必填  注册y坐标

响应示例:
1). 注册成功时,HTML格式页面并包含 Thank you ;
2). 密码不一致时,HTML格式页面并包含 Your password is invalid ;
3). 用户名重复注册时,HTML格式页面并包含 Your username is taken 。
”

 

    ChatGPT的响应内容如下所示。

openapi: 3.0.0
info:
  title: 旅行机票订购系统接口文档
  description: 本文档描述了旅行机票订购系统的API接口信息。
  version: 1.0.0

paths:
  /cgi-bin/login.pl:
    post:
      summary: 用户注册接口
      description: 新用户注册接口,注册内容包括:用户名、姓名、地址、邮编等。
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  type: string
                  description: 用户名
                  example: user123
                password:
                  type: string
                  description: 密码
                  example: password123
                passwordConfirm:
                  type: string
                  description: 确认密码
                  example: password123
                firstName:
                  type: string
                  description: 名字
                  example: John
                lastName:
                  type: string
                  description: 姓氏
                  example: Doe
                address1:
                  type: string
                  description: 街道地址
                  example: 123 Main St
                address2:
                  type: string
                  description: 城市邮编
                  example: 12345
                register.x:
                  type: number
                  description: 注册x坐标
                  example: 100
                register.y:
                  type: number
                  description: 注册y坐标
                  example: 50
      responses:
        '200':
          description: 注册成功
          content:
            text/html:
              schema:
                type: string
                example: Thank you
        '400':
          description: 请求错误,密码不一致
          content:
            text/html:
              schema:
                type: string
                example: Your password is invalid
        '409':
          description: 请求错误,用户名重复注册
          content:
            text/html:
              schema:
                type: string
                example: Your username is taken

 

ChatGPT只用了几秒钟就生成了符合OpenAPI 3.0格式规范的关于旅行机票订购系统用户注册YAML格式的接口文档。将这段代码复制到Swagger Editor中,可以正常展示,如图9所示。

图9  Swagger Editor展示用户注册接口文档内容

      无论使用哪种开发语言和开发框架,生成Swagger或OpenAPI 3.0文档的关键在于选择合适的工具和注解来描述API。

       接口文档的生成过程并重要,最关键的是确保生成的接口文档内容准确无误、简明清晰,能够让项目组相关人员一致地理解。在实际工作中,研发人员有时可能会修改API接口的代码,这可能导致接口参数、返回值等内容发生变化。在这种情况下,研发人员应该及时更新相关接口文档,以确保文档的准确性。

       一些企业可能面临没有接口文档的情况,这会给测试人员的接口测试工作带来困难。测试人员不仅需要分析接口的输入和输出,还需要负责编写接口文档。由于测试人员可能看不到程序的源代码,仅从分析得到的输入及输出来讲,这容易导致漏测情况的发生。因此,笔者建议接口文档的编写和维护工作应该由研发人员来负责,特别是在有了ChatGPT的辅助之后,编写接口文档不再是一项耗时的任务。有一些企业还开发了一些工具或平台,通过调用OpenAI提供的相关API接口来自动生成接口文档并发布,这极大地提高了研发及测试的工作效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试者家园

你的认同,是我深夜码字的光!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值