随着互联网的不断发展,越来越多的程序员都在学习软件测试技术,而今天我们就一起来了解一下,软件测试框架与应用方法。
测试框架
单体架构时,团队的测试主要依赖基于Selenium的集成测试和后检查测试,基于Rails的单元测试略有欠缺。转到微服务架构后,为了满足新的需求,测试框架也进行了相应调整。测试金字塔可以很好地帮助我们区分不同层次测试的关注点。金字塔从下层到顶层依次为单元测试、集成测试、端到端测试和性能测试。其中,越靠近金字塔的底端,一般而言测试速度越快,反馈周期也越短,测试发现问题后更容易定位受影响的功能;越是靠近金字塔的顶端,测试覆盖的范围越大,但需要花费更长时间完成测试,经过测试后功能的正确性也更有保证。
单元测试
“单元”是软件的小可测试部件。单元测试就是软件开发中对小单元进行正确性检验的测试,它是所有测试中底层的一类测试,由开发人员在开发代码时同步编写,是一个也是重要的一个环节。
团队后端开发使用的语言是Go,Go语言自带有一个轻量级的测试框架testing,可使用自带的gotest命令进行单元测试。同时,我们使用了TDD,即在开发功能代码之前,先编写单元测试用例,以测试代码来确定需要编写的产品代码,提高代码质量。
Mock实践
单元测试的编写往往有独立性的要求,很多时候因为业务逻辑复杂,代码逻辑也随之变的复杂,掺杂了很多其他组件,导致在编写单元测试用例时存在比较复杂的依赖项,如数据库环境、网络环境等,这些增加了单元测试的复杂度和工作量。
Mock对象就是为解决上述问题而诞生的,mock对象能够模拟实际依赖对象的功能,同时又省去了复杂的依赖准备工作。当前,在核心业务团队Go代码库中,存在2种mock实践。一种是和mockery结合使用的Testify/mock,另一种是和mockgen结合使用的Go/gomock。
Testify/Mock
Testify包中一个优秀的功能就是它的mock功能,在进行单元测试时,代码中往往有大量的方法和函数需要模拟,此时vertra/mockery就成为了我们的得力助手,mockery的二进制文件可以找到任何在Go中定义的interfaces的名字,然后自动生成模拟对象到mocks文件夹下对应的文件中。
Golang/mock
Gomock是Google开源的golang测试框架,gomock通过mockgen命令生成包含mock对象的.go文件,它可以根据给定的接口自动生成代码。这里给定的接口有两种方式:接口文件和实现文件。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】