有人说,测试者来自火星,开发者来自金星。这是因为软件测试员和软件开发者就好比一对冤家,里面的缘由说不清也道不明。开发代表着创造,而测试则代表着摧毁,因为测试的目的就是以各种方式不断地从开发出的产品中发现大大小小的Bug,长此以往,开发者认为测试者是在故意找茬,两者的矛盾慢慢就会产生。


    敏捷之前项目中也有开发和测试,就如上文所说矛盾不少,比如测试测出一个bug,提单给开发,开发看了觉得这不是一个bug,实际业务过程中根本不会有这样的操作方法。还有测试提了一个问题单,开发在下面回复已解决,测试回归问题单的时候发现这个问题还存在,就质问开发这个问题没有解决还存在,开发肯定会说这个问题我已经解决了,是不是你的程序版本不对,重新构建一次,测试重新获取最新程序还是如此,开发因为任务重,同一个问题老是提过来肯定就会觉得烦,这样来几次就有可能吵起来。反正到最后开发觉得测试能力不行就只会找茬,真正的问题没有测出来,尽纠结一些无关重要的问题。而测试觉得开发的功能质量不行,不支持他们的工作。

以前并没有独立的产品经理来写需求,一般都是开发人员兼写需求,然后给测试人员测,当出现需求方面的理解不一致的问题,肯定都是开发人员更有理,就算测试人员找到几个不合理的需求,开发人员通常也不会虚心接受,反而觉得是在找自己的茬。所以在团队中独立出来产品经理负责所有需求是很有必要的,这样产品经理、开发、测试三者之间形成三足鼎立是比较好的局面。

一般来说测试人员都不会自己从SVN下载代码编译生成程序,然后进行测试。而是开发人员把编译好的程序和升级的数据库脚本拷贝到服务器的公共文件夹,然后测试人员再从服务器拷贝下来,数据库脚本在测试库上执行,经常会出现开发人员漏拷程序文件和数据库脚本,这样测试的结果肯定失败,然后开发找了半天原因发现只是漏了某个程序文件,然后就再循环一次。如此方式双方协作的效率很低,浪费了大量时间。

还有就是开发在完成功能后,并没有仔细进行自验证,只要代码编译通过了,一些明显错误没有修正就丢给测试去进行测试,那测试随便点两下系统就走不通了,只好打回给开发,一个需求测试用例跑完得反反复复好几次。

所以开发与测试之间要想好好协作,得双方需求理解一致、运行程序一致、运行环境一致、数据库一致,还要解决测试人员获取测试版本的方便性。

为了保障开发和测试对需求理解一致,我们在敏捷过程中通过计划会、测试用例评审和开发ShowCase这几个关键活动保障。计划会中产品经理讲解需求,开发和测试都会参加,如果需求理解不一致的地方就马上沟通由产品经理把关。到测试用例评审的时候,需求细化成一个个测试用例,这样让开发和测试进一步深化理解需求达成一致。到开发完成功能给测试Showcase,测试再一次核对开发实现功能与需求是否一致,明显不一致的地方当场指出来,等开发人员修正后才提交给测试进行测试,这样就基本能保证测试一次性就能跑完这个需求的所有测试用例。

运行程序、运行环境、数据库保持一致,这个靠手工的方式是很难不出错的,最好是通过一些工具来保障。我们团队是使用Jenkins来做持续构建,开发人员完成功能开发,然后提交代码到SVN,Jenkins检测到代码库变动,自动拉取最新代码进行编译构建、发布程序,测试数据库也自动还原成与开发数据库一致。

我们团队ShowCase的具体过程是这样的,开发完成功能提交代码后就通知测试进行ShowCase,这样时候持续构建已经生成了最新的环境,然后开发在测试环境上向测试人员进行功能展示,开发会按照需求把自己开发的功能都详细演示一遍,如果演示顺利通过测试人员则回到座位进行用例执行,如果演示没通过开发人员则继续修改代码完善直到演示通过为止。为什么开发一定要在测试环境上进行ShowCase,因为如果开发人员用自己的代码进行演示的话,还是有可能会出现代码效果与自动构建的程序不一致,所以为了避免这种情况,开发最好是在测试环境上进行演示。同样测试执行用例后产生的BUG,测试会提问题单,问题单要有详细的操作步骤与界面截图,然后开发人员解决BUG后要对此BUG进行根因分析,是代码逻辑错误还是需求理解问题,方便以后对BUG进行分析。BUG解决完后打回给测试的时候,开发也要进行ShowCase。

总之,现在觉得团队中开发和测试之间的关系还比较好,协作也很流畅,现在看来确实还是方法不对,虽然知道问题的原因但苦于找不到对症下药的办法,如果你的团队中也有类似情况可尝试一下ShowCase这个方法也好。

敏捷开发系列文章目录

【敏捷】7.showcase,开发中必须引起重视的小环节的更多相关文章

  1. showcase,开发中必须引起重视的小环节

    有人说,测试者来自火星,开发者来自金星.这是因为软件测试员和软件开发者就好比一对冤家,里面的缘由说不清也道不明.开发代表着创造,而测试则代表着摧毁,因为测试的目的就是以各种方式不断地从开发出的产品中发 ...

  2. 敏捷开发中的sprint是什么意思_百度知道

    敏捷开发中的sprint是什么意思_百度知道     敏捷开发中的sprint是什么意思    未成年RB21 | 浏览 4208 次    推荐于2016-02-27 15:19:02     最佳 ...

  3. Scrum Mastery:产品开发中如何优化产品价值?

    您是否在开发对组织来说有价值的产品?如何判断产品是否有价值? 如果没有经常提出这两个问题,那么您可能忽略了产品价值方面的问题. 产品是目前工作所要达成的目的,是组建团队的原因.产品也是你选择Scrum ...

  4. 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践

    提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...

  5. GIT在iOS开发中的使用

    前言 在iOS开发中,很多公司对项目的版本控制管理都使用了git,当然也有部分公司使用的是svn.当年我最初接触的是svn,觉得使用起来挺方便的,但是每次切分支都需要下载一份新的代码起来,这实在太麻烦 ...

  6. IOS开发中UI编写方式——code vs. xib vs.StoryBoard

    最近接触了几个刚入门的iOS学习者,他们之中存在一个普遍和困惑和疑问,就是应该如何制作UI界面.iOS应用是非常重视用户体验的,可以说绝大多数的应用成功与否与交互设计以及UI是否漂亮易用有着非常大的关 ...

  7. 谈敏捷,谈开发 --《Agile Software Development》读后感

    谈敏捷,谈开发 --<Agile Software Development>读后感 北航计算机学院 110616班 11061171 毛宇 联系方式:maoyu815930@sina.co ...

  8. python开发中常用的框架

    以下是15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python Web应用开发框架 Django 应该是最出名的 ...

  9. iOS 开发中常见的设计模式

    最近有小伙伴问到在iOS开发中的几种设计模式,这里摘录一下别人的总结(因为已经感觉总结得差不多了,适用的可以阅读一下) 首先是开发中的23中设计模式分为三大类:1.创建型 2.结构型 3.行为型 (i ...

随机推荐

  1. 如何创建一个Quartz.NET的工作,需要注射autofac

    问题: 使用 Quartz.Net 做定时任务时,实现IJob对象的服务,Autofac不会自动注入,使用构造函数会直接出现异常,无法执行Execute方法. 解决方式 方法一: 使用 Autofac ...

  2. 网络编程--Socket(套接字)

    网络编程 网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯.网络编程中 有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后 如何可靠高效的进行数据传输.在 ...

  3. APUE 12.7 取消选项

  4. QT5.8连接Mysql提示QMYSQL driver not loaded

    我们都知道在QT5.8系列里已经带了Mysql的dll文件 驱动的名字为“qsqlmysql.dll”和“qsqlmysqld.dll” 但是按照网上的各种教程和博客基本都是错的,只有个别人是对的. ...

  5. adb shell 运行时报错"adb server version (26) doesn't match this client (39); killing..."的解决方案

    adb即 Android Debug Bridge 是一个通用的命令行工具,可用于通过PC端对连接的Android模拟器设备或连接至电脑的真实物理设备进行命令行操作.目前,许多软件均会借助 adb 工 ...

  6. BZOJ3667:Rabin-Miller算法(Pollard-Rho)

    Description Input 第一行:CAS,代表数据组数(不大于350),以下CAS行,每行一个数字,保证在64位长整形范围内,并且没有负数.你需要对于每个数字:第一,检验是否是质数,是质数就 ...

  7. net mvc中实现记录用户登录信息(记住登录效果)

    现记录用户登录信息(记住登录效果) 本文讲述了使用cookies实现网站记住登录效果,效果如下: 主要实现方法,当用户选择记住登录时建立cookies保存用户名和用户密码,当用户登录不选择记住登录时, ...

  8. Hadoop学习之路(二)Hadoop发展背景

    Hadoop产生的背景 1. HADOOP最早起源于Nutch.Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取.索引.查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题—— ...

  9. 谷歌浏览器安装POSTMAN

    1.下载postman插件,可以自己到网上下载,也可以点击http://download.csdn.net/detail/u010246789/9528471 2.解压文件,在解压后的文件夹中找到.c ...

  10. springmvc项目打war包部署到tomcat访问路径去掉项目名

    一般来说,部署到tomcat则是把war包丢到webapps目录下,启动Tomcat会自动解压,成一个war包名称的文件夹项目, 例如imgManager.war 访问的地址一般是localhost: ...