规则
- 所有测试文件以_test.go结尾
- func TestXxx(*testing.T)
- 初始化逻辑放到TestMain中
覆盖率
- 如何衡量代码是否经过了足够的测试?
- 如何评价项目的测试水准?
- 如何评估项目是否达到了高水准测试等级?
- 测试覆盖率:测试覆盖率是衡量测试是否充分的一个重要指标。它表示代码中被测试覆盖的比例。通常,有三种常见的覆盖率衡量指标:语句覆盖率、分支覆盖率和路径覆盖率。较高的覆盖率通常意味着测试更全面,但也不意味着所有情况都被覆盖。
- Bug追踪系统:通过记录和追踪Bug的数量和解决情况,可以对测试覆盖率和代码质量进行初步评估。较少的Bug数量和及时的解决反映了测试和开发的有效性。
- 自动化测试:自动化测试可以提高测试效率和一致性。评估项目中的自动化测试比例,尤其是对核心功能和关键路径的覆盖程度,可以了解项目的测试水平。
- 集成测试和持续集成:集成测试是测试多个模块或组件的交互,而持续集成确保每次代码变更都被自动集成和测试。高水平的集成测试和持续集成流程有助于减少集成问题和快速发现Bug。
- 用户反馈:收集用户的反馈和Bug报告是另一个评估项目测试水平的重要方式。用户的反馈可以揭示测试漏洞和问题,有助于改进测试质量。
- 安全测试:如果项目涉及安全性要求,安全测试是必不可少的。评估项目的安全测试水平和发现的安全漏洞是否得到及时修复。
- 性能测试:对项目进行性能测试,检查其在不同负载下的表现,包括响应时间、吞吐量等。性能问题可能是测试的盲区,但对项目质量和用户体验至关重要。
- 测试文档和报告:评估测试文档的完整性和准确性,以及测试报告的清晰度和详细程度。充分的测试文档和报告可以增加代码质量和项目可维护性。
- 测试流程和策略:审查项目的测试策略和流程,包括测试计划、用例设计、缺陷管理等。一个完善的测试流程有助于提高测试水平。
- 衡量行业标准:了解行业内对于测试水平的标准和最佳实践,例如ISO标准,能帮助你将项目与行业标杆进行比较
Tips
●一般覆盖率:50%~60%,较高覆盖率80%+。 ●测试分支相互独立、全面覆盖。 ●测试单元粒度足够小,函数单一职责。
Mock
快速Mock函数
- 为一个函数打桩
- 为一个方法打桩
Mock对象的特点包括:
- 简化测试环境:使用Mock对象可以避免在测试时依赖外部服务或复杂的组件,从而简化了测试环境的搭建和配置。
- 控制测试场景:通过Mock对象,开发人员可以精确地设置被测模块与其他组件之间的交互,并模拟不同的测试场景,包括异常情况和边界条件。
- 提高测试速度:由于Mock对象不需要真正的资源或外部服务,测试速度通常比依赖真实组件的测试要快。
- 隔离依赖项:使用Mock对象可以隔离被测模块与其依赖项之间的影响,确保测试结果更加可靠。
基准测试
优化代码,需要对当前代码分析 内置的测试框架提供了基准测试的能力
分层结构
数据层:数据Model,.外部数据的增删改查 逻辑层:业务Entity,处理核心业务逻辑输出 视图层:视图view,处理和外部的交互逻辑
Router
初始化数据索引 初始化引擎配置 构建路由 启动服务
主要功能和特点:
- 数据转发:路由器根据数据包的目标地址,根据预定义的路由表,决定将数据包发送到哪个网络或下一个路由器,从而实现数据的转发功能。
- 路由选择:路由器通过路由选择算法,选择最佳的路径将数据包从源地址传送到目标地址。这通常涉及考虑网络拓扑、链路状态、延迟等因素,以确保数据包能够快速而可靠地到达目的地。
- 网络分割:路由器可以将大型网络划分为多个较小的子网络,每个子网络都有一个唯一的网络地址。这有助于提高网络性能和管理效率。
- 网络地址转换(NAT):一些路由器还支持网络地址转换,允许多个设备共享一个公共IP地址,这在家庭或小型办公室网络中非常常见。
- 安全功能:现代路由器通常具有防火墙和其他网络安全功能,以保护网络免受恶意攻击和未经授权的访问。
- 支持多种网络协议:路由器通常支持不同的网络协议,如IP(Internet Protocol)、IPv6、OSPF(Open Shortest Path First)等,以实现不同网络之间的互联互通。
- 带宽管理:一些高级路由器支持带宽管理功能,可以对网络流量进行优先级和限制,以确保重要数据获得更高的优先级和更好的传输质量。