测试是什么
一个完整的软件有两个方面组成,第一是面向普通用户的软件产品,第二是面向公司的代码产品。代码需要不停更新迭代,也是一个产品。测试用于监管代码质量,测试本身也是算法,测试代码也需要维护和升级,测试和代码是相辅相成的。
程序是算法加数据。简单的逻辑是一些算法指令,算法执行过程当中需要数据,这个数据可能在数据库里、也可能在文件里,算法和数据分离。
测试也是,测试逻辑和测试数据分离。测试数据是场景、上下文、状态,维护测试逻辑不用关心测试数据,在保证测试逻辑正确的情况下,调整测试数据形成更严密的测试。测试逻辑可能由编码人员编写,编码人员未必了解测试场景,他没有办法提供很完整的测试数据。测试数据可能由 PM 或者专职人员收集,可能来源于最早的设计文档,也可能来源于运营期间的数据。
单元测试
以单元测试确保逻辑正确,并持续跟踪。
- 测试代码同样放在目标包内,以 _test.go 结尾。
- 测试函数名为 TestName 格式。
- 测试函数内用 testing.Error、Fail 等方法指示测试失败。
- 编译命令(go build)会忽略测试源文件。
单元测试的主要目的是确保逻辑正确,对代码进行持续跟踪。一般开发人员编写单元测试,测试人员提供测试样本数据。