java前后端分离怎么测试,前后端分离如何提高开发测试效率
前后端分离如何提高开发测试效率
三丰 soft张三丰
前后端分离项目
开发步骤:
项目是基于前后端分离的架构进行开发,前后端分离架构总体上包括前端和服务端,通常是多人协作并行开发,对于不同职位的人来说,有不同的侧重点。
1、需求分析
梳理用户的需求,分析业务流程
2、接口定义
根据需求分析定义接口
3、服务端和前端并行开发
依据接口进行服务端接口开发。
前端开发用户操作界面,并请求服务端接口完成业务处理。
4、前后端集成测试
最终前端调用服务端接口完成业务。
详细解读:
架构师工作:
1.需求分析:
是一个必备的技能,通常项目负责人会根据客户的要求详细的了解业务流程,将客户要求的功能转化成自己如何实现的伪代码。
例如:客户:你们的项目需要做一个查询功能:
架构师:首先根据功能设计出来详细的表结构,然后写需求分析。
2.定义接口:
第一步完成数据模型:
完成实体类
做请求类型的模型
package com.zf.framework.domain.cms.request;
import com.zf.framework.model.request.RequestData;
import lombok.Data;
@Data
public class QueryPageRequest extends RequestData {
//站点id
private String siteId;
//页面ID
private String pageId;
//页面名称
private String pageName;
//别名
private String pageAliase;
//模版id
private String templateId;
做响应类型的模型:
第二步设计接口:
例如如下所示:
程序员工作:
3.服务端和前端并行开发
前端:
前端的配置
模块化开发
后端:
后端的配置
模块化开发
4.前后端集成测试
1.swagger
2.postman
前后端请求流程:
前后端分离项目测试
前后端分离后,前端页面默认会访问localhost:{前端ng serve启动的端口号}
http访问的后台默认也是上述前缀地址。
本地连接后台自测时,
要把http访问的后台地址配置加上localhost:{后台启动接口服务的端口}
从而实现本地前后端连接成功。
Swagger进行接口测试
首先,我们先对swagger做一个介绍
在现在前后端分离开发模式中,api文档是最好的沟通方式.所以swagger成了炙手可热的工具了.Swagger是一个规范的和完整的框架,用于生成,描述,调用和可视化RestFul风格的web服务.
特性:
1.及时性(接口变更后,能够及时的准确的通知相关前后端的开发人员)
2.规范性(并且保持接口的规范性,比如说,接口的地址,请求方式,参数及其响应格式和错误信息)
一致性(接口信息一致,不会出现因为开发人员拿到的版本不一致,而出现分歧)
可测性(直接在接口文档上进行测试,以方便理解业务)
整合swagger进行接口测试:
首先我们创建一个公共模块:
以一个maven项目创建.接下来引入依赖:
io.springfox
springfox-swagger2
provided
io.springfox
springfox-swagger-ui
provided
接下来再建一个模块做为common的子模块service_base.
创建包,结构如下:
编写SwaggerConfig代码
import com.google.common.base.Predicates;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration //配置类
@EnableSwagger2 //引入Swagger注解
public class SwaggerConfig {
@Bean
public Docket webApiConfig(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("webApi")
.apiInfo(webApiInfo())
.select()
.paths(Predicates.not(PathSelectors.regex("/admin/.*")))
.paths(Predicates.not(PathSelectors.regex("/error.*")))
.build();
}
private ApiInfo webApiInfo(){
return new ApiInfoBuilder()
.title("中心API文档")
.description("本文档描述了课程中心微服务接口定义")
.version("1.0")
.contact(new Contact("java", "", ""))
.build();
}
}
由于我们的Swager并不在同一个模块中,这么做就是好做一个全局的Swagger,所以我们可以将需要用到Swagger的地方进行配置即可
并且在需要用到的启动类中加上注解:
这样就整合好了,但是我们需要更友好的界面,所以我们就使用一些注解进行swagger中文化.
import com.qiu.eduservice.entity.EduTeacher;
import com.qiu.eduservice.service.EduTeacherService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
* 讲师 前端控制器
*
*
* @since 2020-07-23
*/
@Api(description = "讲师管理")
@RestController
@RequestMapping("/eduservice/eduteacher")
public class EduTeacherController {
@Autowired
private EduTeacherService teacherService;
//查询所有的老师的信息,rest风格
@ApiOperation("所有讲师列表")
@GetMapping("findAll")
public List findAllTeacher(){
List list = teacherService.list(null);
return list;
}
//2.逻辑删除讲师的方法,ID需要通过路径传递,@PathVa...就是指明id为path下的
@ApiOperation("逻辑删除讲师")
@DeleteMapping("{id}")
public boolean removeTeacher(@ApiParam(name = "id",value = "讲师ID",required = true)
@PathVariable String id){
boolean flag = teacherService.removeById(id);
return flag;
}
}
这样我们写的方法就在这里面出现了.记住网址;
localhost:(你的端口号)/swagger-ui.html
接触mock
最近在进行项目重构,需要实现前后端分离,所以在开发的过程中就接触到了mock,在使用过程中,也发现它有一些好处,
1. 团队可以并行工作
有了Mock,前后端人员只需要定义好接口文档就可以开始并行工作,互不影响,只在最后的联调阶段往来密切;后端与后端之间如果有接口耦合,也同样能被Mock解决;测试过程中如果遇到依赖接口没有准备好,同样可以借助Mock;不会出现一个团队等待另一个团队的情况。这样的话,开发自测阶段就可以及早开展,从而发现缺陷的时机也提前了,有利于整个产品质量以及进度的保证。
2. 开启TDD模式,即测试驱动开发
单元测试是TDD实现的基石,而TDD经常会碰到协同模块尚未开发完成的情况,但是有了mock,这些一切都不是问题。当接口定义好后,测试人员就可以创建一个Mock,把接口添加到自动化测试环境,提前创建测试。
3. 可以模拟那些无法访问的资源
比如说,你需要调用一个“墙”外的资源来方便自己调试,就可以自己Mock一个。
4. 隔离系统
假如我们需要调用一个post请求,为了获得某个响应,来看当前系统是否能正确处理返回的“响应”,但是这个post请求会造成数据库中数据的污染,那么就可以充分利用Mock,构造一个虚拟的post请求,我们给他指定返回就好了。
5. 可以用来演示
假如我们需要创建一个演示程序,并且做了简单的UI,那么在完全没有开发后端服务的情况下,也可以进行演示。说到演示了,假如你已经做好了一个系统,并且需要给客户进行演示,但是里面有些真实数据并不想让用户看到,那么同样,你可以用Mock接口把这些敏感信息接口全部替换。
6. 测试覆盖度
假如有一个接口,有100个不同类型的返回,我们需要测试它在不同返回下,系统是否能够正常响应,但是有些返回在正常情况下基本不会发生,难道你要千方百计地给系统做各种手脚让他返回以便测试吗?比如,我们需要测试在当接口发生500错误的时候,app是否崩溃,别告诉我你一定要给服务端代码做些手脚让他返回500 。。。而使用mock,这一切就都好办了,想要什么返回就模拟什么返回,妈妈再也不用担心我的测试覆盖度了!
java前后端分离怎么测试,前后端分离如何提高开发测试效率相关推荐
- android 蓝牙速率测试软件,安卓蓝牙4.0开发测试 一个测试 APP - 下载 - 搜珍网
压缩包 : MyBleTestDemo.rar 列表 MyBleTestDemo/.classpath MyBleTestDemo/.project MyBleTestDemo/.settings/o ...
- IC芯片自动测试系统平台ATECLOUD:提高半导体制造效率与质量
近年来,随着半导体产业的快速发展,IC芯片在各种电子设备中扮演着越来越重要的角色.然而,为了满足不断增长的需求和保持竞争力,制造商需要不断提高生产效率并确保产品质量.ATECLOUD--一款基于云计算 ...
- 微信公众号测试生产环境分离实践
微信公众号测试生产环境分离实践 背景 最近开发微信公众号,部分功能上线后,为了保证不影响线上正常使用,新功能的开发测试遇到以及需要解决的问题如下: 调用微信公众号高级接口(授权,支付等)需要配置域名访 ...
- CIO访谈实录丨渤海人寿携手SmartX超融合大幅提升开发测试效率
客户访谈:金融/保险业 新金融科技时代,数据的可靠性及平台计算性能是核心要义:新业务上线拓展的迅捷性,更是激烈竞争中重要的取胜之匙.在创新技术驱动业务发展理念的指引下,保险行业新兴寿险企业渤海人寿选择 ...
- java 接收前台富文本_前后端分离ueditor富文本编辑器的使用-Java版本
最近在写一个自己的后台管理系统(主要是写着玩的,用来熟悉后端java的知识,目前只是会简单的写点接口),想在项目中编写一个发布新闻文章的功能,想到了使用百度的ueditor富文本编辑器,网上找了很多j ...
- 【JAVA程序设计】基于SSM+VUE前后端分离的物流管理系统
基于SSM+VUE前后端分离的物流管理系统 零.项目获取 一.项目简介 二.开发环境 三.项目技术 四.系统架构 五.运行截图 零.项目获取 获取方式(点击下载):是云猿实战 项目经过多人测试运行,可 ...
- 前后端不分离到分离演变,优势,前后端接口联调,排错
前后端分离,不分离简介 前言 前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构 ...
- Vue前端和Java后端 联调使用AES 前后端加密解密
Vue前端和Java后端 联调使用AES 前后端加密解密 最近在项目中需要针对重要数据进行加密传输,在网上找了一大推加密方式 最终采用AES 加密 Java端 package com.zk.web.u ...
- 【JAVA】书店管理系统(附带前后端源码及资源)
[JAVA_Web]书店管理系统(附带前后端源码及资源) 一.项目的目的和意义 1.1目的 在"互联网+"的大趋势下,线上销售以其简单.便捷.高效的特点受到人们的青睐.网上书店不受 ...
- 商城前后端prd文档/经销商门户/瓶箱回收系统/组织管理平台/系统管理后台/商城文档/司机管理移动端原型/电商前后端原型/电商前后端需求文档//运输公司管理/产品库管理/资金管理/移动端电商原型文档
商城前后端prd文档/经销商门户/瓶箱回收系统/组织管理平台/系统管理后台/商城文档/司机管理移动端原型/电商前后端原型/电商前后端prd文档/后台管理系统原型/运输公司管理/产品库管理/资金管理/移 ...
最新文章
- 手脱UPX(堆栈平衡原理)
- 【gRPC】 在.Net core中使用gRPC
- update se_Java SE 7 Update 25 –发行说明进行了解释。
- LeetCode 859. 亲密字符串
- html异形轮播,异形滚动
- 嘻哈 软件技术知识与项目管理知识
- 如何使用网易有道词典翻译英文文档(word格式、pdf格式)
- 【他山之石】康师傅的本地化策略
- 腾讯2021校园招聘编程题
- 钉钉机器人关键字自动回复_【原创新软件】办公引流机器人个人微信企业微信QQ通用的自动回复,群发助手...
- 开始混CSDN了,大器晚成……
- 显卡掉驱动 不用重启
- 【NanoPi T2】 5.uboot gmac网卡驱动(1) - mac控制器,phy芯片,rgmii协议
- 智能语音计算器(二)
- 反编译+混淆的攻守战
- 2021年终总结:平凡的一年
- 【论文精读3】MVSNet系列论文详解-P-MVSNet
- 物联网开发笔记(77)- 使用Micropython开发ESP32开发板之使用MAX7219驱动控制8x8LED点阵模块(续)
- wampserver3.2.6切换中文报错处理方法以及中文版升级补丁
- topic是短语还是句子_八年级上册英语Unit2 Topic1重点短语、句子、语法