测试: 回归测试,集成测试,单元测试。从左到右,覆盖率逐层变大,成本却逐层降低
1. 单元测试
(1) 包括输入输出,测试单元,期望。其中测试单元可以是函数,模块等,对比输出与期望判断代码是否正确,可以保证服务质量,提高运行效率
(2) 规则
·测试文件后以_test.go结尾
·函数命名:func TestXxx(*testing.T)
·可以初始化逻辑放到TestMain:
Func TestMain(m *testing. M)
{
//测试前:数据装载、;配置初始化等
code := m,Run()// 测试代码
//测试后:释放资源等收尾工作
os.Exit(code)
}
(3) 覆盖率
测试代码时,应当完整地测试完所以代码,保证测试完备性
一般覆盖率:50%-06%,较高覆盖率为(资金类)80%
测试分支相互独立,全面覆盖
测试单元
(4) 依赖
外部依赖=》幂等(每次运行代码时case一样)稳定(单元测试可以相互隔离)
(5) Mock
利用打桩测试,就不在依赖本地文件
(6) 基准测试
项目实战:社区话题页面
需求:展示话题和回帖列表,实现一个本地web服务,话题和回帖数据用文件存储
1. 浏览消费用户
用户属性: 可用ER图-Entity Relationship Diagram
User{Topic, PostLIst}, Topic{属性},Postlist{属性}, Topic对Postlist是1对多地光系
2. 分层结构:
数据层:数据Model,外部数据地增删改查
逻辑层:业务Entity,处理核心业务逻辑输出
视图层:视图view,处理与外部的交互逻辑
3. 组件工具:可以通过GitHub进行下载安装使用
Gin高性能go web 框架
Go Mod