一起养成写作习惯!这是我参与「掘金日新计划·4月更文挑战」的第7天,点击查看活动详情。
测试始终是软件测试中非常关键的一步,可能老一辈的工程师对代码测试的执行是十分严格且周密的,新生代的则往往觉得麻烦,人肉测试之后变交付了。测试的重要性不言自明,但在实践中确实没有很好的落地。今天带来一个可能是一个比较好的解决方案。
为什么写测试那么难落地
以Java为例,完整的写单元测试确实是不多见的。首先是麻烦,业务逻辑都写完了,单元测试的代码甚至会比业务代码更多。大家都是CRUD侠,写完把服务启动,在外面用postman捣鼓两下就提测了。有一个听起来好像合理的理由:没时间。
其次Java的单测框架并不那么好用,junit、mockito等等虽然是在不断改进编写友好性,但始终是需要费点心思去搭建框架的。复杂的配置,各种内存数据库,mockmvc等等的写法,且不说水平问题,正常的业务迭代中确实很难投入多少时间去搞这个。
有种东西叫TDD,测试驱动开发。这个的核心思想在于红绿灯,就是先写测试,在测试case中定义方法,等报错了再去业务代码中实现,反过来实现完了再跑通测试。不说合理性如何,没有一个leader强推此模型,不会有人能轻易改变当下写代码的习惯。
外部依赖的屏蔽是个难题。如果是依赖外部的服务,可以通过mock的方式解决,但如果是mq或者im消息呢?这部分暂时不做单测?那可能就缺少了很重要的一环。
试试用集成测试来兜底
当然,你可以再写一个Java或者python的服务来去请求业务模块,然后去输出结果。这和某些自动化测试平台类似了。但如何嵌入到代码里面,且减轻工作量呢?答案是postman,postman不是一个测试的工具吗,怎么能完成这种工作呢?其实是postman出品的一个自动化测试工具——newman。
newman是一个命令行工具,这就不一样了,这意味着它支持所有的环境,直接打包到容器中都行。下面直接看一张官方的图:
跑测试需要的文件可以由postman直接导出,如果你恰好习惯在postman做测试,那导出的json可以直接用。下面是官方的地址,有兴趣的可以围观newman.