【敏捷】7.showcase,开发中必须引起重视的小环节
有人说,测试者来自火星,开发者来自金星。这是因为软件测试员和软件开发者就好比一对冤家,里面的缘由说不清也道不明。开发代表着创造,而测试则代表着摧毁,因为测试的目的就是以各种方式不断地从开发出的产品中发现大大小小的Bug,长此以往,开发者认为测试者是在故意找茬,两者的矛盾慢慢就会产生。
敏捷之前项目中也有开发和测试,就如上文所说矛盾不少,比如测试测出一个bug,提单给开发,开发看了觉得这不是一个bug,实际业务过程中根本不会有这样的操作方法。还有测试提了一个问题单,开发在下面回复已解决,测试回归问题单的时候发现这个问题还存在,就质问开发这个问题没有解决还存在,开发肯定会说这个问题我已经解决了,是不是你的程序版本不对,重新构建一次,测试重新获取最新程序还是如此,开发因为任务重,同一个问题老是提过来肯定就会觉得烦,这样来几次就有可能吵起来。反正到最后开发觉得测试能力不行就只会找茬,真正的问题没有测出来,尽纠结一些无关重要的问题。而测试觉得开发的功能质量不行,不支持他们的工作。
以前并没有独立的产品经理来写需求,一般都是开发人员兼写需求,然后给测试人员测,当出现需求方面的理解不一致的问题,肯定都是开发人员更有理,就算测试人员找到几个不合理的需求,开发人员通常也不会虚心接受,反而觉得是在找自己的茬。所以在团队中独立出来产品经理负责所有需求是很有必要的,这样产品经理、开发、测试三者之间形成三足鼎立是比较好的局面。
一般来说测试人员都不会自己从SVN下载代码编译生成程序,然后进行测试。而是开发人员把编译好的程序和升级的数据库脚本拷贝到服务器的公共文件夹,然后测试人员再从服务器拷贝下来,数据库脚本在测试库上执行,经常会出现开发人员漏拷程序文件和数据库脚本,这样测试的结果肯定失败,然后开发找了半天原因发现只是漏了某个程序文件,然后就再循环一次。如此方式双方协作的效率很低,浪费了大量时间。
还有就是开发在完成功能后,并没有仔细进行自验证,只要代码编译通过了,一些明显错误没有修正就丢给测试去进行测试,那测试随便点两下系统就走不通了,只好打回给开发,一个需求测试用例跑完得反反复复好几次。
所以开发与测试之间要想好好协作,得双方需求理解一致、运行程序一致、运行环境一致、数据库一致,还要解决测试人员获取测试版本的方便性。
为了保障开发和测试对需求理解一致,我们在敏捷过程中通过计划会、测试用例评审和开发ShowCase这几个关键活动保障。计划会中产品经理讲解需求,开发和测试都会参加,如果需求理解不一致的地方就马上沟通由产品经理把关。到测试用例评审的时候,需求细化成一个个测试用例,这样让开发和测试进一步深化理解需求达成一致。到开发完成功能给测试Showcase,测试再一次核对开发实现功能与需求是否一致,明显不一致的地方当场指出来,等开发人员修正后才提交给测试进行测试,这样就基本能保证测试一次性就能跑完这个需求的所有测试用例。
运行程序、运行环境、数据库保持一致,这个靠手工的方式是很难不出错的,最好是通过一些工具来保障。我们团队是使用Jenkins来做持续构建,开发人员完成功能开发,然后提交代码到SVN,Jenkins检测到代码库变动,自动拉取最新代码进行编译构建、发布程序,测试数据库也自动还原成与开发数据库一致。
我们团队ShowCase的具体过程是这样的,开发完成功能提交代码后就通知测试进行ShowCase,这样时候持续构建已经生成了最新的环境,然后开发在测试环境上向测试人员进行功能展示,开发会按照需求把自己开发的功能都详细演示一遍,如果演示顺利通过测试人员则回到座位进行用例执行,如果演示没通过开发人员则继续修改代码完善直到演示通过为止。为什么开发一定要在测试环境上进行ShowCase,因为如果开发人员用自己的代码进行演示的话,还是有可能会出现代码效果与自动构建的程序不一致,所以为了避免这种情况,开发最好是在测试环境上进行演示。同样测试执行用例后产生的BUG,测试会提问题单,问题单要有详细的操作步骤与界面截图,然后开发人员解决BUG后要对此BUG进行根因分析,是代码逻辑错误还是需求理解问题,方便以后对BUG进行分析。BUG解决完后打回给测试的时候,开发也要进行ShowCase。
总之,现在觉得团队中开发和测试之间的关系还比较好,协作也很流畅,现在看来确实还是方法不对,虽然知道问题的原因但苦于找不到对症下药的办法,如果你的团队中也有类似情况可尝试一下ShowCase这个方法也好。
【敏捷】7.showcase,开发中必须引起重视的小环节的更多相关文章
- showcase,开发中必须引起重视的小环节
有人说,测试者来自火星,开发者来自金星.这是因为软件测试员和软件开发者就好比一对冤家,里面的缘由说不清也道不明.开发代表着创造,而测试则代表着摧毁,因为测试的目的就是以各种方式不断地从开发出的产品中发 ...
- 敏捷开发中的sprint是什么意思_百度知道
敏捷开发中的sprint是什么意思_百度知道 敏捷开发中的sprint是什么意思 未成年RB21 | 浏览 4208 次 推荐于2016-02-27 15:19:02 最佳 ...
- Scrum Mastery:产品开发中如何优化产品价值?
您是否在开发对组织来说有价值的产品?如何判断产品是否有价值? 如果没有经常提出这两个问题,那么您可能忽略了产品价值方面的问题. 产品是目前工作所要达成的目的,是组建团队的原因.产品也是你选择Scrum ...
- 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践
提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...
- GIT在iOS开发中的使用
前言 在iOS开发中,很多公司对项目的版本控制管理都使用了git,当然也有部分公司使用的是svn.当年我最初接触的是svn,觉得使用起来挺方便的,但是每次切分支都需要下载一份新的代码起来,这实在太麻烦 ...
- IOS开发中UI编写方式——code vs. xib vs.StoryBoard
最近接触了几个刚入门的iOS学习者,他们之中存在一个普遍和困惑和疑问,就是应该如何制作UI界面.iOS应用是非常重视用户体验的,可以说绝大多数的应用成功与否与交互设计以及UI是否漂亮易用有着非常大的关 ...
- 谈敏捷,谈开发 --《Agile Software Development》读后感
谈敏捷,谈开发 --<Agile Software Development>读后感 北航计算机学院 110616班 11061171 毛宇 联系方式:maoyu815930@sina.co ...
- python开发中常用的框架
以下是15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python Web应用开发框架 Django 应该是最出名的 ...
- iOS 开发中常见的设计模式
最近有小伙伴问到在iOS开发中的几种设计模式,这里摘录一下别人的总结(因为已经感觉总结得差不多了,适用的可以阅读一下) 首先是开发中的23中设计模式分为三大类:1.创建型 2.结构型 3.行为型 (i ...
随机推荐
- jQuery插件实例二:年华时代插件ReturnTop回到首页
这个插件功能在于当网页内容高度很高时,方便用户快速回到顶部.核心在于对屏幕高度的获取,定时器的使用,在引用代码后,只使用$.nhsd.returnTop();即可实现效果 效果图: 代码: ; fun ...
- LinkedHashSet 元素唯一,存储取出有序
package cn.itcast_04; import java.util.LinkedHashSet; /* * LinkedHashSet:底层数据结构由哈希表和链表组成. * 哈希表保证元 ...
- IP地址编址
比特:一比特就是一个数字,1或者0. 字节:以字节是7比特或者8比特,取决于是否使用奇偶校验 八位组:8比特构成 网络地址:用来将数据包发送到远端网路 比如10.0.0.0 广播地址:将信息发送给网络 ...
- scala抽象类实战
实战一: 声明一个抽象类(SuperTeacher):(超级老师) abstract class SuperTeacher(val name : String){ var id : Int var a ...
- 使用Oracle的instr函数与索引配合提高模糊查询的效率
使用Oracle的instr函数与索引配合提高模糊查询的效率 一般来说,在Oracle数据库中,我们对tb表的name字段进行模糊查询会采用下面两种方式:1.select * from tb wher ...
- Oracle中修改sysman和dbsnmp密码正确流程
1.停止dbconsole $ emctl stop dbconsole 查看状态,确认dbconsole已经停止 $ emctl status dbconsole 2.修改sysman用户和db ...
- 常见dos命令(win7下测试)
按下组合键:win + R ,输入cmd进入Dos. 1. cls :清屏命令. 2. ver :查看系统版本号命令,winver弹出一个窗口显示更详细的系统版本号. 3. dir 无参数 : ...
- python第二十二课——list函数
演示list类型中常用的一些函数: 1.append(obj):将obj元素追加到列表的末尾 lt=['路费','佐罗','山治','乔巴','乌索普','纳米桑'] #append(): lt.ap ...
- 1084. [SCOI2005]最大子矩阵【网格DP】
Description 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵 不能相互重叠. Input 第一行为n,m,k(1≤n≤100,1≤m≤ ...
- [Violet]天使玩偶/SJY摆棋子
题目 \(KD-tree\)做最近点对的复杂度好像是假的吧,怎么看也看不出来是\(O(\sqrt{n})\)啊 首先\(KD-tree\)长得和平衡树还是很像的,每个节点都存储了一个\(k\)维空间上 ...