W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在軟件開(kāi)發(fā)過(guò)程中,測(cè)試是至關(guān)重要的一環(huán)。然而,在傳統(tǒng)開(kāi)發(fā)中,測(cè)試常常被忽略或草草處理,很多時(shí)候并非開(kāi)發(fā)人員故意為之,而是缺乏相應(yīng)的測(cè)試思路和方法,不知道如何設(shè)計(jì)測(cè)試用例。隨著 AI 技術(shù)的飛速發(fā)展,如今 AI 已經(jīng)能夠輔助我們進(jìn)行單元測(cè)試。本文將介紹如何使用通義靈碼來(lái)輔助進(jìn)行 PHP 的單元測(cè)試,幫助開(kāi)發(fā)人員更高效地完成測(cè)試工作,提升代碼質(zhì)量和項(xiàng)目的穩(wěn)定性。
通義靈碼是由阿里云技術(shù)團(tuán)隊(duì)精心打造的智能編碼助手。它基于強(qiáng)大的通義大模型,為開(kāi)發(fā)人員提供以下實(shí)用功能:
通義靈碼官網(wǎng):https://tongyi.aliyun.com/lingma/
通義靈碼支持:JetBrains IDEs、Visual Studio Code、Visual Studio,及遠(yuǎn)程開(kāi)發(fā)場(chǎng)景(Remote SSH、Docker、WSL、Web IDE),安裝后登錄賬號(hào)即可開(kāi)始使用。
PHP的單元測(cè)試一般使用PHPunit進(jìn)行,PHP開(kāi)發(fā)可以用的工具很多,但本文選擇使用PHPstorm,因?yàn)橄馪HPstorm這種重量級(jí)的IDE提供的測(cè)試支持會(huì)更好點(diǎn)。
本文以 PHPStorm 為例,介紹通義靈碼的安裝方法,因?yàn)橄?PHPStorm 這種重量級(jí)的 IDE 提供的測(cè)試支持更為完善。
PHPstorm的插件商店提供了通義靈碼的插件,我們可以直接在插件商店下載:
安裝完成后,重啟 PHPStorm 以完成插件的加載。
PHPstorm 的安裝方式和 IDEA 的是一樣的,可以參考IntelliJ?IDEA?中安裝和使用通義靈碼?AI?編程助手教程。
重啟 PHPstorm 后,在右側(cè)工具欄會(huì)看到 通義靈碼 的圖標(biāo)。點(diǎn)擊圖標(biāo)進(jìn)入插件界面。
注意:首次使用時(shí),需要點(diǎn)擊登錄按鈕,瀏覽器會(huì)自動(dòng)打開(kāi)阿里云登錄頁(yè)面,完成登錄后即可返回 PHPStorm 使用通義靈碼。
通義靈碼提供了多個(gè) AI 大模型供調(diào)用,但在單元測(cè)試生成方面,qwq-plus 生成的測(cè)試用例會(huì)更詳細(xì)。可以在智能問(wèn)答選項(xiàng)上選擇該模型,后續(xù)的所有功能都會(huì)基于該模型進(jìn)行生成。
單元測(cè)試是最小的測(cè)試單位,通常針對(duì)函數(shù)或方法進(jìn)行。使用通義靈碼進(jìn)行單元測(cè)試十分簡(jiǎn)單,只需選擇已寫(xiě)好的代碼,右鍵選擇通義靈碼的生成單元測(cè)試功能,即可自動(dòng)生成單元測(cè)試代碼。
之所以要選擇使用qwq-plus,是因?yàn)樵撃P蜕傻臏y(cè)試文檔很詳細(xì),包含了被測(cè)函數(shù)的分析
函數(shù)的分支分析
和測(cè)試用例的分析
同時(shí)提供了mock需求分析,最后并根據(jù)該方案給出了測(cè)試代碼
對(duì)于開(kāi)發(fā)者而言,只需要把生成的測(cè)試代碼復(fù)制到專門(mén)的測(cè)試文件中,就可以使用PHPunit開(kāi)始進(jìn)行測(cè)試了(因?yàn)镻HP的單元測(cè)試一般使用PHPunit,代碼生成的剛好也是PHPunit,我們需要的也是PHPunit,這點(diǎn)剛好不需要進(jìn)行調(diào)整,如果是Python那種有多個(gè)測(cè)試框架可供選擇的,可以在智能問(wèn)答中讓AI重新生成對(duì)應(yīng)測(cè)試框架的代碼)。
單元測(cè)試也可以對(duì)整個(gè)類進(jìn)行測(cè)試,實(shí)際上在測(cè)試管理中,一般會(huì)按類或者文件進(jìn)行分文件管理,比如在Java中,一個(gè)類對(duì)應(yīng)一個(gè)文件,一個(gè)類也對(duì)應(yīng)一個(gè)測(cè)試文件,PHP也可以這么進(jìn)行管理。
與之前單個(gè)函數(shù)的單元測(cè)試相同,我們選中整個(gè)類的代碼,然后右鍵選擇通義靈碼的生成單元測(cè)試
這次我們生成的單元測(cè)試是針對(duì)整個(gè)類的了,它會(huì)對(duì)每個(gè)方法進(jìn)行分析并生成對(duì)應(yīng)的測(cè)試用例。
注意,在項(xiàng)目開(kāi)發(fā)中,應(yīng)將測(cè)試文件單獨(dú)存放在一個(gè)測(cè)試目錄,例如 Laravel 框架生成的項(xiàng)目結(jié)構(gòu)中就有專門(mén)用于放置測(cè)試文件的 tests 文件夾,可以將整個(gè)類的測(cè)試代碼存放在這里。
在我們之前的功能介紹中,我們是先寫(xiě)完代碼,再進(jìn)行測(cè)試,但在項(xiàng)目工程管理中有一種開(kāi)發(fā)方式叫測(cè)試驅(qū)動(dòng)開(kāi)發(fā),這種開(kāi)發(fā)方式是先寫(xiě)單元測(cè)試代碼,最后再寫(xiě)功能。在寫(xiě)測(cè)試代碼的時(shí)候應(yīng)該把需求考慮清楚,根據(jù)需求進(jìn)行測(cè)試代碼的設(shè)計(jì)。
例如,我們想要完成一個(gè)樹(shù)的先序遍歷功能,我們需要知道函數(shù)的輸入有哪些可能,以這個(gè)案例為例,則是有哪些樹(shù)的情況,例如下所示
然后根據(jù)輸入情況,判斷會(huì)有哪些結(jié)果
我們還需要考慮一些極端條件
最后,根據(jù)這些結(jié)果,寫(xiě)出對(duì)應(yīng)的測(cè)試代碼
到此測(cè)試設(shè)計(jì)部分就完成了,現(xiàn)在開(kāi)發(fā)部分只需要設(shè)計(jì)出能夠通過(guò)這些測(cè)試的代碼即可!
是的,你可以看到上面給的流程,其實(shí)都是AI輔助生成的,我們只需要在智能問(wèn)答中提出我們需要的函數(shù)的功能,讓AI生成對(duì)應(yīng)的測(cè)試代碼即可
我們之前提到過(guò),在某個(gè)語(yǔ)言存在多個(gè)測(cè)試框架情況下,可能生成的測(cè)試代碼會(huì)與我們需要的不同的情況。比如我在這次提問(wèn)的時(shí)候,AI給我的是Junit的單元測(cè)試代碼(這是Java的單元測(cè)試框架),我們可以通過(guò)重新提問(wèn),讓AI生成新的更符合我們要求的答案
通義靈碼提供了 AI 程序員功能,可以將其視為一個(gè)虛擬的程序員。
在這里,也可以將其作為一個(gè)測(cè)試程序員使用,直接讓 AI 幫助測(cè)試某個(gè)類,并生成對(duì)應(yīng)的測(cè)試文件和測(cè)試方案。
通義靈碼作為一款智能編碼助手,為 PHP 單元測(cè)試提供了強(qiáng)大的支持。從單個(gè)函數(shù)到整個(gè)類的單元測(cè)試生成,再到智能問(wèn)答輔助測(cè)試驅(qū)動(dòng)開(kāi)發(fā),以及 AI 程序員功能,它幾乎涵蓋了測(cè)試過(guò)程中的各個(gè)方面。通過(guò)本文的介紹,希望你能更好地理解和使用通義靈碼,提升測(cè)試效率和代碼質(zhì)量,確保項(xiàng)目的穩(wěn)定性和可靠性。隨著 AI 技術(shù)的不斷發(fā)展,相信通義靈碼將在未來(lái)的軟件開(kāi)發(fā)測(cè)試領(lǐng)域發(fā)揮更加重要的作用。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: