无论简单和复杂模块,大家都会去开发单元测试吗?
如果会开发,那是无论多简单的功能都会去写测试用例吗?
有没有公司不写测试用例的?理由是什么。
在开发进度紧张的时候,有没有公司不是做单元测试的,或者是暂时不做。
首先,如何理解单元,还是那个分层测试的思想。
你的ui,business,dao肯定有自己的单元测试,每一个测试都是有必要的。
为了提高测试的效率引入了automation,如果能提高自动化测试的覆盖率,是不是就提高了测试效率。
当然还是那句话,你的模块是否合理,测试框架的选择,持续集成都需要考虑.
所以你的问题是很多公司都面临的问题,单元作还是不做?做到什么程度?怎么做?
说白了这个不简单,需要从最基本的开发流程开始修改,你们的领导能在多大程度支持这个改进,这才是关键。
最终的目的还是质量保证,我们大部分时候都是在偿还自己欠下的技术债务罢了。
######
我最近在做的项目就是没有单元测试的,接手以后弄了一些bug,有严重的也有不严重的。严重的直接导致了 App 的崩溃。
最近计划做单元测试。项目的分层不是很严格的,基本上只有 dao 和 controller 两层。计划对新业务编写时引入业务层,然后只对业务层代码测试。这样就只对最复杂,最容易出问题的代码做单元测试。
对新逻辑,严格遵守分层,特别是控制层代码,只放入参校验和数据返回,不混入任何业务。业务层在逻辑复杂的模块里,会比较庞大,大时候再考虑抽象。dao 层本身比较单纯也容易界定,测试压力会比较小。 ######这就是还债######一般都是对dao接口、service接口分别做单元测试,考虑各种情况下所期待的结果,做好对应的处理方式######
1、直接在数据库内测试,这样的话需要分离数据初始化和数据清楚的逻辑,如果需要自动化运行单元测试,还需要控制好单元测试的执行顺序。如果抽象得好,我觉得还是可以接受的,特别如果使用了ORM框架,这个操作应该还是可以抽象得比较好的。
2、使用内存数据库,把所有的CURD操作抽象出接口,然后测试的时候创建CURD操作的mock对象,mock对象操作内存数据库。这个需要你的程序CURD操作和业务逻辑操作完全分离出两层出来,对系统架构设计是有一定要求的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。