写点什么

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

  • 2025-04-11
    浙江
  • 本文字数:2602 字

    阅读完需:约 9 分钟

一、引言

在软件开发过程中,测试是至关重要的一环。然而,在传统开发中,测试常常被忽略或草草处理,很多时候并非开发人员故意为之,而是缺乏相应的测试思路和方法,不知道如何设计测试用例。随着 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 按钮进行安装。



  1. 安装完成后,重启 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 技术的不断发展,相信通义灵码将在未来的软件开发测试领域发挥更加重要的作用。

用户头像

阿里云云原生 2019-05-21 加入

还未添加个人简介

评论

发布
暂无评论
如何使用通义灵码完成PHP单元测试 - AI辅助开发教程_php_阿里巴巴云原生_InfoQ写作社区