01 为什么需要测试
我们按照产品确定的需求,用编程语言把需求逻辑实现了。但是,怎么验证我们的代码实现是符合产品的需求呢?这个时候,就需要测试了。
02 测试的分类
就我们常见的测试,有以下几种类型。
1)前端功能的手工测试,即像正常的用户一样,手工使用我们开发出来的每个功能,如果软件的一切流程都符合需求的预期,就说明测试通过了。
2) 后端的接口测试,与前端测试类似,也是通过输入参数,请求接口后,获得响应值。通过观察响应值与预期值的比较,得出测试结果。
以上两类手工测试的步骤,其实又可以通过脚本录制或编写,实现自动化测试。
3)单元用例测试。这个是从更细的粒度来对代码逻辑进行测试,它关注的往往是比较单一的小代码片段,一个函数或方法,就可以编写对应的单元测试。
4)性能测试。顾名思义,就是针对性能进行的测试,通过大量的并发请求,来测试服务器的处理能力;通过多任务处理,来测试前端渲染的速度,等等,都是性能测试。
5)安全测试。从安全的角度来对软件进行测试,就是类似黑客攻击的方式,尝试找出代码可能存在的安全漏洞。
03 该怎样对待测试
在编程界,有“测试驱动”的开发模式,就是在写代码前,先写测试用例,每次觉得代码逻辑写完了,就跑一遍测试用例,只有测试通过了才算完成。但是,据我了解,大部分的开发人员,包括我,也没有能够按照“测试驱动”的模式开发。
很多时候,我们都是在需求排期压力下,匆匆写完业务逻辑就算完成开发了。如果要求严格一点的公司,会要求测试用例,但那也是在开发完需求后,再按照已完成的逻辑,造出来一些简单的用例,其测试点根本无法覆盖大部分的边界条件。
在这么多年的开发经验里,我觉得测试是我们开发人员一个很容易忽略的地方。如果能认真对待测试,其实对我们的代码质量会有很大的帮助,也减轻了将来重构代码的负担。有时候,我们要动一块很久前的代码,即使这段代码是自己写的,也不太记得当时的逻辑细节了。如果有完善的测试用例,不管你怎么改,只要保证测试用例能通过,就基本不会出错了。
04 后端怎样做好测试
作为一名后端开发人员,首先是要保证单元测试的覆盖率。从细粒度上就保证了覆盖大部分代码,那么最终交付的代码就会比较稳定。当你看一个方法不顺眼,要把它重构的时候,只要保证对这个方法的调用方能得到同样的结果,就可以放心地改了。
接口测试是必须的。我们最终交付出去的,其实是前端需要的一个个接口,因此,对接口进行测试,是对我们工作成果的保障。后端提供的接口,有可能是不同版本的前端都会调用的,我们每次修改代码,都必须满足所有支持的在用版本。没有接口测试,前端同学每次联调都发现得到不同的结果,是会 kill 人的啊。
性能测试视情况来做。如果项目的目标用户数是一个较大的数量级,就要考虑系统的性能问题了。而对于一般的内部几百人使用的系统,一般也不会有太大的性能问题,等客户反馈操作响应慢时,再关注性能问题也可。
05 测试工具的使用
对于JAVA程序员来说,单元测试一般是JUnit了,而接口测试和性能测试,我觉得都可以使用JMeter这款开源工具。这些都是比较成熟,通用的测试工具,有社区的支持,也有大量用户的使用分享。工具不在多,在于熟练精通。用好一个工具,自己有能力还可以扩展工具,使自己的能力得到延续,就是很好的选择。
06 结语
做任何事情,都应该认真对待。要想写出稳定、高质量的代码,就要认真做好测试这件事;要想在技术之路上走得更远,就不能满足于实现需求。每一个好开发,都应该是一个好测试。
网友评论