网站首页 > 文章中心 > 其它

go语言测试框架

作者:小编 更新时间:2023-09-28 08:40:59 浏览量:269人看过

Golang web 框架对比

由于 golang 提供了完善的net/http标准库,基于该标准库实现一个web框架的难度相比其他语言低了不少,所以go web框架简直就是百花齐放.从老牌的revel和 beego ,到新出的 gin ,和 iris 等,而且还有一些类似于 chi 这种router.个人一般小项目,尤其是中间件需要暴露一些http接口的,基本就使用chi即可.

本次测试主要是gin iris echo 这三个框架.侧重在于高性能,从并发和json序列化和反序列化两个方面来测评,毕竟后台项目侧重的也就是这两个方面.

为了选择符合重IO的框架,现设定如下场景的demo,demo的具体要求如下:

gin:

iris:

go语言测试框架-图1

echo:

综合以上各个测试结果可以看出,gin以及iris都是非常优秀的框架,gin的优势比其他稍微大点,iris次之,而echo相应差一点.

另外欢迎大家试用和star另外一个web框架 baa ,为了避嫌我没有贴出baa的数据,性能测试处于gin之后和iris之间.

Go语言使用gorm对MySQL进行性能测试

go语言测试框架-图2

之前写过了Go语言gorm框架MySQL实践,其中对gorm框架在操作MySQL的各种基础实践,下面分享一下如何使用gorm框架对MySQL直接进行性能测试的简单实践.

这里我使用了一个原始的Go语言版本的 FunTester 测试框架,现在只有一个基本的方法,实在是因为Go语言特性太强了.框架设计的主要思路之一就是利用Go语言的闭包和方法参数特性,将一个 func() 当做性能测试的主题,通过不断运行这个 func() 来实现性能测试.当然还有另外一个思路就是运行一个多线程任务类,类似 Java 版本的 com.funtester.base.constaint.ThreadBase 抽象类,这样可以设置一些类的属性,绑定一些测试资源,适配更多的测试场景.

下面演示select的性能测试,这里我用了随机ID查询的场景.

这里使用了select的用例部分,随机ID,然后更新name字段,随机10个长度的字符串.

这里用到了 FunTester 字段都是随机生成.

到这里可以看出,性能测试框架用到的都是gorm框架的基础API使用,这里MySQL连接池的管理工作完全交给了gorm框架完成,看资料说非常牛逼,我们只需要设置几个参数.这个使用体现很像 HttpClient 设置 HTTP 连接池类似,这里我们也可以看出这些优秀的框架使用起来都是非常简单的.

PS:关于gorm的基础使用的请参考上一期的文章Go语言gorm框架MySQL实践.

golang性能测试框架k6源码分析

进入cobra框架后,我们直接查看getRunCmd,这个是命令run的入口,主要工作都是从这里开始.

重点关注初始化Runner,这个是通过js脚本,使用goja库解析后,生成的实际执行单元.

进入js目录,查看Runner的结构,runner.go

Runner有一些配置属性,另外还有方法,方法用lib.Runner的接口进行规范.

Runner有一个NewVU方法,里面定义了连接参数,实现api测试

返回主函数,在初始化完成Runner后,启动调度器,以及做结果收集

最终封装成一个engine

启动测试

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章