“这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天”
3、测试
1 )回归测试:
手动通过终端回归一些固定的主流程场景;
2 )集成测试:
对系统功能维度做测试验证;
3 )单元测试:
开发者对单独的函数、模块做功能验证;
- 单元测试的覆盖率一定程度上决定着代码的质量;
3.1 单元测试
3.1.1 单元测试-规则
- Test开头,连接第一个字母大写
3.1.2 单元测试-覆盖率
3.1.3 单元测试-依赖
- 测试依赖本地文件;
3.2 Mock测试
- 通过Monkey,脱离本地测试文件依赖
下面是一个mock的使用样例,通过patch对Readfineline进行打桩mock,默认返回line110,
这里通过defer卸载mock,这样整个测试函数就摆脱了本地文件的依赖。
3.3 基准测试
Go语言还提供了基准测试框架,基准测试是指测试─段程序的运行性能及耗费CPU的程度。
而我们在实际项目开发中,经常会遇到代码性能瓶颈,为了定位问题经常要对代码做性能分析,这就用到了基准测试。
使用方法类似于单元测试,
- 1、一个例子,10台服务器负载均衡,随机选择服务器;
基准测试--运行
runparallel是多协程并发测试,其中基准测试有差别,
因为rand为了保证全局的随机性和并发安全,持有一把全局锁,影响效率;
基准测试---优化
高性能随机数方法fastrand;
主要思想是牺牲了一定的数列一致性;大多数场景是适用的;