如何使用通義靈碼完成PHP單元測試 - AI輔助開發(fā)教程

2025-03-27 18:38 更新

一、引言

在軟件開發(fā)過程中,測試是至關(guān)重要的一環(huán)。然而,在傳統(tǒng)開發(fā)中,測試常常被忽略或草草處理,很多時候并非開發(fā)人員故意為之,而是缺乏相應(yīng)的測試思路和方法,不知道如何設(shè)計測試用例。隨著 AI 技術(shù)的飛速發(fā)展,如今 AI 已經(jīng)能夠輔助我們進(jìn)行單元測試。本文將介紹如何使用通義靈碼來輔助進(jìn)行 PHP 的單元測試,幫助開發(fā)人員更高效地完成測試工作,提升代碼質(zhì)量和項目的穩(wěn)定性。


二、通義靈碼簡介

通義靈碼是由阿里云技術(shù)團(tuán)隊精心打造的智能編碼助手。它基于強(qiáng)大的通義大模型,為開發(fā)人員提供以下實用功能:

  • 代碼續(xù)寫和優(yōu)化:能夠根據(jù)現(xiàn)有代碼上下文,智能生成行級或函數(shù)級的代碼建議,幫助開發(fā)人員快速完成代碼編寫,并對代碼進(jìn)行優(yōu)化,提高代碼質(zhì)量和執(zhí)行效率。
  • 自然語言描述生成代碼:開發(fā)人員可以通過自然語言描述需求,通義靈碼能夠?qū)⑵滢D(zhuǎn)化為相應(yīng)的代碼,大大簡化了代碼編寫過程,尤其適用于復(fù)雜功能的實現(xiàn)。
  • 注釋生成和代碼解釋:自動為代碼添加詳細(xì)注釋,方便開發(fā)人員及團(tuán)隊成員更好地理解代碼邏輯和功能;同時,能夠?qū)Υa進(jìn)行詳細(xì)解釋,包括數(shù)據(jù)庫表結(jié)構(gòu)分析、SQL 查詢過程解析等,有助于代碼的維護(hù)和優(yōu)化。
  • 單元測試生成:根據(jù)代碼自動生成單元測試用例,確保代碼的可靠性和穩(wěn)定性,提高測試效率。
  • 研發(fā)智能問答:作為基礎(chǔ)和核心功能,開發(fā)人員可以通過與通義靈碼的問答對話,獲取所需的技術(shù)支持和解決方案,就像擁有一位智能的編程助手。
  • 代碼問題修復(fù):能夠識別代碼中的潛在問題,并提供修復(fù)建議,幫助開發(fā)人員及時解決代碼錯誤和漏洞。

通義靈碼官網(wǎng):https://tongyi.aliyun.com/lingma/

通義靈碼支持:JetBrains IDEs、Visual Studio Code、Visual Studio,及遠(yuǎn)程開發(fā)場景(Remote SSH、Docker、WSL、Web IDE),安裝后登錄賬號即可開始使用。

PHP的單元測試一般使用PHPunit進(jìn)行,PHP開發(fā)可以用的工具很多,但本文選擇使用PHPstorm,因為像PHPstorm這種重量級的IDE提供的測試支持會更好點。


三、環(huán)境配置

本文以 PHPStorm 為例,介紹通義靈碼的安裝方法,因為像 PHPStorm 這種重量級的 IDE 提供的測試支持更為完善。

PHPstorm的插件商店提供了通義靈碼的插件,我們可以直接在插件商店下載:

  1. 點擊頂部菜單欄的 File -> Settings(在 macOS 上為 PHPStorm -> Preferences)。
  2. 在設(shè)置窗口的左側(cè)菜單中選擇 Plugins,然后點擊 Marketplace。
  3. 在搜索框中輸入 “通義靈碼”,找到插件后點擊 Install 按鈕進(jìn)行安裝。
  4. 安裝完成后,重啟 PHPStorm 以完成插件的加載。 

PHPstorm 的安裝方式和 IDEA 的是一樣的,可以參考IntelliJ?IDEA?中安裝和使用通義靈碼?AI?編程助手教程


四、登錄操作

重啟 PHPstorm 后,在右側(cè)工具欄會看到 通義靈碼 的圖標(biāo)。點擊圖標(biāo)進(jìn)入插件界面。

注意:首次使用時,需要點擊登錄按鈕,瀏覽器會自動打開阿里云登錄頁面,完成登錄后即可返回 PHPStorm 使用通義靈碼。


五、推薦 AI 選擇

通義靈碼提供了多個 AI 大模型供調(diào)用,但在單元測試生成方面,qwq-plus 生成的測試用例會更詳細(xì)??梢栽谥悄軉柎疬x項上選擇該模型,后續(xù)的所有功能都會基于該模型進(jìn)行生成。


六、功能演示

(一)單個函數(shù)的單元測試生成

單元測試是最小的測試單位,通常針對函數(shù)或方法進(jìn)行。使用通義靈碼進(jìn)行單元測試十分簡單,只需選擇已寫好的代碼,右鍵選擇通義靈碼的生成單元測試功能,即可自動生成單元測試代碼。

之所以要選擇使用qwq-plus,是因為該模型生成的測試文檔很詳細(xì),包含了被測函數(shù)的分析

函數(shù)的分支分析

和測試用例的分析

同時提供了mock需求分析,最后并根據(jù)該方案給出了測試代碼

對于開發(fā)者而言,只需要把生成的測試代碼復(fù)制到專門的測試文件中,就可以使用PHPunit開始進(jìn)行測試了(因為PHP的單元測試一般使用PHPunit,代碼生成的剛好也是PHPunit,我們需要的也是PHPunit,這點剛好不需要進(jìn)行調(diào)整,如果是Python那種有多個測試框架可供選擇的,可以在智能問答中讓AI重新生成對應(yīng)測試框架的代碼)。


對類的單元測試生成

單元測試也可以對整個類進(jìn)行測試,實際上在測試管理中,一般會按類或者文件進(jìn)行分文件管理,比如在Java中,一個類對應(yīng)一個文件,一個類也對應(yīng)一個測試文件,PHP也可以這么進(jìn)行管理。

與之前單個函數(shù)的單元測試相同,我們選中整個類的代碼,然后右鍵選擇通義靈碼的生成單元測試

這次我們生成的單元測試是針對整個類的了,它會對每個方法進(jìn)行分析并生成對應(yīng)的測試用例。

注意,在項目開發(fā)中,應(yīng)將測試文件單獨存放在一個測試目錄,例如 Laravel 框架生成的項目結(jié)構(gòu)中就有專門用于放置測試文件的 tests 文件夾,可以將整個類的測試代碼存放在這里。


(三)使用智能問答完成測試驅(qū)動開發(fā)

在我們之前的功能介紹中,我們是先寫完代碼,再進(jìn)行測試,但在項目工程管理中有一種開發(fā)方式叫測試驅(qū)動開發(fā),這種開發(fā)方式是先寫單元測試代碼,最后再寫功能。在寫測試代碼的時候應(yīng)該把需求考慮清楚,根據(jù)需求進(jìn)行測試代碼的設(shè)計。

例如,我們想要完成一個樹的先序遍歷功能,我們需要知道函數(shù)的輸入有哪些可能,以這個案例為例,則是有哪些樹的情況,例如下所示

然后根據(jù)輸入情況,判斷會有哪些結(jié)果

我們還需要考慮一些極端條件

最后,根據(jù)這些結(jié)果,寫出對應(yīng)的測試代碼

到此測試設(shè)計部分就完成了,現(xiàn)在開發(fā)部分只需要設(shè)計出能夠通過這些測試的代碼即可!

是的,你可以看到上面給的流程,其實都是AI輔助生成的,我們只需要在智能問答中提出我們需要的函數(shù)的功能,讓AI生成對應(yīng)的測試代碼即可

我們之前提到過,在某個語言存在多個測試框架情況下,可能生成的測試代碼會與我們需要的不同的情況。比如我在這次提問的時候,AI給我的是Junit的單元測試代碼(這是Java的單元測試框架),我們可以通過重新提問,讓AI生成新的更符合我們要求的答案

(四)使用 AI 程序員幫助進(jìn)行測試

通義靈碼提供了 AI 程序員功能,可以將其視為一個虛擬的程序員。

在這里,也可以將其作為一個測試程序員使用,直接讓 AI 幫助測試某個類,并生成對應(yīng)的測試文件和測試方案。


七、總結(jié)與展望

通義靈碼作為一款智能編碼助手,為 PHP 單元測試提供了強(qiáng)大的支持。從單個函數(shù)到整個類的單元測試生成,再到智能問答輔助測試驅(qū)動開發(fā),以及 AI 程序員功能,它幾乎涵蓋了測試過程中的各個方面。通過本文的介紹,希望你能更好地理解和使用通義靈碼,提升測試效率和代碼質(zhì)量,確保項目的穩(wěn)定性和可靠性。隨著 AI 技術(shù)的不斷發(fā)展,相信通義靈碼將在未來的軟件開發(fā)測試領(lǐng)域發(fā)揮更加重要的作用。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號