了解前后端分离
作为一个测试我只用第三方的眼光来看前后端分离,谈谈分离与不分离对测试的影响与见解
什么是前后端分离,非前后端分离
所谓非前后端分离 : 浏览器请求----http请求--->nginx服务器(请求处理,分发)---->服务器(静态资源,处理所有业务代码逻辑)---视图解析(模板渲染)--->浏览器(返回页面)
所谓前后端分离 : 浏览器请求----http请求--->前端服务器(nginx请求处理,分发,静态资源)----http请求(转发请求)---->后端服务器(接收请求,处理所有业务代码逻辑)--json返回数据--> 前端服务器(接收数据,路由处理)--视图解析(填充页面)-->浏览器(返回页面)
要注意的是完全分离之后,前端服务器接收的http请求一般用node.js处理,进行视图解析一般用vue.js,anaular.js处理.后端只需要返回数据给前端就行了
但是一些中小型的公司不可能完全实现前后端完全分离,部署时只拥有一台服务器和一个域名,这种称为前后端开发分离,这种情况下所有测试都在一台服务器的不同端口下进行
了解MVC层,技术分工
MVC为Model(业务处理,数据处理等),View(视图层),Controller(控制层),很久以前的程序员基本为后端,前端也是从后端转型而来的,所有层都是后端实现没有前端,而现在技术线分层比较清楚,从分离之后,前端被划开来,由前端管理VC层,追求页面表现,页面流畅,兼容性,用户体验(即模块化,浏览器兼容性,前端性能优化等),后端管理M层,追求高并发,高性能,高可用,高扩展,安全,存储等(即追求微服务架构,后端服务器架构,后端性能优化,linux配置优化,sql事物隔离,锁,分布式架构,设计模式,多线程等)
毕竟全部精通全栈的人员较少,合适的技术分工会让各自的领域展现最强的技术
开发模式
老开发方式:产品&客户提出需求->ui->前端做出html,css,少量js->后端根据页面变成自己语言所支持的页面,对html进行修改处理,添加业务的js,css等->前端返工->后端返工->集成->测试->...返工->上线
我们可以看到老模式下,也就是我们所说的瀑布式模型所带给我们的伤害,如果前方一个环节出现问题,那后面的环节就不用继续下去了,这里引入敏捷开发和敏捷测试,有兴趣可以百度
新开发方式:产品&客户提出需求->ui->前后端根据文档互相约定接口&数据&参数->前后端并行开发->前后端集成->测试->..返工->上线
我们可以看到新模式下,还是依赖瀑布式模型,但是前后端的开发模式得到了改善,大大提升了发开效率
前后分离的优势与劣势
优势:
1.前后解耦,如前台服务器可以放上传图片,后台的图片也可以放在前台,保证了后台的私密性安全性.前端使用nginx控制流量后台做数据校验,减少与后端交互的并发量与压力等
2.bug定位,对测试人员来说是巨大的优势:快速定位bug是前端人员还是后端人员,不会出现互相踢皮球的现象,
前端问题就是页面逻辑,兼容性,post请求抓包数据不正确,页面css,js问题,跳转问题等
后端问题就是post请求抓包返回数据不正确,数据提交失败等
有些问题需要仔细再次判断后再确定是前端还是后端
3.分离后即使后端宕机,前端页面还是可以显示,也可以定位出是前后端服务器问题
4.增加代码的维护性,易读性
5.减少前后端人员的依赖,前后端组可各自为战
6.安全性,前端只开放一个对外端口,前端与后端内网之间建立专项数据传输接口,防止黑客扫站问题
7.多端,复用性:即创业公司前期以web经营为主,分离后开发了通用的api页面接口,公司业务提升后增加了ios和安卓端和h5,后端人员不用重复写多个接口
劣势
1.服务器架构复杂,对于中小型公司来说比较头疼,加入这个中间层好像网站整体变得复杂,原来一个人的事情要变成两个人来做
2.业务逻辑,前后端人员只各自掌握自己的业务逻辑,当业务出现问题,没有一个能够完全精通整条技术线的人存在,这会给上线后严重问题排查带来一定的时间成本,整体业务的沟通也可能带来不便