真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語(yǔ)言接口測(cè)試工具 go語(yǔ)言開(kāi)發(fā)工具

【接口測(cè)試】Go語(yǔ)言進(jìn)行簡(jiǎn)單的接口測(cè)試

在正常的測(cè)試中,當(dāng)我們需要進(jìn)行接口測(cè)試時(shí),通常使用接口調(diào)試工具,如postman進(jìn)行接口測(cè)試

創(chuàng)新互聯(lián)建站是一家專(zhuān)業(yè)提供遼源企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)H5網(wǎng)站設(shè)計(jì)、小程序制作等業(yè)務(wù)。10年已為遼源眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)的建站公司優(yōu)惠進(jìn)行中。

目前我在嘗試使用Go語(yǔ)言進(jìn)行接口測(cè)試,使用的庫(kù)均為Go自帶的庫(kù)。

注:當(dāng)前采用的接口為時(shí)事新聞接口,每天可以請(qǐng)求100次,需要的同學(xué),可以自行使用。

Go語(yǔ)言-一個(gè)簡(jiǎn)單的MockServer實(shí)現(xiàn)

用于在開(kāi)發(fā)階段,服務(wù)端接口沒(méi)有正式完成之前,模擬接口請(qǐng)求,便于客戶(hù)端測(cè)試。

建立一個(gè)文件夾(Config),放置所有的接口文件

將接口按如下json格式存儲(chǔ)到成文件,一個(gè)接口對(duì)應(yīng)一個(gè)文件

如登錄接口:./Config/login.json

定義接口

讀取所有的接口配置文件

Go語(yǔ)言有什么好用的IDE嗎

我喜歡jetbrains系列的IDE+go插件。不過(guò)我要說(shuō)的是這個(gè)問(wèn)題主要看你的觀(guān)點(diǎn)如何。

說(shuō)eclipse:

構(gòu)建方式是使用go install 命令,每一次編譯運(yùn)行都是go install。這樣的好處就是如果你有很多的包,下載下來(lái)并沒(méi)有編譯,這樣每次編譯速度是很快的。而且(?。ゞo install 符合go官方的項(xiàng)目結(jié)構(gòu),官方說(shuō)過(guò)了,一個(gè)go的項(xiàng)目應(yīng)該是以個(gè)gopath,包含src,pkg,bin三個(gè)主要目錄。所以說(shuō)go install個(gè)人認(rèn)為才是主要的go編譯方式。

說(shuō)eclipse的缺點(diǎn):

其實(shí)eclipse插件的go編譯方式,還有目錄結(jié)構(gòu),項(xiàng)目結(jié)構(gòu),都是非常完美的?。。?!真的很完美!可是,他的代碼提示,太差件!大括號(hào)都不能自動(dòng)補(bǔ)全,gdb 32bit 64bit兼容問(wèn)題,eclipseC++ 沒(méi)有html js插件,需要手動(dòng)安裝,幾乎不能開(kāi)箱即用。不過(guò)如果你是開(kāi)發(fā)算法,數(shù)據(jù)處理,還是推薦eclipse的,畢竟其他都無(wú)關(guān)緊要。

說(shuō)jetbrains:

說(shuō)先說(shuō)clione肯定不適合,新建項(xiàng)目沒(méi)有向?qū)?,?dǎo)致改成go項(xiàng)目各種不開(kāi)心,比如圖標(biāo)對(duì)于我來(lái)說(shuō)就無(wú)法接受go lib 不是小耗子~這是次要的,重要的是各個(gè)文件都是灰色的(沒(méi)有在cmake中包含的結(jié)果),然后說(shuō)剩下的,phpstorm這個(gè)不說(shuō)了,估計(jì)很少有人插件按在這里,webstorm,體驗(yàn)也不是很好,idea?體驗(yàn)很好,可是畢竟比較重,尤其是現(xiàn)在加入了自家的K啥玩意(無(wú)意冒犯,沒(méi)記住單詞)~可是話(huà)說(shuō)回來(lái),go跟C系列IDE配合才是最佳,跟java系列一點(diǎn)不搭關(guān)系,用idea似乎有點(diǎn)格格不入,但是!idea支持新建項(xiàng)目向?qū)?,lib的圖標(biāo)也很清晰,最后還是選擇idea吧,期待clion的強(qiáng)大起來(lái)!

再說(shuō)jetbrains系列缺點(diǎn):

插件的構(gòu)建方式是go buiild 這個(gè)讓人很不爽,我們幾乎不確定會(huì)構(gòu)建到什么地方去,還要每次設(shè)置一下run配置。這個(gè)可能無(wú)關(guān)緊要,畢竟不是什么大的毛病,可是go build不能緩存.a文件,直接構(gòu)建的結(jié)果就是很多第三方包的情況下很慢!所以建議安裝包的時(shí)候手動(dòng)install 一下解決這個(gè)問(wèn)題。自帶代碼格式化,這個(gè)格式化跟go 格格不入,總的來(lái)說(shuō)就是蛋疼,心碎,菊花癢。

最后說(shuō)liteIDE:

輕量級(jí)IDE,我可以說(shuō)是國(guó)人GO偉大作品典范,然而默認(rèn)構(gòu)建也是go build,項(xiàng)目管理方式不符合go官方標(biāo)準(zhǔn)。代碼提示不能自動(dòng)導(dǎo)入(eclipse也不能),不過(guò)如果你的項(xiàng)目是以包為單位的,那么另當(dāng)別論。一定很不錯(cuò),畢竟是輕量級(jí)專(zhuān)門(mén)針對(duì)GO的IDE!

說(shuō)這些,其實(shí)還有很大一部分取決于你的項(xiàng)目是用vendor機(jī)制管理,還是godeps機(jī)制管理依賴(lài)關(guān)系。go不像java擁有強(qiáng)大的幾乎天下一統(tǒng)的maven(無(wú)意冒犯,暫不評(píng)價(jià)其他構(gòu)建套件)。

go沒(méi)有官方包倉(cāng)庫(kù)。

go沒(méi)有官方包管理工具。

go沒(méi)有官方自動(dòng)化構(gòu)建套件。

上面三個(gè)沒(méi)有是致命要害。導(dǎo)致民間各種百花齊放。

說(shuō)說(shuō)我的項(xiàng)目怎么管理

gpm 一個(gè)shell工具(windows下你可以用git的bash,或者cygwin~)

我是嚴(yán)格艷照官方推薦方式管理go項(xiàng)目,一個(gè)go項(xiàng)目一個(gè)gopath。系統(tǒng)的gopath只是為了安裝go命令,我沒(méi)有配置gobin,意義不大。

項(xiàng)目的依賴(lài)跟我的代碼包都在src下(非vendor)

vendor用來(lái)存放包的特殊依賴(lài),發(fā)布項(xiàng)目直接把依賴(lài)包發(fā)布上去(公網(wǎng)管理則只上傳依賴(lài)關(guān)系文件 godeps文件)

資源文件等都放在src目錄同級(jí),編譯文件放在bin,引用直接../引用。

Go語(yǔ)言使用gorm對(duì)MySQL進(jìn)行性能測(cè)試

之前寫(xiě)過(guò)了Go語(yǔ)言gorm框架MySQL實(shí)踐,其中對(duì)gorm框架在操作MySQL的各種基礎(chǔ)實(shí)踐,下面分享一下如何使用gorm框架對(duì)MySQL直接進(jìn)行性能測(cè)試的簡(jiǎn)單實(shí)踐。

這里我使用了一個(gè)原始的Go語(yǔ)言版本的 FunTester 測(cè)試框架,現(xiàn)在只有一個(gè)基本的方法,實(shí)在是因?yàn)镚o語(yǔ)言特性太強(qiáng)了??蚣茉O(shè)計(jì)的主要思路之一就是利用Go語(yǔ)言的閉包和方法參數(shù)特性,將一個(gè) func() 當(dāng)做性能測(cè)試的主題,通過(guò)不斷運(yùn)行這個(gè) func() 來(lái)實(shí)現(xiàn)性能測(cè)試。當(dāng)然還有另外一個(gè)思路就是運(yùn)行一個(gè)多線(xiàn)程任務(wù)類(lèi),類(lèi)似 Java 版本的 com.funtester.base.constaint.ThreadBase 抽象類(lèi),這樣可以設(shè)置一些類(lèi)的屬性,綁定一些測(cè)試資源,適配更多的測(cè)試場(chǎng)景。

下面演示select的性能測(cè)試,這里我用了隨機(jī)ID查詢(xún)的場(chǎng)景。

這里我使用從35開(kāi)始遞增的ID進(jìn)行刪除。

這里使用了select的用例部分,隨機(jī)ID,然后更新name字段,隨機(jī)10個(gè)長(zhǎng)度的字符串。

這里用到了 FunTester 字段都是隨機(jī)生成。

到這里可以看出,性能測(cè)試框架用到的都是gorm框架的基礎(chǔ)API使用,這里MySQL連接池的管理工作完全交給了gorm框架完成,看資料說(shuō)非常牛逼,我們只需要設(shè)置幾個(gè)參數(shù)。這個(gè)使用體現(xiàn)很像 HttpClient 設(shè)置 HTTP 連接池類(lèi)似,這里我們也可以看出這些優(yōu)秀的框架使用起來(lái)都是非常簡(jiǎn)單的。

PS:關(guān)于gorm的基礎(chǔ)使用的請(qǐng)參考上一期的文章Go語(yǔ)言gorm框架MySQL實(shí)踐。

gRPC服務(wù)開(kāi)發(fā)和接口測(cè)試初探「Go」

之前寫(xiě)過(guò)了Grpc服務(wù)開(kāi)發(fā)和接口測(cè)試初探【Java】,中間耽擱了一些時(shí)間,Go版本的gRPC測(cè)試開(kāi)發(fā)實(shí)踐才有時(shí)間學(xué)習(xí)使用。其中也是由于自己Go語(yǔ)言不夠熟悉導(dǎo)致的。之前有段時(shí)間想暫時(shí)放棄Go語(yǔ)言的學(xué)習(xí),導(dǎo)致了Go的生疏,原因是從Groovy到Java性能。

回歸正題,Go語(yǔ)言版本的gRPC實(shí)踐相對(duì)Java來(lái)說(shuō)是比較簡(jiǎn)單的,但是總體的工具鏈?zhǔn)潜容^復(fù)雜的,可能是因?yàn)镚o生態(tài)目前相比Java還是比較匱乏吧。下面我先簡(jiǎn)述一下大致的步驟:

以上步驟親自操作可能會(huì)遇到一些小問(wèn)題,我本人搜到的教程什么的也是亂七八糟,踩了一些坑。我沒(méi)有整理出一個(gè)親自實(shí)踐之后的可行的教程,原因有二:

Go語(yǔ)言的gRPC的 proto 編寫(xiě)跟Java大致一致,只有一個(gè)報(bào)名的參數(shù)不太一樣。下面是我的 Hello.proto 內(nèi)容:

這里主要 go_package 網(wǎng)上搜到的配置方式有些不一樣,我沒(méi)有全都嘗試,大家在搜索的資料時(shí)候,盡量先看看 syntax 這個(gè)參數(shù)的值,以及文章教程寫(xiě)作的時(shí)間,如果距離現(xiàn)在太久了,我建議直接關(guān)掉。搜索引擎有過(guò)濾功能,可以過(guò)濾掉過(guò)時(shí)的教程。

這里Go語(yǔ)言gRPC的一點(diǎn)優(yōu)勢(shì),就是在一個(gè)項(xiàng)目中即可實(shí)現(xiàn),Java需要先弄一個(gè)SDK這樣。Go語(yǔ)言的gRPC的代碼可以通過(guò)生成代碼命令中的參數(shù)實(shí)現(xiàn)指定路徑。我是放在了和 proto 文件的同級(jí)目錄。

服務(wù)端代碼也是比較格式化的內(nèi)容,如下:

其中 pb.RegisterHelloServiceServer(s, Ser{}) 如果報(bào)錯(cuò),請(qǐng)檢查自己安裝的工具 protoc-gen-go 或者 protoc-gen-gofast 版本,一般提取報(bào)錯(cuò) message 搜索也能得到解決辦法。

下面是客戶(hù)端的代碼,由于學(xué)藝不精,其中大部分參數(shù)的含義目前我也不是很清楚,特別是基于 stream 的請(qǐng)求響應(yīng)的方式使用。后面我先把Java的學(xué)完,再回過(guò)頭來(lái)看Go的,按照這個(gè)順序?qū)W習(xí)和分享。

服務(wù)端輸出:

忘記打日志了。沒(méi)有輸出

客戶(hù)端輸出:

Go語(yǔ)言的gRPC測(cè)試開(kāi)發(fā)實(shí)踐已經(jīng)完事兒,大概率上我不會(huì)在工作中使用Go作為主力gRPC測(cè)試語(yǔ)言,后面測(cè)試實(shí)踐內(nèi)容還是會(huì)以Java為主。

GO語(yǔ)言(二十九):模糊測(cè)試(下)-

語(yǔ)料庫(kù)文件以特殊格式編碼。這是種子語(yǔ)料庫(kù)和生成語(yǔ)料庫(kù)的相同格式。

下面是一個(gè)語(yǔ)料庫(kù)文件的例子:

第一行用于通知模糊引擎文件的編碼版本。雖然目前沒(méi)有計(jì)劃未來(lái)版本的編碼格式,但設(shè)計(jì)必須支持這種可能性。

下面的每一行都是構(gòu)成語(yǔ)料庫(kù)條目的值,如果需要,可以直接復(fù)制到 Go 代碼中。

在上面的示例中,我們?cè)?a []byte后跟一個(gè)int64。這些類(lèi)型必須按順序與模糊測(cè)試參數(shù)完全匹配。這些類(lèi)型的模糊目標(biāo)如下所示:

指定您自己的種子語(yǔ)料庫(kù)值的最簡(jiǎn)單方法是使用該 (*testing.F).Add方法。在上面的示例中,它看起來(lái)像這樣:

但是,您可能有較大的二進(jìn)制文件,您不希望將其作為代碼復(fù)制到您的測(cè)試中,而是作為單獨(dú)的種子語(yǔ)料庫(kù)條目保留在 testdata/fuzz/{FuzzTestName} 目錄中。golang.org/x/tools/cmd/file2fuzz 上的file2fuzz工具可用于將這些二進(jìn)制文件轉(zhuǎn)換為為[]byte.

要使用此工具:

語(yǔ)料庫(kù)條目:語(yǔ)料庫(kù) 中的一個(gè)輸入,可以在模糊測(cè)試時(shí)使用。這可以是特殊格式的文件,也可以是對(duì) (*testing.F).Add。

覆蓋指導(dǎo): 一種模糊測(cè)試方法,它使用代碼覆蓋范圍的擴(kuò)展來(lái)確定哪些語(yǔ)料庫(kù)條目值得保留以備將來(lái)使用。

失敗的輸入:失敗的輸入是一個(gè)語(yǔ)料庫(kù)條目,當(dāng)針對(duì) 模糊目標(biāo)運(yùn)行時(shí)會(huì)導(dǎo)致錯(cuò)誤或恐慌。

fuzz target: 模糊測(cè)試的目標(biāo)功能,在模糊測(cè)試時(shí)對(duì)語(yǔ)料庫(kù)條目和生成的值執(zhí)行。它通過(guò)將函數(shù)傳遞給 (*testing.F).Fuzz實(shí)現(xiàn)。

fuzz test: 測(cè)試文件中的一個(gè)被命名為func FuzzXxx(*testing.F)的函數(shù),可用于模糊測(cè)試。

fuzzing: 一種自動(dòng)化測(cè)試,它不斷地操縱程序的輸入,以發(fā)現(xiàn)代碼可能容易受到的錯(cuò)誤或漏洞等問(wèn)題。

fuzzing arguments: 將傳遞給 模糊測(cè)試目標(biāo)的參數(shù),并由mutator進(jìn)行變異。

fuzzing engine: 一個(gè)管理fuzzing的工具,包括維護(hù)語(yǔ)料庫(kù)、調(diào)用mutator、識(shí)別新的覆蓋率和報(bào)告失敗。

生成的語(yǔ)料庫(kù): 由模糊引擎隨時(shí)間維護(hù)的語(yǔ)料庫(kù),同時(shí)模糊測(cè)試以跟蹤進(jìn)度。它存儲(chǔ)在$GOCACHE/fuzz 中。這些條目?jī)H在模糊測(cè)試時(shí)使用。

mutator: 一種在模糊測(cè)試時(shí)使用的工具,它在將語(yǔ)料庫(kù)條目傳遞給模糊目標(biāo)之前隨機(jī)操作它們。

package: 同一目錄下編譯在一起的源文件的集合。

種子語(yǔ)料庫(kù): 用戶(hù)提供的用于模糊測(cè)試的語(yǔ)料庫(kù),可用于指導(dǎo)模糊引擎。它由 f.Add 在模糊測(cè)試中調(diào)用提供的語(yǔ)料庫(kù)條目以及包內(nèi) testdata/fuzz/{FuzzTestName} 目錄中的文件組成。這些條目默認(rèn)使用go test運(yùn)行,無(wú)論是否進(jìn)行模糊測(cè)試。

測(cè)試文件: 格式為 xxx_test.go 的文件,可能包含測(cè)試、基準(zhǔn)、示例和模糊測(cè)試。

漏洞: 代碼中的安全敏感漏洞,可以被攻擊者利用。


文章標(biāo)題:go語(yǔ)言接口測(cè)試工具 go語(yǔ)言開(kāi)發(fā)工具
當(dāng)前地址:http://weahome.cn/article/hgcdph.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部