基于SOA架构的TDD测试驱动开发模式
以需求用例为基,Case&Coding两条线并行,服务(M)&消费(VC)分离,单元、接口、功能、集成四层质量管理,自动化集成、测试、交付全程支持。 3个大阶段(需求分析阶段、研发准备阶段、研发测试阶段)16个小历程(*)确定好边界,明确好对接产物,做好服务管理。
一、抽象接口
根据拆分的需求,将本轮迭代所要实现的功能抽象出来。
public interface IUserInfoInterface{
/**
* 功能:校验用户是否绑定了手机号<br>
* @param account 账号(必填项),例如:admin@123456
* @return 结果视图
* @version [0.0.1, 2016-07-12]
*/
CommonResult<UserInfoEntity> checkHandphoneBindingByAccount(String account);
/**
* 校验手机号是否已被绑定
* @param handphone 手机号,例如:13999999999
* @return 结果视图
* @version [0.0.1, 2016-07-26]
*/
CommonResult<UserInfoEntity> checkHandphoneBinding(String handphone);
}
二、构建项目至Nexus(maven deploy)
使用Jenkins持续集成,并提供pom三维坐标

<groupId>com.cnblogs</groupId>
<artifactId>user-interfaces</artifactId>
<version>1.1.2-SNAPSHOT</version>
三、Case&Coding俩条线并行
case调用接,编写用例
import com.*.*.interfaces.TUserInfoInterface.service.IOpenTestInterfaces;
import com.*.*.interfaces.user.inf.IUserInfoInterface;@Service("openTestInterfaces")
public class OpenTest implements IOpenTestInterfaces {
@Autowired
private IUserInfoInterface tUserInfoInterface;
@Override
public String login(String account, String password, String identifyingCode,String loginChannel) {
CommonResult<UserInfoEntity> login = tUserInfoInterface.login(account, password, identifyingCode,loginChannel);
// 操作码
String optCode = login.getOptCode();
// 操作描述
String optDesc = login.getOptDesc();
// 结果码
String resultCode = login.getResultCode();
// 结果描述
String resultDesc = login.getResultDesc();
// 返回数据
EsiUserInfoEntity data = login.getData();
// 系统码
String module = login.getModule().getModuleCode();
// 业务码
String bizCode = login.getBizCode();
//操作是否成功
Boolean isSuccess = login.isSuccess();
result = new TestResult(optCode, optDesc, resultCode, resultDesc, data, module, bizCode,isSuccess).toString();
return result;
}
coding实现接口
import com.*.*.user.service.inf.UserInfoService;
import com.*.*.interfaces.user.inf.IUserInfoInterface;
@Service("UserInfoService")
public class UserInfoServiceimpl implements UserInfoService{
@Override
public CommonResult<UserInfoEntity> login(String account,String password,String identifyingCode,String loginChannel){
CommonResult<UserInfoEntity> cr = new EsiResult<>();
//账户非空校验
if(StringUtils.isEmpty(account)){
cr.setResult(ResultCode.ACCOUNT_EMPTY_CODE);
return cr;
}
try{
UserInfoEntity userInfoEntity_account = getUserInfoEntityByAccount(account);
//校验账户是否存在
if(userInfoEntity_account == null){
cr.setResult(EsiResultCode.ACCOUNT_NOT_EXISTS_CODE);
return cr;
}catch(Exception e){
log.error("登陆校验发生错误", e);
cr.setResult(ResultCode.UNKNOWN);
return cr;
}
return cr;
}
四、持续集成
写完用例后以消费者身份注册zk等待提供者。

研发完成服务(ws)后,使用Jenkins构建项目,集成到dubbo_zk管理中心。
与此同时,dubbo管理台接口现实提供者并状态显示正常。

五、测试用例=API?
页面太丑,五脏俱全。

六、3个大阶段(需求分析阶段、研发准备阶段、研发测试阶段)16个小历程(*)


基于SOA架构的TDD测试驱动开发模式的更多相关文章
- TDD(测试驱动开发)培训录
2014年我一直从事在敏捷实践咨询项目,这也是我颇有收获的一年,特别是咨询项目的每一点改变,不管是代码质量的提高,还是自组织团队的建设,都能让我们感到欣慰.涉及人的问题都是复杂问题,改变人,改变一个组 ...
- TDD(测试驱动开发)培训录(转)
本文转载自:http://www.cnblogs.com/whitewolf/p/4205761.html 最近也在了解TDD,发现这篇文章不错,特此转载一下. TDD(测试驱动开发)培训录 2015 ...
- 基于AgileEAS.NET企业应用平台实现基于SOA架构的应用整合方案-开篇
开篇 系统架构的文章,准备在这段时间好好的梳理和整理一下,然后发布基于AgileEAS.NET平台之上的企业级应用架构实践,结合具体的案例来说明AgileEAS.NET平 台之上如何进行系统的逻辑架构 ...
- TDD(测试驱动开发)
TDD(测试驱动开发)培训录 2014年我一直从事在敏捷实践咨询项目,这也是我颇有收获的一年,特别是咨询项目的每一点改变,不管是代码质量的提高,还是自组织团队的建设,都能让我们感到欣慰.涉及人的问题都 ...
- TDD(测试驱动开发)学习一:初识TDD
首先说一下名词解释,TDD,英文名称Test-Driven Development,中文名称测试驱动开发,简单的断下句“测试/驱动/开发”,简单的理解一下,就是测试驱动着开发,大白话就是说用一边测试一 ...
- JAVAEE——宜立方商城02:服务中间件dubbo、工程改造为基于soa架构、商品列表实现
1. 学习计划 第二天:商品列表功能实现 1.服务中间件dubbo 2.工程改造为基于soa架构 3.商品列表查询功能实现. 2. 将工程改造为SOA架构 2.1. 分析 由于宜立方商城是基于soa的 ...
- TDD(测试驱动开发)学习二:创建第一个TDD程序
本节我们将学习一些测试驱动开发环境的搭建,测试驱动开发概念和流程.所涉及的内容全部会以截图的形式贴出来,如果你也感兴趣,可以一步一步的跟着来做,如果你有任何问题,可以进行留言,我也会很高兴的为你答疑. ...
- (译)TDD(测试驱动开发)的5个步骤
原文:5 steps of test-driven development https://developer.ibm.com/articles/5-steps-of-test-driven-deve ...
- 基于Angularjs+jasmine+karma的测试驱动开发(TDD)实例
简介(摘自baidu) 测试驱动开发,英文全称Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法.它要求在编写某个功能的代码之前先编写测试代码,然 ...
随机推荐
- Python 小而美的函数
python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) ...
- 【趣事】用 JavaScript 对抗 DDOS 攻击 (下)
上一篇:http://www.cnblogs.com/index-html/p/js-network-firewall.html 对抗 v2 之前的那些奇技淫巧,纯属娱乐而已,并不能撑多久. 但简单. ...
- junit4进行单元测试
一.前言 提供服务的时候,为了保证服务的正确性,有时候需要编写测试类验证其正确性和可用性.以前的做法都是自己简单写一个控制层,然后在控制层里调用服务并测试,这样做虽然能够达到测试的目的,但是太不专业了 ...
- JQuery 复制粘贴上传图片插件(textarea 和 tinyMCE)
开源地址:https://github.com/yuezhongxin/paste-upload-image.js 支持 Ctrl+C/Ctrl+V 上传,支持拖拽上传,也支持 QQ/微信截图上传. ...
- 在Linux系统下运行微信Web开发者工具
微信Web开发者工具只有window版本和mac版本,如果想要在Linux系统下运行微信Web开发者工具,需要花费很大周折. 注:带 * 的步骤或文件为不确定是否管用的步骤或文件.本人系统为Linux ...
- 现代3D图形编程学习-基础简介(3)-什么是opengl (译)
本书系列 现代3D图形编程学习 OpenGL是什么 在我们编写openGL程序之前,我们首先需要知道什么是OpenGL. 将OpenGL作为一个API OpenGL 通常被认为是应用程序接口(API) ...
- [Nginx笔记]关于线上环境CLOSE_WAIT和TIME_WAIT过高
运维的同学和Team里面的一个同学分别遇到过Nginx在线上环境使用中会遇到TIME_WAIT过高或者CLOSE_WAIT过高的状态 先从原因分析一下为什么,问题就迎刃而解了. 首先是TIME_WAI ...
- AEAI DP V3.6.0 升级说明,开源综合应用开发平台
AEAI DP综合应用开发平台是一款扩展开发工具,专门用于开发MIS类的Java Web应用,本次发版的AEAI DP_v3.6.0版本为AEAI DP _v3.5.0版本的升级版本,该产品现已开源并 ...
- MongoDB学习笔记二—Shell操作
数据类型 MongoDB在保留JSON基本键/值对特性的基础上,添加了其他一些数据类型. null null用于表示空值或者不存在的字段:{“x”:null} 布尔型 布尔类型有两个值true和fal ...
- windows 7(32/64位)GHO安装指南(U盘制作篇)~
本篇接着上篇的介绍,为同学讲解U盘启动盘的制作.虽然本篇大白菜的官网上也有类似的教程,但是为了完整性,我将在这里为大家细细的讲解.在这里说一下,系统包和软件包的下载大家可以自行下载,很简单的,小主就不 ...