2009年11月10日主题讨论:继续敏捷--scrum与xp结合 文字稿 如下:
richard-leader-shanghai says:
大家好
虚幻的真实-pm-bj says:
同志们好!
谷雨霖【pharos】-CTO-BJ【帮忙推荐JAVA工程师--北京等地】 says:
richard来了,欢迎!
Lidq says:
主讲人出现了。欢迎
Scott.Pan_SAP/Oracle_武汉 says:
呵呵,一早听的新闻,天气冷了不见得流感不传播,相反存活的更长
虚幻的真实-pm-bj says:
鼓掌欢迎!!!
虚幻的真实-pm-bj says:
下雪主要清新空气
richard-leader-shanghai says:
昨天主要说了一下scrum的角色和流程
谷雨霖【pharos】-CTO-BJ【帮忙推荐JAVA工程师--北京等地】 says:
对,主要是清新空气
虚幻的真实-pm-bj says:
而流感主要是空气传播,所以还有好处的
谷雨霖【pharos】-CTO-BJ【帮忙推荐JAVA工程师--北京等地】 says:
下面有请richard,安静。
richard-leader-shanghai says:
今天主要说一下一些编程实践
虚幻的真实-pm-bj says:
好好听讲,天天向上!!!
richard-leader-shanghai says:
不知道在做团队都做 每日构建吗
echo-PM-西安 says:
欢迎
echo-PM-西安 says:
没
richard-leader-shanghai says:
一般来说
richard-leader-shanghai says:
每次迭代都会有一个发布
richard-leader-shanghai says:
一个是让客户尽快看到软件,给与反馈
richard-leader-shanghai says:
另外一个是及时让团队能够看到产出,有责任感和成就感。 就是每个迭代都能看到自己做的东西
richard-leader-shanghai says:
但是,从团队内部来讲,每天出来的代码,可能相互之间会冲突,不一定可用
richard-leader-shanghai says:
而每日构建就是每天把生成一个版本,通过冒烟测试
richard-leader-shanghai says:
如果没有通过冒烟测试,就马上予以修正
richard-leader-shanghai says:
这样子,每天就不会存在大的问题,从而降低风险
richard-leader-shanghai says:
每日构建进化之后的概念, 是现在很流行的持续集成
虚幻的真实-pm-bj says:
每天?是不是太频繁了?
richard-leader-shanghai says:
每当有人签入代码, 都可能影响现有的版本
richard-leader-shanghai says:
就是要每天
richard-leader-shanghai says:
越大的团队,时间越长越容易混乱
谷雨霖【pharos】-CTO-BJ【帮忙推荐JAVA工程师--北京等地】 says:
嗯
richard-leader-shanghai says:
持续集成就是在每次签入代码,系统会自动的去生成版本
susan-pm-湖北 says:
乖乖
虚幻的真实-pm-bj says:
当只有几个人签入代码,那你都测试那些呢?
richard-leader-shanghai says:
如果生成失败,及时地给于警报,比如邮件,予以马上修正
richard-leader-shanghai says:
人数少,模块比较独立也建议每日构建
晓波 says:
如果每天release,
richard-leader-shanghai says:
他避免的一个是主要功能的问题, 一个是基层的问题
richard-leader-shanghai says:
集成的问题
晓波 says:
如何保证测试可以更的上这个频率
虚幻的真实-pm-bj says:
这个会占用多长时间?一般
richard-leader-shanghai says:
冒烟测试就是主要功能都没有问题
richard-leader-shanghai says:
不是全部的测试,主要功能跑完,应该是很快的
richard-leader-shanghai says:
每日构建包括build的时间,部署和测试
richard-leader-shanghai says:
这个看项目而定,一般1个小时要的
richard-leader-shanghai says:
这段时间,不能签入代码,但是开发人员还是可以继续开发
richard-leader-shanghai says:
接着说持续集成
richard-leader-shanghai says:
生成版本之后,就会运行单元测试
richard-leader-shanghai says:
如果有条件, 还可以运行回归测试
虚幻的真实-pm-bj says:
那你们都是用什么测试工具啊?
richard-leader-shanghai says:
持续集成的要求主要是把构建实现自动化
晓波 says:
恩?单元测试放在release之后?
晓波 says:
是由测试组来run吗?
richard-leader-shanghai says:
单元测试是在签入或者build的时候完成
richard-leader-shanghai says:
release是进行冒烟测试
richard-leader-shanghai says:
这个是测试人员来做的
richard-leader-shanghai says:
build最好做成自动化,maven, ant, msbuild都可以
richard-leader-shanghai says:
这个就要求代码最好有单元测试
richard-leader-shanghai says:
如果没有单元测试,继续集成没有太大的意义
晓波 says:
这句话:单元测试是在签入或者build的时候完成
晓波 says:
是说在build的时候,
richard-leader-shanghai says:
是的, 就是check-in 代码, 自动运行单元测试
晓波 says:
由script来自动实现?
richard-leader-shanghai says:
是的
晓波 says:
谢谢。理解了
richard-leader-shanghai says:
如果没有单元测试, 持续集成基本上就没有意义
richard-leader-shanghai says:
重构,代码度量都不太好做
richard-leader-shanghai says:
这个是用来保证质量和系统整合的
richard-leader-shanghai says:
诸位都知道,越大的系统,在集成上越花时间
richard-leader-shanghai says:
这个可以理解为,每次的构建,都是一次迷你发布
richard-leader-shanghai says:
代码基本上都保持在pre-release阶段
richard-leader-shanghai says:
而这些,80%可以通过自动化来达到
richard-leader-shanghai says:
另外一个实践, 就是用户体验驱动
谷雨霖【pharos】-CTO-BJ【帮忙推荐JAVA工程师--北京等地】 says:
你们用什么工具集成,CC还是
richard-leader-shanghai says:
cc
richard-leader-shanghai says:
现在tfs支持了持续集成
richard-leader-shanghai says:
就是在团队中,可以引入用户角色
richard-leader-shanghai says:
一定要有人从用户的角度来考量软件
richard-leader-shanghai says:
这个有可能是product owner来做
richard-leader-shanghai says:
这个在xp中, 是现场客户, 主要让客户参与和回答问题
richard-leader-shanghai says:
但是软件的易用性和认可度是用户决定的
不胜人生一场醉-闲人一个-海口 says:
但是,从团队内部来讲,每天出来的代码,可能相互之间会冲突,不一定可用
而每日构建就是每天把生成一个版本,通过冒烟测试
如果没有通过冒烟测试,就马上予以修正
这样子,每天就不会存在大的问题,从而降低风险
弱弱的问一下,现在eclipse不就是有这个配置工具吗?
richard-leader-shanghai says:
这个就是为什么敏捷讲究短迭代和快发布
richard-leader-shanghai says:
是的, eclipse下面直接用ant
不胜人生一场醉-闲人一个-海口 says:
每天上传代码,检验,也做简单集成;只不过没有单元测试
richard-leader-shanghai says:
这个是3年前,我知道两年前就有很多人转maven了
richard-leader-shanghai says:
这个是最简单的,没有单元测试, 只做build和smoke
不胜人生一场醉-闲人一个-海口 says:
冒烟是啥?
richard-leader-shanghai says:
就是跑主要功能
richard-leader-shanghai says:
硬件设计的时候,出大问题就会冒烟,所以软件借用过来, 就是冒烟测试
richard-leader-shanghai says:
元器件被烧掉,所以冒烟
richard-leader-shanghai says:
不一定要tdd,但是我个人觉得软件的内部质量,很大程度需要unit test来保证
richard-leader-shanghai says:
后来的重构,维护,单元测试都是非常好的
晓波 says:
如果把unit test放到开发端
richard-leader-shanghai says:
因为xp中追求简单设计,持续改进。先设计单元测试就是预先简单设计的易事之一
晓波 says:
是不是区分会更好
bluestar_pm_BJ says:
问个问题,unit test的开发工作是否会占用开发人员的大量时间
richard-leader-shanghai says:
这个是个开发习惯的问题
不胜人生一场醉-闲人一个-海口 says:
那岂不是日常工作中都会用的嘛
richard-leader-shanghai says:
先设计单元测试,并不是让开发人员写测试,而是让他去设计这个方法
richard-leader-shanghai says:
单元测试也是验收条件
richard-leader-shanghai says:
你知道输入输出,才能写单元测试,然后测是通过,也就实现了验收
richard-leader-shanghai says:
习惯以后, 不会花太多的精力
richard-leader-shanghai says:
还有就是敏捷比较讲究自组织,自适应
richard-leader-shanghai says:
就是人员之间会主动协作,主动找问题,想办法
richard-leader-shanghai says:
然后团队才会成为敏捷的团队
晓波 says:
让他去设计这个方法
晓波 says:
Richard 能解释一下吗?
richard-leader-shanghai says:
对unit test就是预先设计的意思
susan-pm-湖北 says:
就是写测试用例吗?
不胜人生一场醉-闲人一个-海口 says:
以前的测试都是在类中的main方法中写个测试用例?难道就是这个?
bluestar_pm_BJ says:
应该是用junit之类的吧
richard-leader-shanghai says:
是这种的改进版本
richard-leader-shanghai says:
对, junit ,nunit等
不胜人生一场醉-闲人一个-海口 says:
对于像我这样java水平很菜的人,我应该注意什么?
richard-leader-shanghai says:
如果你要事先写出这个方法的单元测试
不胜人生一场醉-闲人一个-海口 says:
我不可能天天看代码啊
richard-leader-shanghai says:
你是否需要先知道这个方法干什么的呢
richard-leader-shanghai says:
要知道输入,输出和测试条件吧
richard-leader-shanghai says:
这个就会强迫你去思考
bluestar_pm_BJ says:
哦,也就是说使用jnuit,nunit等写了单元测试,在持续集成时也可以自动执行这些测试类,检验实现的方法是否满足要求
richard-leader-shanghai says:
对
不胜人生一场醉-闲人一个-海口 says:
对pm有啥要求呢?
richard-leader-shanghai says:
而且你在改良代码的时候,才知道是否对其他的地方有影响, 不然你改了代码,都不知道哪里会出问题
richard-leader-shanghai says:
只需要pm有这个意识
richard-leader-shanghai says:
主要是针对开发者和开发方式的
bluestar_pm_BJ says:
richard,你们项目在开发过程中,都要求开发人员必须写单元测试吗
richard-leader-shanghai says:
看上面的要求
richard-leader-shanghai says:
我做的,只要不是压力特别大,我会要求的
blue-pm-bj says:
开发人员写更快
chinamath(海茶)-Sr.SE-北京 says:
我们曾经尝试用CPPUnit来写单元测试,但是实际发现只能实现一些很简单的测试方法,对一些复杂的功能,基本没法写测试用例。比如说,有较多界面交互的系统。请问Richard你们是怎么解决的?
richard-leader-shanghai says:
绝大多数开发人员刚开始对这个很抵触
richard-leader-shanghai says:
这个是通过mock来解决的
bluestar_pm_BJ says:
恩,许多开发人员是很抵触
richard-leader-shanghai says:
写好的单元测试也是一种学问,需要一定的学习的
richard-leader-shanghai says:
界面测试, 还有数据库,很多时候通过mock来解决
不胜人生一场醉-闲人一个-海口 says:
mock是什么?简单说一下就行了
bluestar_pm_BJ says:
richard,你要是关于如何写好单元测试的经验,也给介绍一下
chinamath(海茶)-Sr.SE-北京 says:
mock我们也试过,但是感觉还是不是太好使。
susan-pm-湖北 says:
mock测试:就是在测试过程中,对于某些不容易构造或者 不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法
richard-leader-shanghai says:
mock就是模拟的
不胜人生一场醉-闲人一个-海口 says:
新名词越来越多了
blue-pm-bj says:
还以为是自动测试工具名称呢
richard-leader-shanghai says:
我也觉得不太好用
richard-leader-shanghai says:
QTP什么的我都不喜欢
richard-leader-shanghai says:
界面的还是喜欢人肉, 主要逻辑层没问题就好
susan-pm-湖北 says:
人肉?
chinamath(海茶)-Sr.SE-北京 says:
尤其当系统对象越来越多,之间的联系和交互也越来越多的时候,mock的工作量也会越来越大,最后就是没人继续写单元测试了。
blue-pm-bj says:
可以选用自动测试工具
晓波 says:
是不是可以请tester利用类似robert工具
chinamath(海茶)-Sr.SE-北京 says:
所以我们最后的结论就是单元测试对一些比较底层的,独立的模块,可能比较有效,但是对比较复杂的应用层模块实际不太有效。
晓波 says:
写出面向界面的test case
blue-pm-bj says:
不打岔了,richard继续
richard-leader-shanghai says:
界面和数据库作unit test这块确实没有看到好的办法
susan-pm-湖北 says:
人肉的意思就是手工做是吧?
richard-leader-shanghai says:
是啊
chinamath(海茶)-Sr.SE-北京 says:
界面测试的工具我们后来就是用的类似RocketMouse这样的工具,它可以把人的操作记录下来,然后设定重复次数,就可以代替人进行界面点击操作了。
richard-leader-shanghai says:
因为讲究人员要能够主动解决问题,所以敏捷对人员的要求还是比较高的
richard-leader-shanghai says:
界面测试我们用QTP
不胜人生一场醉-闲人一个-海口 says:
HP gdcc的开发人员水平我知道
很多sse都是工作8年以上的
richard-leader-shanghai says:
不过版本升级的时候维护qtp脚本问题也很大
晓波 says:
gdcc我们可以先忽略过去
richard-leader-shanghai says:
敏捷也比较讲究纪律和协作
不胜人生一场醉-闲人一个-海口 says:
我是说遇到一些工作2、3年的程序员,是不是仍适合用敏捷?
richard-leader-shanghai says:
主要就是去除开发的束缚和浪费,更大化工作价值
richard-leader-shanghai says:
还是适用的
richard-leader-shanghai says:
这个没有区分时间和经验
richard-leader-shanghai says:
只是因为很多技巧性的东西,需要比较长的时间才能很好掌握
richard-leader-shanghai says:
团队文化,SCM工具, 流程这些对所有团队成员都是一样的
richard-leader-shanghai says:
好的, 我的这个Scrum与敏捷主题完了
richard-leader-shanghai says:
大家还有什么问题
晓波 says:
恩,
晓波 says:
想请教个事情,通过scrum和敏捷
晓波 says:
你们team效率大概提高了多少
chinamath(海茶)-Sr.SE-北京 says:
我的体会是,敏捷的前提是团队成员之间充分信任,大家都坚持以客观事实为判断依据,以解决问题为共同目标,否则在某些情况下会适得其反。简单说,就是敏捷是有前提条件的。
richard-leader-shanghai says:
是的
richard-leader-shanghai says:
如果大家都不想干活
richard-leader-shanghai says:
那么什么都解决不了wenit
richard-leader-shanghai says:
Team基本上大家都知道要做什么,怎么做,非常恒定
blue-pm-bj says:
从非敏捷到敏捷,代价有多大,
不胜人生一场醉-闲人一个-海口 says:
这个对pm技术要求高吧
richard-leader-shanghai says:
效率提高多少这个不好说。但是基本上解决了沟通上的问题
晓波 says:
是这样的,
richard-leader-shanghai says:
量化数据这个可以网上找
晓波 says:
我们在实施了敏捷后,效果的确很好
晓波 says:
不过在效率的问题上
晓波 says:
没有明显改善
晓波 says:
也就是说,工作量加大,沟通成本过高
blue-pm-bj says:
是否因为过于注重沟通了?
晓波 says:
在schedule上无法看到优势
blue-pm-bj says:
文档减少了多少?
songhuijuan1982@hotmail.com says:
是否还是需要及时更新项目计划啊
richard-leader-shanghai says:
这个是肯定的
richard-leader-shanghai says:
这种增加成本的可能性也是有的
blue-pm-bj says:
计划是短期的吧
richard-leader-shanghai says:
主要是要持续改进
songhuijuan1982@hotmail.com says:
就是项目计划啊,在系统中管控的计划啊
richard-leader-shanghai says:
项目计划一般是固定的
richard-leader-shanghai says:
但是如果迭代不如预期,可能就需要把一些东西从product bacjlog取出来,换句话说, 砍实现
songhuijuan1982@hotmail.com says:
现在发现一个问题,立一个项目,真正理解这个需求的人没有,问市场人员,他也不过滤一下,直接把客户的内容发给开发,你们觉得这样的项目怎么搞啊
richard-leader-shanghai says:
或者迭代比预期快,就要加东西,这些都是要更新计划的
songhuijuan1982@hotmail.com says:
你们更新计划存在繁琐的问题吗
richard-leader-shanghai says:
不存在,一般都是如预期的
richard-leader-shanghai says:
因为所有的东西大家都比较清楚,还有一些buffer
songhuijuan1982@hotmail.com says:
可我们这里很难做到啊
richard-leader-shanghai says:
这个你要把需求理解之后找客户确认
richard-leader-shanghai says:
醉应该更懂这种这些
bluestar_pm_BJ says:
客户也说不清呢,尤其是做政府项目
songhuijuan1982@hotmail.com says:
感觉这样的人不是很多啊,呵呵呵
blue-pm-bj says:
那你的计划肯定要变的
songhuijuan1982@hotmail.com says:
你们做项目都是用什么系统来管理的啊
chinamath(海茶)-Sr.SE-北京 says:
谢谢richard今天的讲课,让我受益匪浅。希望以后能有更多的机会交流。今天还有事,先走一步。各位兄弟继续。
谷雨霖【pharos】-CTO-BJ【帮忙推荐JAVA工程师--北京等地】 says:
richard-leader-shanghai says:
客气
blue-pm-bj says:
+姐妹
susan-pm-湖北 says:
感谢,我也得忙去了
chinamath(海茶)-Sr.SE-北京 says:
不好意思,兄弟姐妹们继续
谷雨霖【pharos】-CTO-BJ【帮忙推荐JAVA工程师--北京等地】 says:
richard的技术功底很扎实,让大家受益匪浅
不胜人生一场醉-闲人一个-海口 says:
richard-leader-shanghai says:
xiyeqing99-pm-上海 says:
谷雨霖【pharos】-CTO-BJ【帮忙推荐JAVA工程师--北京等地】 says:
好的。今天我们有幸请richard分两期介绍了自己在敏捷和代码管理方面的经验
谷雨霖【pharos】-CTO-BJ【帮忙推荐JAVA工程师--北京等地】 says:
非常感谢!
blue-pm-bj says:
thanks
richard-leader-shanghai says:
谢谢老谷
richard-leader-shanghai says:
谢谢大家
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/85849/viewspace-619374/ ,如需转载,请注明出处,否则将追究法律责任。