当前位置: 网站首页>小程序开发>网站优化

如东网站建设【如东网络公司】如东做网站、如东微信公众号开发、如东网站设计、如东小程序制作

发表日期: 2021-04-26 15:38:09 浏览次数:132

如东网站建设【如东网络公司】如东做网站、如东微信公众号开发、如东网站设计、如东小程序制作


如东县,江苏省南通市下辖县 [1]  ,位于江苏省东南部、长江三角洲北翼。县境南与通州区为邻,西与如皋市接壤,西北与海安市毗连,东面和北面濒临黄海。截至2020年末,全县下辖3个街道、12个乡镇 [2]  ,陆域面积1872平方千米,海域面积4758平方千米 [3]  ,常住人口97.71万人,实现地区生产总值1053.42亿元 [4]  。

如东是江海盐垦文化的代表。秦汉以前县境为长江口沙洲,故称扶海洲。长江、黄淮冲积成陆后,如东盐业兴起,亭场林立,至明清繁盛一时。民国之后,沿海逐步废灶兴垦,现代农渔业得到发展。 [5]  1988年对外开放后,如东沿海进一步开发,建成南黄海优良深水港口洋口港。 [6] 

2019年7月,被列为国家知识产权强县工程示范县(区) [7]  。2019年10月8日,被评为2019年度全国综合实力百强县市、2019年度全国投资潜力百强县市、2019年度全国绿色发展百强县市、2019全国营商环境百强县 [8-9]  。2020年7月29日,入选2019年重新确认国家卫生乡镇(县城)名单。 [10]  2020年12月,社科院百强县榜单中如东排名第45 [11]  。

如所你所看到的,这是一个好的开始,但也是一个基本的开始。因为还有很多细节需要完善,一如与在线文档对应的代码注释。关于这些待完善的问题,在下一章的项目开发过程中,会进一步完善。但对于初级开发工程师,让我们暂时先达到完成的标准,然后在这基础上再追求完美。

5.3.8 再谈单元测试驱动开发

在前面,与其说是如何开发接口服务的详细过程,还不如说是如何进行单元测试驱动开发的完全过程。从一开始,通过测试用例确定最终需要实现的功能和效果,能帮助开发人员始终保持正确的关注点,就像在茫茫大海航行过程中始终不会偏离航道。这是一个可确定,可预测,自顶而下的开发过程。既然有章可循,那么不管是初级开发工程师,笔者,还是高级开发工程师,按照这样的开发方式,都能得到一个可确定的开发过程和一个可预测的开发结果。有序,则意味着在管理软件复杂度上,我们找到了一种行之有效的应对方案。另一方面,如果采用的是不确定,甚至是杂乱无章的开发过程,那么最终产出和交付的项目代码,也会因此充满不确定性,未知因素和不可控的环节,以及意料之外的缺陷。

回顾一下,我们为日历事件模块编写的单元测试,主要集中在./WeTime/Fun/Tests/Api/Api_Event_Test.php文件。通过phpunit的--coverage-html <dir>生成的代码测试覆盖率报告,类似图5-5,可以看到当前开发阶段的代码测试覆盖情况。

图5-5 测试覆盖率报告

图5-5 WeTime项目整体测试覆盖率报告

在测试覆盖率报告上,点击进去,可以深入了解每个目录,每个类,每个方法,每行代码的测试覆盖情况。如图5-6,对于Api_Event::operate()类方法,第71行代码为红色,表示为未执行,即意味着尚未被单元测试覆盖到。

图5-6 测试覆盖率报告

图5-6 Api_Event接口类的测试覆盖率报告

这是因为在前面,我们都没有检测过用户未登录下的操作场景。而正是这些未经测试执行的代码,往往更容易产生BUG。曾经有一次,有位开发很坚信他所写的代码没有任何问题,而且他所编写的代码也经过了严格的单元测试,只是还有一行代码尚未覆盖到。那也是一行抛出异常的代码,但当我为那一行代码而完善单元测试后,却发现那行代码抛出的异常类的名称拼写错了。拼写错误是开发人员经常会不小心犯的错,但如果单纯依赖代码走查,受心理作用和视觉疲劳影响,发现错误拼写的概率较低。这里,再一次科学客观地表明,100%的代码测试覆盖率,更能保证代码的质量。

接口服务,应该为它的客户端的业务而服务。有怎样的业务场景,就应该提供怎样的接口服务。而不是反过来,不应该是已有的接口服务决定业务场景。通俗地表达就是,技术应该支撑业务,而不应限制业务。从宏观的角度上看,在单元测试驱动下所开发的接口服务正是与“技术支撑业务”这一理念是吻合的。因为它从一开始就会考虑客户端的业务场景,需要哪些返回字段,需要进行怎样的数据交互,需要提供哪些服务功能。从微观的角度上看,从Api接口层到Domain层,再到Model层,都是先确定当前上下文场景的客户端需要什么(即确定调用过程),再深入到具体如何实现(即实现内部技术细节),这一过程也是体现了“底层支撑高层”这一理念。这样有什么好处呢?比较明显的一点好处是,开发工程师的效率会变得更高,因为他们不会做过多的无用功,所做的事都是以最小的代码完成当前的功能需求。在这种情况下产生的代码会更符合KISS原则,自然编写的代码就会更优雅。能提高开发效率的另一个原因是因为单元测试会一步步指导开发人员接下来需要做什么,就像寻宝时的宝藏图,从而减少中间冥想的时间。

再来看下单元测试驱动开发是如何降低软件开发复杂度的。让我们来回顾一下查看日历事件列表这接口服务的非正式的协作泳道图,如图5-7所示。其中,虚线部分为重复的节点。可以看出,查看日历事件列表这一接口服务只是使用数据库实现了基本功能,还没算上使用高效缓存和其他更复杂的业务规则,就已经涉及了1个Api接口类方法,4个Domain领域类方法,和4个Model类方法,累计共9个类方法,对于正常的开发人员来说,是有一定的复杂度的。而且这9个类方法要以指定的顺序依次执行,并且要保证每个类方法都能正常地工作,就难上加难了,更别提还要要求产出的代码是灵活、优雅、容易维护的。

图5-7 查看日历事件列表接口服务的协作泳道图

通过单元测试驱动开发,通过失败的测试用例,则可以让开发人员在同一时间只关注一件事件,只做一件事情,而不用一下子同时考虑9个类方法,同时做9件事件。相比于传统的“开发-调试”方式,“红-绿-重构”方式的开发思路更清晰,所要同时面对的软件复杂度更低,从而产出的代码质量更高。

但单元测试驱动开发也不是银弹,而且也有其要求。想要娴熟应用它并从中获益,不仅要求开发人员熟练对单元测试的基本使用,还要求开发人员对业务需求有清晰的理解,能一开始在概念层确实具体需要实现的功能。此外,在上面所提及的都是Happy Path的测试路径,更完善的测试用例应该参考三角验证进行编写,即需要考虑更多异常场景下的应对。这里不再展开。

5.4 与客户端的联调

在完成对接口服务的开发后,便可把对应的接口服务提供给客户端使用,并通过说明文档告知客户端如何调用。结合客户端的开发,便可看到最终展示在界面上的数据,而非再是单调的JSON格式数据。

5.4.1 与移动App的联调

在WeTime项目中,移动App主要包括有iOS客户端和Android客户端。根据项目的情况,需要支撑的客户端也不尽相同,有的可能还需要支撑H5混合页面,支撑Windows Phone。尽量与客户端进行联调有很多好处。首先,可以有效保证项目进度,有客户端需要时甚至在客户端开始开发前就提供所需的接口服务,有助于保障项目不阻塞,不延期。其次,通过客户端在真实业务场景中使用接口服务,更有利于提前发现问题以及不合理的设计,从而在前期就进行调整,避免到了后期大量的返工。最后,在完成开发接口服务后,在后端开发人员记忆犹新时尽快和客户端进行联调,也有助于快速定位解决问题。

如iOS客户端的个人页面,展示效果如下:

c51c866ffa1ab3457f2021e8bbdbcc1.jpg

如东网站建设如东网络公司如东做网站、如东微信公众号开发、如东网站设计、如东小程序制作

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: http://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878