【青训营day4】软件测试流程 | 青训营笔记

68 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天

测试是避免事故的最后一道屏障

测试分为回归测试、集成测试、单元测试

单元测试

测试单元(测试对象):函数、模块等

流程:对测试单元进行输入,然后获取输出。将输出与期望做校对。

规则

所有测试文件以_test.go结尾
func TestXxx(*testing.T)
所有初始化逻辑放到TestMain

覆盖率

如何衡量代码是否经过了足够的测试? 如何评价项目的测试水准? 如何评估项目是否达到了高水准测试等级?

代码覆盖率

计算方式:测试经过的行数/代码总行数

一般覆盖率:50~60%
较高覆盖率:80%+
提高覆盖率:测试分支相互独立,全面覆盖。
测试单元粒度足够小,函数单一职责。

mock

为了防止存放在本地或云服务器上的测试使用的外部依赖,如输入内容

line11
line22
line33
line44
line55

被篡改或删除,可以使用mock来解决外部依赖被篡改的危险,此时不再依赖本地文件

使用mock来解决外部依赖,为测试函数打桩。

基准测试

优化代码,需要对当前代码分析。

内置的测试框架提供了基准测试的能力。

项目实战

需求描述

社区话题页面

要求:

展示话题(标题、文字描述)和回帖列表
暂不考虑前端页面实现,仅仅实现一个本地web服务
话题和回帖数据用文件存储

需求用例

浏览消费用户user 消费内容:topicpage中的topic和postlist

使用ER图来描述需求

分层结构

数据层:数据model,外部数据的增删改查 逻辑层:业务entiy,处理和谐业务逻辑输出 视图层:试图view,处理和外部的交互逻辑

组件工具

gin高性能web框架

gomod

repository-index

元数据 索引 数据行 内存map