今天整理测试相关的知识点.测试开发是工程中必不可缺的一部分,就像是小学数学题的验算步骤一样,代码是否正确可运行,运行效率如何,健壮性等等.测试是为我们的工程加上一道保险和验证,确保前期工作的质量能够被检测出来.
测试主要分为三种:回归测试,集成测试,单元测试,单元测试覆盖面最大,测试成本最低,回归测试覆盖面最小,测试成本也最高,集成测试则介于两者之间.
回归测试主要是指开发者手动固定一些主流应用场景,测试当前代码能否实现特定功能; 集成测试是对系统在某一维度上的功能做较为全面的检测; 单元测试则是开发者对立对所开发的模块和函数做功能性验证.
不过在实际开发过程中,还是以单元测试更为常见,一方面是单元测试没有破坏原先的代码结构,同时覆盖范围也较为广阔,能够查找出问题,可以提高我们在短时间内发现故障的效率,因此使用较多.
在单元测试时,老师讲到有三个建议:
1.一般项目,即对于代码问题没有那么敏感和致命的业务,代码覆盖率可以在50%-60% 重要项目,不允许出现差错的,比如支付宝付款等,代码覆盖率应该在80%以上 之所以一般项目的覆盖率可以稍微低一些,是因为实际工程需要考虑效率与费用问题,稍微降低覆盖率到达的测试程度能够满足需求的情况下,尽可能减少开销
2.测试分支相互独立,全面覆盖.主要是到达无差错无遗漏,要求独立验证
3.测试单元粒度足够小,函数单一职责.在最小单位上检查代码执行程度,精准定位到有问题的部分.
另外,go语言还提供了基准测试,含义是一段程序运行效能和耗费cpu的程度,它不一定是找错,纠正代码运行出现故障的问题,往往是优化,让代码运行的效率更高,耗费的资源更少,而go内置的测试框架就提供了这样的测试工具,可以方便我们进行测试.