如何使用通义灵码完成PHP单元测试 - AI辅助开发教程

2025-03-27 18:38 更新

一、引言

在软件开发过程中,测试是至关重要的一环。然而,在传统开发中,测试常常被忽略或草草处理,很多时候并非开发人员故意为之,而是缺乏相应的测试思路和方法,不知道如何设计测试用例。随着 AI 技术的飞速发展,如今 AI 已经能够辅助我们进行单元测试。本文将介绍如何使用通义灵码来辅助进行 PHP 的单元测试,帮助开发人员更高效地完成测试工作,提升代码质量和项目的稳定性。


二、通义灵码简介

通义灵码是由阿里云技术团队精心打造的智能编码助手。它基于强大的通义大模型,为开发人员提供以下实用功能:

  • 代码续写和优化:能够根据现有代码上下文,智能生成行级或函数级的代码建议,帮助开发人员快速完成代码编写,并对代码进行优化,提高代码质量和执行效率。
  • 自然语言描述生成代码:开发人员可以通过自然语言描述需求,通义灵码能够将其转化为相应的代码,大大简化了代码编写过程,尤其适用于复杂功能的实现。
  • 注释生成和代码解释:自动为代码添加详细注释,方便开发人员及团队成员更好地理解代码逻辑和功能;同时,能够对代码进行详细解释,包括数据库表结构分析、SQL 查询过程解析等,有助于代码的维护和优化。
  • 单元测试生成:根据代码自动生成单元测试用例,确保代码的可靠性和稳定性,提高测试效率。
  • 研发智能问答:作为基础和核心功能,开发人员可以通过与通义灵码的问答对话,获取所需的技术支持和解决方案,就像拥有一位智能的编程助手。
  • 代码问题修复:能够识别代码中的潜在问题,并提供修复建议,帮助开发人员及时解决代码错误和漏洞。

通义灵码官网:https://tongyi.aliyun.com/lingma/

通义灵码支持:JetBrains IDEs、Visual Studio Code、Visual Studio,及远程开发场景(Remote SSH、Docker、WSL、Web IDE),安装后登录账号即可开始使用。

PHP的单元测试一般使用PHPunit进行,PHP开发可以用的工具很多,但本文选择使用PHPstorm,因为像PHPstorm这种重量级的IDE提供的测试支持会更好点。


三、环境配置

本文以 PHPStorm 为例,介绍通义灵码的安装方法,因为像 PHPStorm 这种重量级的 IDE 提供的测试支持更为完善。

PHPstorm的插件商店提供了通义灵码的插件,我们可以直接在插件商店下载:

  1. 点击顶部菜单栏的 File -> Settings(在 macOS 上为 PHPStorm -> Preferences)。
  2. 在设置窗口的左侧菜单中选择 Plugins,然后点击 Marketplace。
  3. 在搜索框中输入 “通义灵码”,找到插件后点击 Install 按钮进行安装。
  4. 安装完成后,重启 PHPStorm 以完成插件的加载。 

PHPstorm 的安装方式和 IDEA 的是一样的,可以参考IntelliJ IDEA 中安装和使用通义灵码 AI 编程助手教程


四、登录操作

重启 PHPstorm 后,在右侧工具栏会看到 通义灵码 的图标。点击图标进入插件界面。

注意:首次使用时,需要点击登录按钮,浏览器会自动打开阿里云登录页面,完成登录后即可返回 PHPStorm 使用通义灵码。


五、推荐 AI 选择

通义灵码提供了多个 AI 大模型供调用,但在单元测试生成方面,qwq-plus 生成的测试用例会更详细。可以在智能问答选项上选择该模型,后续的所有功能都会基于该模型进行生成。


六、功能演示

(一)单个函数的单元测试生成

单元测试是最小的测试单位,通常针对函数或方法进行。使用通义灵码进行单元测试十分简单,只需选择已写好的代码,右键选择通义灵码的生成单元测试功能,即可自动生成单元测试代码。

之所以要选择使用qwq-plus,是因为该模型生成的测试文档很详细,包含了被测函数的分析

函数的分支分析

和测试用例的分析

同时提供了mock需求分析,最后并根据该方案给出了测试代码

对于开发者而言,只需要把生成的测试代码复制到专门的测试文件中,就可以使用PHPunit开始进行测试了(因为PHP的单元测试一般使用PHPunit,代码生成的刚好也是PHPunit,我们需要的也是PHPunit,这点刚好不需要进行调整,如果是Python那种有多个测试框架可供选择的,可以在智能问答中让AI重新生成对应测试框架的代码)。


对类的单元测试生成

单元测试也可以对整个类进行测试,实际上在测试管理中,一般会按类或者文件进行分文件管理,比如在Java中,一个类对应一个文件,一个类也对应一个测试文件,PHP也可以这么进行管理。

与之前单个函数的单元测试相同,我们选中整个类的代码,然后右键选择通义灵码的生成单元测试

这次我们生成的单元测试是针对整个类的了,它会对每个方法进行分析并生成对应的测试用例。

注意,在项目开发中,应将测试文件单独存放在一个测试目录,例如 Laravel 框架生成的项目结构中就有专门用于放置测试文件的 tests 文件夹,可以将整个类的测试代码存放在这里。


(三)使用智能问答完成测试驱动开发

在我们之前的功能介绍中,我们是先写完代码,再进行测试,但在项目工程管理中有一种开发方式叫测试驱动开发,这种开发方式是先写单元测试代码,最后再写功能。在写测试代码的时候应该把需求考虑清楚,根据需求进行测试代码的设计。

例如,我们想要完成一个树的先序遍历功能,我们需要知道函数的输入有哪些可能,以这个案例为例,则是有哪些树的情况,例如下所示

然后根据输入情况,判断会有哪些结果

我们还需要考虑一些极端条件

最后,根据这些结果,写出对应的测试代码

到此测试设计部分就完成了,现在开发部分只需要设计出能够通过这些测试的代码即可!

是的,你可以看到上面给的流程,其实都是AI辅助生成的,我们只需要在智能问答中提出我们需要的函数的功能,让AI生成对应的测试代码即可

我们之前提到过,在某个语言存在多个测试框架情况下,可能生成的测试代码会与我们需要的不同的情况。比如我在这次提问的时候,AI给我的是Junit的单元测试代码(这是Java的单元测试框架),我们可以通过重新提问,让AI生成新的更符合我们要求的答案

(四)使用 AI 程序员帮助进行测试

通义灵码提供了 AI 程序员功能,可以将其视为一个虚拟的程序员。

在这里,也可以将其作为一个测试程序员使用,直接让 AI 帮助测试某个类,并生成对应的测试文件和测试方案。


七、总结与展望

通义灵码作为一款智能编码助手,为 PHP 单元测试提供了强大的支持。从单个函数到整个类的单元测试生成,再到智能问答辅助测试驱动开发,以及 AI 程序员功能,它几乎涵盖了测试过程中的各个方面。通过本文的介绍,希望你能更好地理解和使用通义灵码,提升测试效率和代码质量,确保项目的稳定性和可靠性。随着 AI 技术的不断发展,相信通义灵码将在未来的软件开发测试领域发挥更加重要的作用。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号