用ABP只要加人即可马上加快项目进展(二) - 分工篇
- 前端蓬勃发展, 前后端分离是一个十分大的趋势.
- 专门的测试人员角色被取消, 多出了一个很重要的角色, 产品经理
- 分工协作和流水线作业工作效率会远远比传统的个人全能型先进很多, 这个道理很多同学都懂, 我就不赘述了.
- 前端快速和迅猛发展, 6个月发布一次大版本, 浏览器6周发布一次小版本, 导致传统程序员光是学习新技术就已经很吃力, 要谈精通更难了.请欣赏此图:
- 招人扩展团队加快项目进度更容易了!!! 这才是重点!!!流水线作业减低每个人的技术难度, 让招人和培训新手更容易招校招生上手难度降低, 更容易招聘和更快能够有产出招社招生更容易, 质量更高, 特别现在是前端爆发期
- 前后端一起定义接口
- 后端写好C# interfaces用Swagger生成接口文档
- 前端将后端写好的接口用refresh.bat生成前端ts proxy
- 前后端各自干各自的活
- TDD
- IOC/Mock
- Interface
- 前端根据产品经理写好的Specflow的.feature文件用cucumber写BDD代码
- 前后端一起定义接口和实现BDD的step definition代码
- 后端写好C# interfaces用Swagger生成接口文档
- 前端将后端写好的接口用refresh.bat生成前端ts proxy
- 前后端各自干各自的活
- 产品经理参与进来, 给开发人员写明了详细操作步骤级的测试结构代码.
- 开发人员不需要思考详细操作步骤, 只需要实现具体每个操作步骤.
- 每个操作步骤是独立分割的, 遇到项目紧急时, 通过临时调人加人来加快项目进度变得更可行.
- BDD与TDD相比, 天然的具备了结构性, 避免书写重复代码, 减少了测试代码的书写量.
- 很多公共的测试代码可以分割出来, 让专门的技术专家去写 (这会在后面一节里提到)
- 校招/美工/市场销售转过来的, 会用Axure等原型设计工具,这种情况应该由三个人结对编程写BDD.
- 测试人员改行的, 这种人写测试用例的能力就很容易很天然的演变为写BDD的能力
Talk is cheap, just show your code. 为了更形象的表现出产品经理有能力写BDD,我贴一个BDD .feature文件示例:
Feature: 登录此文件包含登录成功和失败的例子Scenario: 输入正确的用户名和密码能够正常登录Given 我来到登录页面When 输入用户名"admin"And 输入密码"123qwe"And 点击"登录"按钮Then 跳转到首页Scenario: 输入正确的用户名和错误的密码则登录失败Given 我来到登录页面When 输入用户名"admin"And 输入密码"111111"And 点击"登录"按钮Then 依旧停留在登录页面And 提示"用户名或密码错误"Scenario: 输入错误的用户名则登录失败Given 我来到登录页面When 输入用户名"admin"And 输入密码"111111"And 点击"登录"按钮Then 依旧停留在登录页面And 提示"用户名或密码错误"Scenario: 输入空的用户名则提示要输入空用户名Given 我来到登录页面And 点击"登录"按钮Then 依旧停留在登录页面And 提示"用户名必须填写"Scenario: 输入空的密码则提示要输入空密码Given 我来到登录页面When 输入密码"admin"And 点击"登录"按钮Then 依旧停留在登录页面And 提示"密码必须填写"
从这个示例我们可以看到,除了少数几个大家都看得懂的英语单词外,全部都可以为中文,全部都可以为人类可以识别的语言,没有一行代码!不需要产品经理会写代码。
除了以上这个好处外,BDD在程序员方面还带来了天然的很良好的测试代码结构。让我们看一下示例:
using TechTalk.SpecFlow;namespace Bowling.SpecFlowXUnit.StepDefinitions
{[Binding]public sealed class 公用测试代码{[When(@"输入密码""(.*)""")]public void When输入密码(string p0){//ScenarioContext.Current.Pending();//具体测试代码}[Given(@"我来到登录页面")]public void Given我来到登录页面(){//ScenarioContext.Current.Pending();//具体测试代码}[When(@"输入用户名""(.*)""")]public void When输入用户名(string admin0){//ScenarioContext.Current.Pending();//具体测试代码}[When(@"点击""(.*)""按钮")]public void When点击按钮(string 登录0){//ScenarioContext.Current.Pending();//具体测试代码}[Then(@"跳转到首页")]public void Then跳转到首页(){//ScenarioContext.Current.Pending();//具体测试代码}[Then(@"依旧停留在登录页面")]public void Then依旧停留在登录页面(){//ScenarioContext.Current.Pending();//具体测试代码 }[Then(@"提示""(.*)""")]public void Then提示(string 用户名或密码错误0){//ScenarioContext.Current.Pending();//具体测试代码}[Given(@"点击""(.*)""按钮")]public void Given点击按钮(string 登录0){//ScenarioContext.Current.Pending();//具体测试代码}}
}
从上面示例可以看到,以上代码结构都可以用Specflow自动生成,程序员不需要像TDD一样要自己去组织测试代码结构,这也是BDD优于TDD的很大一个特点。这里有个小秘诀,自动生成之后把Class Name全改为一致然后加上Partial关键字就可以有重复Step Definition会编译不通过提醒。
这系列文章是实战文章,所以不止止停留在理论上,在实际运用过程中会遇到各种问题。比如:
- 如何在.NET Core下安装Specflow.
- .NET Core里跑Specflow - 可以跑集成测试和单元测试.
转载于:https://www.cnblogs.com/adalovelacer/p/abp-quickly-delivery-12-team-work-2.html
用ABP只要加人即可马上加快项目进展(二) - 分工篇相关推荐
- 用ABP只要加人即可马上加快项目进展(二) - 分工篇 - BDD实战篇 - .NET Core里跑Specflow...
这是<如何用ABP框架快速完成项目 >系列中的一篇文章. BDD很赞!比TDD先进很多,能够大大提高编码效率. 上一篇文章说了如何在.NET Core里安装Specflow. 然而文章成果 ...
- 微信自动加人软件安装使用
微信自动加人软件安装使用 只要9.9元 指定资源版效果 附近的人版效果 安装视频教程 安装软件和运行环境 安装夜神模拟器 点击下载 打开夜神模拟器设置设置分辨率为720-1280. 安装微信 下载安 ...
- 两个小技巧,马上加快上网速度
技巧一:只改一个值, 马上加快宽带上网速度 如果是使用宽带方式上网,那么在注册表中设定适当的TcpWindow值,就可以加快上网速度.具体的操作方法如下: 选择[开始]→[运行]菜单项打开[运行]对话 ...
- 领英工具领英精灵批量加人有哪些方法
使用领英的人都会使用领英精灵(linkedinjl.com/r)去批量加人,因为它可以帮助大家快速拓展人脉,特别是对于新手,效果更好.它是目前国内实力最强.用户最多,功能最强的领英工具.领英精灵-注册 ...
- 领英这样加人,一个月轻松加5000人
在领英,一个领英账号可以加3万好友,但很少有人加到这么多,一则是领英对加人会有限制,二则是大家没有掌握好加人技巧.下面教大家一个快速拓展人脉的方法,一个月可轻松加5000人. 首先我们要清楚领英对加人 ...
- 领英加人的方法和细节,一个月轻松加1000+人
在领英,一个领英账号是可以加3万好友,但很少有人加到这么多,一则是领英对加人会有限制,二则是大家没有掌握好加人技巧.下面教大家一个快速拓展人脉的方法,一个月可轻松加1000+人. 首先我们要清楚领英对 ...
- 领英不能加人怎么办?
一个领英账号可以加到3万好友.虽然可以加这么多,但在实际操作中,其实是很难的.因为领英对加人有很多限制.比如:限制每周邀请数量.限制未通过邀请量.限制搜索名额.每月搜索名额限制等. 其中最常见到的是达 ...
- 怎么样引流加人?引流加人有什么技巧?引流加人用什么好
如今互联网时代,营销模式早已从线下转到线上了,甚至很多人用引流来代替跑业务,而引流时需要操作的内容也不难,无非就是广撒网泛流量和精准加好友.而对于做营销的朋友来说,精准粉丝更适合推广产品,只有适合的精 ...
- 领英如何批量添加搜索的人脉,批量加领英推荐人脉,批量加精灵推荐人脉,批量加Groups成员,通过链接批量加人
Linkedin平台是一个关系型职业社交平台,每个Linkedin标准账号可添加3万名1度人脉.使用Linkedin的朋友都希望快速多添加好友,扩大自己的人脉圈,增加销售或就业机会. 然而手动添加好友 ...
最新文章
- Cpp 对象模型探索 / 编译器为对象创建缺省析构函数的条件
- uva1624knots
- 4000字,25张精美交互图表,开启Plotly Express之旅!
- 玩转Python? 一文总结30种Python的窍门和技巧,不可错过哈!
- python设计模式案例分析_Python设计模式之职责链模式原理与用法实例分析
- 更轻松的获取APK文件安装时间
- python catia 接口_CATIA二次开发工程制图接口:
- 用word模仿手写字体
- matlab高通滤波函数,巴特沃斯高通滤波器—matlab实现
- [置顶]史上最详细最全的Linux上安装Oracle的教程-centos7-humf
- 一些事,只配当回忆.一些人,只能做过客。既不回头 何必不忘 既然无缘 何必誓言 。这个世界.那么脏.谁有资格.说悲伤。...
- java标签用setbounds_setBounds的用法
- 【操作系统-Windows】组件服务 DCOM 配置编辑安全属性
- 在anaconda环境中添加本地下载好的包
- Freeswitch集成AMR编码
- MYSQL高可用之PXC
- 火车头采集成功了,虽然是这么的牵强。
- C++常量对象与常量函数
- 先搞一波kotlin,看它怎么说
- 12306抢票 JAVA客户端