结对编程的推行

这几天一直在探索有关结对编程的知识。关于结对的基本理论,上篇博客已经基本阐述了,这次主要总结一下结对编程在项目中和单元测试中如何去推行。

在项目中:

1、结对的双方限定为同一项目组;

2、领航者和实施者坐在同一台速度较快、配置较高的机器前,要保证两个人都能看清屏幕,尤其是领航者(可以考虑接一个显示屏);

3、两个人至少保证每分钟交流一次;

4、在我们提高班,建议用有经验的“老手”带“新手”的方式或者“新手”之间组合,尽量避免两个人都特别经验丰富,“老手”或“新手”在工作开始之前应该向对方解释清楚自己正在做的工作;

5、两名开发人员先共同制定一套设计方案,但绝大部分应由实施者完成;

6、代码完成后进行单元测试;

7、代码审查小组进行审查;

8、实施结对轮转机制,包括两方面:

(1)、领航者和实施者在一定时间内互换角色(比如一个小时,双方可以根据实际情况协调)

(2)、每个小模块完成后进行人员轮换,即更换结对对象(由于结对本来的目的之一就是每个人都需要了解整个项目的需求,所以几乎不存在“合作思维中断”现象)。

在单元测试中:

1、在两个搭档开始写出第一行代码之前,先要写出第一个自动化单元测试用例。程序员必须严格按照“先创建几个测试用例,在编写出一些产品代码”的规则来循环第进行开发。也就是说,在编写面向代码时,程序员们必须要为他们打算实现的每一个方法写出单元测试。

2、不同的人对它的理解会有所不同的。我们定义的结对测试是两个测试人员坐在一起(根据需要,他们可以共用一套环境,也可以用不同的环境平台)。其中,一个测试人员主要负责测试操作,而另一个主要负责记录测试结果、测试场景讨论和问题讨论等。但是需要注意的是,结对测试的两位成员是平等的,在测试过程中他们需要对测试提出自己的想法、思路和问题,避免某位成员只是一个记录员的角色。因此,结对测试中两个人共同努力对整个测试会话作出贡献很重要。

3、我们在实践结对测试过程中,是以文档化的测试用例为基础,但又不限于测试用例,鼓励在整个过程中运用更多的探索性测试。文档化的测试用例与探索性测试的有效结合,可以更好的满足脚本化的覆盖率要求,同时可以更加主动性创造性地发现更多的缺陷。同时,由于大家教育经历、看问题的角度、思维方式的差异等,都会帮助不同测试人员在测试同一个对象的时候,取长补短、优势互补,更好的发现缺陷。下面是结对测试的步骤:

(1)选择一个合适的结对测试伙伴;

(2)选择和建立合适的结对测试环境;

(3)计划测试的时间跨度,定义测试范围、测试关注点、测试目标、测试的输出等,类似于探索性测试中的测试章程;

(4)执行结对测试的会话:一人主导,另一个辅助。注意的是测试过程中需要不断进行测试场景、测试问题等的讨论;

(5)评估结对测试的结果:评估发现的问题、结对测试的效率和有效性评估、未解决的问题、下次会话的计划等。

未解决问题:

结对编程中还有一个“乒乓结对编程”:实施者编写失败的测试用例,领航者修改代码以通过该用例,实施者编写新的单元测试用例,等等。这个循环持续到观察者不能写出失败的测试用例。它与结对单元测试之间有什么关系还没有分析清楚,需要进一步探索。

总结:结对编程从理论上来讲好处很多,但综合来说,做好实践的还是很少的。因人因时地进行结对可以取得事半功倍的效果。所以,结对时要弄清解决什么样的问题,而且中途遇到困难是在所难免的,着力分析和解决解决这些困难才是最宝贵的经验。

时间: 2024-10-16 17:29:50

结对编程的推行的相关文章

结对编程初识

按照敏捷开发的要求,我们测试小组开始了第二个story.我领到了结对编程和跟着江霄一起完成关于.Net下对具体的项目代码写出测试Demo的task. 在结对编程的task中,主要又分为了概念性认识和具体推行两个子任务.这次主要还是单元测试理论性的一些基本认识吧. 定义: 结对编程就是两位程序员坐在同一工作台前开发软件.也就是说,两位程序员来完同一个设计,一个作为领航者在后边说代码怎么写,另一个作为实施者写代码. 优势:    对项目: (1)两个程序员具有相同的缺点和盲点的可能性很小,所以当我们

结对编程

结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作.一个人输入代码,而另一个人审查他输入的每一行代码.输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员).两个程序员经常互换角色. 在结对编程中,观察员同时考虑工作的战略性方向,提出改进的意见,或将来可能出现的问题以便处理.这样使得驾驶者可以集中全部注意力在完成当前任务的"战术"方面.观察员当作安全网和指南.结对编程对开发程序有很多好处.比如增加纪律性,写出更好的代码等.

软件工程------结对编程第二次

这一周我(1551426)还是继续和我们组的成员(1551419)两人一起结对编程,除此之外,我们还设计了数据库的,总共三个关系模式 room(roomtype,dailyprice,deposit) roominfo(roomnumber,roomtype,isfree) guest(id, startday,phonenumber,roomnumber,name,sex,stayday) 起初我们把room和guest 放在了一起,后来发现数据的冗余以后马上换成三个关系表. 这是我们的关系图

软工第二次实验——结对编程

1丶小组成员 卫瑞亮 1500802122 王玉卿 1500802099 2.代码链接 https://coding.net/u/qq1062718477/p/SE_task/git/commits/master/ 3.软件界面 4.结对编程照片 5.心得体会 到今天接触结对编程差不多两周了,对于结对编程有了更加深刻地理解,通过结对编程,我们可以及时的发现并解决后面可能会出现的问题,并且还能提升我们与别 人进行交流的能力,与人沟通对我们来说也是极为重要的,同时,结对编程使我们频繁进行交流,而且要

结对编程2——单元测试

 周迪 201421123089    黄睿 201421123069  coding.net 地址:http://git.oschina.net/hr2324/SoftEngHW 1.我们的代码要使它的利用率大大提高,所以我们要通过单元测试进一步完善代码,发现细小的错误.于是这次就用JUnit进行了简单四则运算的单元测试. a.需求分析:(1)在上次的基础上将计算模块单独创建一个类: (2)针对计算类做单元测试: (3)主要做整数和真分数的加减乘除: (4) 增量式开发,用git命令提交到co

结对编程2—— 单元测试

结对伙伴:201421123048,201421123036 coding.net 地址:https://git.coding.net/YJh_/PairProject_2.git a. 需求分析:测试上有哪些详细的需求? 1.把计算模块提取出来,单独创建一个类2.通过单元测试代码,测试加法是否能正确工作3.通过单元测试代码,测试加减乘除功能4.通过单元测试代码,测试计算类对于各种参数的支持 输入是有错误的,例如 "1 ++ 2" 在数值范围是 -1000 .. 1000 的时候,传进

结对编程-感想

这次大作业采用了结对编程的方式进行开发.我和赵宇航在这次结对编程中fix了绑定的bug以及进行了jmeter的配置和性能测试. 首先,我们通过讨论发现代码是正确的,但是绑定时会提示密码错误,我们思考了很久,突然想到,我们之前在"初始微信"功能开发时,将密码进行了base64加密,所以我们在调用的时候,需要用base64解码之后才可以,于是我们成功的解决了这个问题. 接下来,我们进行了jmeter的配置和学习,进行了简单的性能测试. 通过这次结对编程,我们发现结对编程确实有很多好处. 1

结对编程的体会

今天晚上,我与队友赵纯艺进行了一次结对编程,共同完成"微信抢票菜单调整"这个任务.因为在之前的开发中,我主要负责前后端借口,只是和数据库打交道,对与微信有关的接口不是很熟悉,所以在获取当前菜单和设置当前菜单时遇到了一点问题. 刚开始的时候,因为我们对彼此的工作都不是很了解,所以我花了比较长的时间向她说明我这部分的机制是如何运作的,理解了我的困惑后,她表示虽然记不太清楚,但是记得<开发指南>里有相关函数.通过查询文档,我们找到了对应的函数get_wechat_menu()和u

结对编程作业

这是第一次尝试结对编程,在本次结对编程作业中为了更好地体会它的好处和特点,我和我的搭档分别扮演了驾驶员和领航者的角色. 作为驾驶员:在我编程的过程中,出现了一些小问题,比如忘加分号,这些小问题可以及时的发现.有时我也会问我的领航者一些疑问,省去了上网查资料的过程,提高了编程的效率.在代码复审的过程中,有的问题我在自己调试的时候没有发现.比如输入某些数据的时候,离黄金点最近的玩家得0分.还有程序的功能上的一些缺陷,也被进一步完善.编程的时候我们会有一些交流,交流使我们互相更加了解对方的编程风格,在