WEB开发中会用到单元测试吗
1个回答
推荐于2017-07-18
展开全部
在2年前远标的老师就跟我说过,答案当然是肯定的,WEB中单元测试虽然有其特性,但是仍然具有传统软件工程中的优点。
WEB中单元测试的难点和一些心得
互联网公司开发周期短,时间紧。这是大多数人放弃使用单元测试的原因。无可否认,单元测试确实会在前期给开发者带来一些时间成本。但是这个时候必须要从长远来看,单元测试绝对是百利而无一害的投资。
接收老项目,老项目中就没有单元测试。不是所有人都能够只维护自己开发的项目,我们很多人都要承担维护一些老项目的责任。很多老项目到了我这里,可能已经传递了好几个人,历经了好几年,代码早已面目全非。这点在大型互联网公司也不能幸免。我总是骂以前的人给我挖的各种坑,但是我们很多人去维护只是在原来的坑上挖的更深一些,这些项目有些是核心项目,会一直存在知道有魄力的领导决定重写。是的,大部分是重写,因为项目到了这种地步,重构已经是不可能的事情。那么,如何能够把坑填起来,或者不让自己挖下更深的坑。唯一的办法就是尽早重构,而单元测试是重构过程中特别是不了解的项目重构中必不可少的武器。
WEB中的单元测试不可避免的需要模拟HTTP请求,这也是很多人忘而却步的理由。对于大多数开发者来说,我们只是HTTP请求的使用者,一般的框架都会为我们将HTTP请求变成易用的对象来处理。做单元测试要求我们对HTTP协议做一些深入的了解。从简单了解TCP/IP协议层开始,到学习一些HTTP协议中约定的code,header,cookie,proxy等信息。当我们在回头看框架时,会有不一样的感觉。
模拟HTTP请求是一件比较麻烦的事情,如果没有框架帮助。所以开发者要注意将业务代码和请求处理做一些分离,也就是软件工程中的解耦合。简单来说,负责处理HTTP请求对象的类,只负责解析参数、参数校验和返回响应。而对参数的处理,以及返回处理结果,最好放到另外一个层面去做,这个层面可以是另外的类,独立的方法。我的经验是不要向这种类中传入HTTP请求对象,只传入一些普通参数,将会比较容易创建单元测试。
单元测试代码也需要精心维护,也要有合理的架构。很多人认为单元测试用例不是核心代码,能跑起来就好了。对于开发者来说,单元测试用例就是核心代码,因为他们密切关系着项目接口的正确性,值得我们把他们当作运营代码一样去维护,去重构。单元测试是一件累加的事情,前期的良好架构有利于快速写出新的测试用例。
WEB中单元测试的难点和一些心得
互联网公司开发周期短,时间紧。这是大多数人放弃使用单元测试的原因。无可否认,单元测试确实会在前期给开发者带来一些时间成本。但是这个时候必须要从长远来看,单元测试绝对是百利而无一害的投资。
接收老项目,老项目中就没有单元测试。不是所有人都能够只维护自己开发的项目,我们很多人都要承担维护一些老项目的责任。很多老项目到了我这里,可能已经传递了好几个人,历经了好几年,代码早已面目全非。这点在大型互联网公司也不能幸免。我总是骂以前的人给我挖的各种坑,但是我们很多人去维护只是在原来的坑上挖的更深一些,这些项目有些是核心项目,会一直存在知道有魄力的领导决定重写。是的,大部分是重写,因为项目到了这种地步,重构已经是不可能的事情。那么,如何能够把坑填起来,或者不让自己挖下更深的坑。唯一的办法就是尽早重构,而单元测试是重构过程中特别是不了解的项目重构中必不可少的武器。
WEB中的单元测试不可避免的需要模拟HTTP请求,这也是很多人忘而却步的理由。对于大多数开发者来说,我们只是HTTP请求的使用者,一般的框架都会为我们将HTTP请求变成易用的对象来处理。做单元测试要求我们对HTTP协议做一些深入的了解。从简单了解TCP/IP协议层开始,到学习一些HTTP协议中约定的code,header,cookie,proxy等信息。当我们在回头看框架时,会有不一样的感觉。
模拟HTTP请求是一件比较麻烦的事情,如果没有框架帮助。所以开发者要注意将业务代码和请求处理做一些分离,也就是软件工程中的解耦合。简单来说,负责处理HTTP请求对象的类,只负责解析参数、参数校验和返回响应。而对参数的处理,以及返回处理结果,最好放到另外一个层面去做,这个层面可以是另外的类,独立的方法。我的经验是不要向这种类中传入HTTP请求对象,只传入一些普通参数,将会比较容易创建单元测试。
单元测试代码也需要精心维护,也要有合理的架构。很多人认为单元测试用例不是核心代码,能跑起来就好了。对于开发者来说,单元测试用例就是核心代码,因为他们密切关系着项目接口的正确性,值得我们把他们当作运营代码一样去维护,去重构。单元测试是一件累加的事情,前期的良好架构有利于快速写出新的测试用例。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询