互联网的发展,每一秒都在与时间赛跑,更快的研发落地意味着我们可以抢占市场先机,所以研发效率一直是核心问题之一研发工程师所关注的。本文以Web项目为例,从架构设计、辅助工具、编码技巧、测试效率等方面给出了一些可以快速实现的实用技巧。希望对大家有所帮助。01架构设计:前后端分离架构在传统的MVC模型应用中,前后端在开发部署环节存在不同程度的依赖和耦合。随着业务量的不断扩大,不仅开发效率低下,而且代码也难以维护。前后端完全分离。建筑可以很好地解决这些问题。前后端分离架构模式的实现:开发环节前后端代码存储分离和开发职责分离,部署环节应用部署分离,前后端通过HTTP通信要求。与传统模式相比,前后端分离的开发模式提高了开发效率和代码可维护性。我们在实现过程中主要关注以下几个方面:1.职责分离:前后端代码库分离,后端专注于后端控制层(RestfulAPI),服务层,和数据访问层;前端侧重于前端控制层(Nodejs),视图层。2、开发方式:前后端分离,各自分工,并行协同敏捷开发,后端提供RestfulAPI,并给出详细的文档和测试用例,保证API的可用性,减少集成风险;前端人员发送API请求(GET、POST等)获取数据(JSON、XML)进行页面组装和渲染。3、交互方式:前后端通过HTTP进行交互。API完成前,前端人员使用mockserver进行模拟测试,后端人员使用相应的工具进行API单元测试(如:junit),互不等待;API完成后,再次测试前后端。当然,并不是所有的接口都可以预先定义好,有些是在开发过程中调整的。4、部署方式:前后端资源分开部署,前后端可以使用nginx作为反向代理,如:java+nodejs+nginx进行交互。02辅助工具:脚手架的巧妙运用在软件工程领域,脚手架可以理解为开发人员在开发过程中使用的开发工具和开发框架。使用脚手架,您不需要从头开始构建或编写底层软件,这有助于我们大大减少重复性工作。在工作中,当项目涉及多人合作时,非研发工作量会占很大比重。这些任务很无聊,但是又不得不做。在平时的web团队开发工作中,我们要经常增删改查测试数据,维护各个接口的文档,mock未完成的接口。这些任务甚至比编写代码花费的时间还要长。脚手架工具可以帮我们解决这些烦恼。下面举几个例子:1.测试数据修改:常用phpMyAdmin,几分钟即可完成配置。生成了可以管理mysql的后台,可以直观方便的管理测试数据。PM也可以轻松使用。2、文档生成:配置工具有很多,接口文档可以选择TypeDoc、Doxgen等,功能文档可以选择mkdoc,通过简单的配置,就可以完成文档编写工作。3、界面Mock:可以选择Rap、Nei、Easy-Mock等,前端也可以单独使用mock.js。前后端开发解耦,互不阻塞等待,也减少了很多沟通成本。因为程序员讨厌重复,所以有很多工具可以解决类似的问题。以上只是一些常见的场景,可以帮助你打开思路。您也可以使用搜索工具尽可能自动解决其他场景。03编码技巧:优质的前端编码提升前端代码质量,是提高前端研发效率的重要举措。合理的代码逻辑、模块设计、完备的工程化手段,保证模块稳定、快速的迭代交付。在实际开发中,常见的优化方案如下:1.注重逻辑抽象**:相同的代码在很多地方重复出现,明显会增加代码的维护成本。我们应该从逻辑上对重复的代码进行抽象,以提高代码的复用性,并做好对这些抽象的单元测试。2、模块设计合理:添加一个简单的功能时,需要修改多处代码。这说明功能缺乏封装,或者模块划分不合理。应该重新设计和划分模块,或者封装通用功能和沉淀机制。3.去除过多的全局依赖:只修改了一个功能,却在其他意想不到的地方造成了bug。这种情况经常发生在比较复杂的模块中,新的函数依赖于某种全局状态,模块中分布着太多的全局变量和事件中心。面对这种情况,我们应该对旧代码进行改造,逐步去掉对全局状态的依赖,创建一个不依赖全局状态的新机制,在新的需求中使用。4.一个变量只描述一个含义:当同一个变量的内容和含义随着程序运行不断变化时,会导致难以预测变量的实际值,也难以推断变量的行为程序。所以当一个值的含义发生变化时,应该使用一个新的变量指向它,变量名描述了新值的内容和含义。5、git提交规范:为保证需求的高效交付,团队应制定统一的git提交规范,方便查找、合并和回滚。提交应符合commitizen规范。我们可以通过引入提交工具来管理提交和增加管道任务来阻止最终发布来强制提交的规范性。04测试效率提升:自动化测试提速在前端自动化测试过程中,案例的操作步骤之间需要等待页面加载完成。页面加载速度受各种不可控因素影响:包括界面响应速度、网络速度、设备性能、前端渲染和过渡动画时长等。为了保证测试用例的稳定执行,较长的等待时间通常在写用例的过程中会设置比正常的,这也会导致自动化测试用例执行缓慢。为了提高用例的执行效率,可以在执行过程中利用计算机视觉技术自动判断页面是否加载。实现思路是:发生设备交互后,设备的界面会从初始的稳定状态过渡到空白的中间状态,然后从中间状态逐渐加载到下一个稳定状态。根据这种现象,可以使用驱动程序(如minicap)快速捕获设备界面的图像信息,然后实时分析当前界面的页面空白信息,判断页面是否达到稳定状态通过组合前后多个帧之间的变化。引入计算机视觉技术,实现不同环境下的自适应。在快速加载场景下,减少等待时间以提高效率,在慢速加载场景下,增加等待时间以保证案例的稳定性。推荐阅读:百度一线工程师谈千变万化的云原生【技术加油站】揭秘百度智能测试大规模落地【技术加油站】浅谈百度智能测试的三个阶段
