以需求用例为基,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测试驱动开发模式的更多相关文章

  1. TDD(测试驱动开发)培训录

    2014年我一直从事在敏捷实践咨询项目,这也是我颇有收获的一年,特别是咨询项目的每一点改变,不管是代码质量的提高,还是自组织团队的建设,都能让我们感到欣慰.涉及人的问题都是复杂问题,改变人,改变一个组 ...

  2. TDD(测试驱动开发)培训录(转)

    本文转载自:http://www.cnblogs.com/whitewolf/p/4205761.html 最近也在了解TDD,发现这篇文章不错,特此转载一下. TDD(测试驱动开发)培训录 2015 ...

  3. 基于AgileEAS.NET企业应用平台实现基于SOA架构的应用整合方案-开篇

    开篇 系统架构的文章,准备在这段时间好好的梳理和整理一下,然后发布基于AgileEAS.NET平台之上的企业级应用架构实践,结合具体的案例来说明AgileEAS.NET平 台之上如何进行系统的逻辑架构 ...

  4. TDD(测试驱动开发)

    TDD(测试驱动开发)培训录 2014年我一直从事在敏捷实践咨询项目,这也是我颇有收获的一年,特别是咨询项目的每一点改变,不管是代码质量的提高,还是自组织团队的建设,都能让我们感到欣慰.涉及人的问题都 ...

  5. TDD(测试驱动开发)学习一:初识TDD

    首先说一下名词解释,TDD,英文名称Test-Driven Development,中文名称测试驱动开发,简单的断下句“测试/驱动/开发”,简单的理解一下,就是测试驱动着开发,大白话就是说用一边测试一 ...

  6. JAVAEE——宜立方商城02:服务中间件dubbo、工程改造为基于soa架构、商品列表实现

    1. 学习计划 第二天:商品列表功能实现 1.服务中间件dubbo 2.工程改造为基于soa架构 3.商品列表查询功能实现. 2. 将工程改造为SOA架构 2.1. 分析 由于宜立方商城是基于soa的 ...

  7. TDD(测试驱动开发)学习二:创建第一个TDD程序

    本节我们将学习一些测试驱动开发环境的搭建,测试驱动开发概念和流程.所涉及的内容全部会以截图的形式贴出来,如果你也感兴趣,可以一步一步的跟着来做,如果你有任何问题,可以进行留言,我也会很高兴的为你答疑. ...

  8. (译)TDD(测试驱动开发)的5个步骤

    原文:5 steps of test-driven development https://developer.ibm.com/articles/5-steps-of-test-driven-deve ...

  9. 基于Angularjs+jasmine+karma的测试驱动开发(TDD)实例

    简介(摘自baidu) 测试驱动开发,英文全称Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法.它要求在编写某个功能的代码之前先编写测试代码,然 ...

随机推荐

  1. 阿里签名中URLEncode于C#URLEncod不同之处

    问题 如上图所示,阿里云的PercentEncode 转换! 为 %21 PercentEncode 源码为: package com.aliyuncs.auth; import java.io.Un ...

  2. 在ASP.NET Core应用中如何设置和获取与执行环境相关的信息?

    HostingEnvironment是承载应用当前执行环境的描述,它是对所有实现了IHostingEnvironment接口的所有类型以及对应对象的统称.如下面的代码片段所示,一个HostingEnv ...

  3. C#异步编程(二)

    async和await结构 序 前篇博客异步编程系列(一) 已经介绍了何谓异步编程,这篇主要介绍怎么实现异步编程,主要通过C#5.0引入的async/await来实现. BeginInvoke和End ...

  4. 创建几个常用table展示方式插件

    这次和大家分享的是自己写的一个table常用几种展示格式的js插件取名为(table-shenniu),样式使用的是bootstrap.min.css,还需要引用jquery.min.js包,这个插件 ...

  5. AFNetworking 3.0 源码解读(七)之 AFAutoPurgingImageCache

    这篇我们就要介绍AFAutoPurgingImageCache这个类了.这个类给了我们临时管理图片内存的能力. 前言 假如说我们要写一个通用的网络框架,除了必备的请求数据的方法外,必须提供一个下载器来 ...

  6. 在.NET Core之前,实现.Net跨平台之Mono+CentOS+Jexus初体验

    准备工作 本篇文章采用Mono+CentOS+Jexus的方式实现部署.Net的Web应用程序(实战,上线项目). 不懂Mono的请移步张善友大神的:国内 Mono 相关文章汇总 不懂Jexus为何物 ...

  7. if __name__== "__main__" 的意思(作用)python代码复用

    if __name__== "__main__" 的意思(作用)python代码复用 转自:大步's Blog  http://www.dabu.info/if-__-name__ ...

  8. python10作业思路及源码:类Fabric主机管理程序开发(仅供参考)

    类Fabric主机管理程序开发 一,作业要求 1, 运行程序列出主机组或者主机列表(已完成) 2,选择指定主机或主机组(已完成) 3,选择主机或主机组传送文件(上传/下载)(已完成) 4,充分使用多线 ...

  9. MediatorPattern(中介者模式)

    /** * 中介者模式 * @author TMAC-J * 研究了这么多设计模式,觉得无非就是几点: * 1.若两个类有耦合关系,设立一个中间类,处理两个类的关系,把两个类的耦合降低 * 2.面向接 ...

  10. Android中Fragment和ViewPager那点事儿(仿微信APP)

    在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragm ...