showcase,开发中必须引起重视的小环节
有人说,测试者来自火星,开发者来自金星。这是因为软件测试员和软件开发者就好比一对冤家,里面的缘由说不清也道不明。开发代表着创造,而测试则代表着摧毁,因为测试的目的就是以各种方式不断地从开发出的产品中发现大大小小的Bug,长此以往,开发者认为测试者是在故意找茬,两者的矛盾慢慢就会产生。
敏捷之前项目中也有开发和测试,就如上文所说矛盾不少,比如测试测出一个bug,提单给开发,开发看了觉得这不是一个bug,实际业务过程中根本不会有这样的操作方法。还有测试提了一个问题单,开发在下面回复已解决,测试回归问题单的时候发现这个问题还存在,就质问开发这个问题没有解决还存在,开发肯定会说这个问题我已经解决了,是不是你的程序版本不对,重新构建一次,测试重新获取最新程序还是如此,开发因为任务重,同一个问题老是提过来肯定就会觉得烦,这样来几次就有可能吵起来。反正到最后开发觉得测试能力不行就只会找茬,真正的问题没有测出来,尽纠结一些无关重要的问题。而测试觉得开发的功能质量不行,不支持他们的工作。
以前并没有独立的产品经理来写需求,一般都是开发人员兼写需求,然后给测试人员测,当出现需求方面的理解不一致的问题,肯定都是开发人员更有理,就算测试人员找到几个不合理的需求,开发人员通常也不会虚心接受,反而觉得是在找自己的茬。所以在团队中独立出来产品经理负责所有需求是很有必要的,这样产品经理、开发、测试三者之间形成三足鼎立是比较好的局面。
一般来说测试人员都不会自己从SVN下载代码编译生成程序,然后进行测试。而是开发人员把编译好的程序和升级的数据库脚本拷贝到服务器的公共文件夹,然后测试人员再从服务器拷贝下来,数据库脚本在测试库上执行,经常会出现开发人员漏拷程序文件和数据库脚本,这样测试的结果肯定失败,然后开发找了半天原因发现只是漏了某个程序文件,然后就再循环一次。如此方式双方协作的效率很低,浪费了大量时间。
还有就是开发在完成功能后,并没有仔细进行自验证,只要代码编译通过了,一些明显错误没有修正就丢给测试去进行测试,那测试随便点两下系统就走不通了,只好打回给开发,一个需求测试用例跑完得反反复复好几次。
所以开发与测试之间要想好好协作,得双方需求理解一致、运行程序一致、运行环境一致、数据库一致,还要解决测试人员获取测试版本的方便性。
为了保障开发和测试对需求理解一致,我们在敏捷过程中通过计划会、测试用例评审和开发ShowCase这几个关键活动保障。计划会中产品经理讲解需求,开发和测试都会参加,如果需求理解不一致的地方就马上沟通由产品经理把关。到测试用例评审的时候,需求细化成一个个测试用例,这样让开发和测试进一步深化理解需求达成一致。到开发完成功能给测试Showcase,测试再一次核对开发实现功能与需求是否一致,明显不一致的地方当场指出来,等开发人员修正后才提交给测试进行测试,这样就基本能保证测试一次性就能跑完这个需求的所有测试用例。
运行程序、运行环境、数据库保持一致,这个靠手工的方式是很难不出错的,最好是通过一些工具来保障。我们团队是使用Jenkins来做持续构建,开发人员完成功能开发,然后提交代码到SVN,Jenkins检测到代码库变动,自动拉取最新代码进行编译构建、发布程序,测试数据库也自动还原成与开发数据库一致。
我们团队ShowCase的具体过程是这样的,开发完成功能提交代码后就通知测试进行ShowCase,这样时候持续构建已经生成了最新的环境,然后开发在测试环境上向测试人员进行功能展示,开发会按照需求把自己开发的功能都详细演示一遍,如果演示顺利通过测试人员则回到座位进行用例执行,如果演示没通过开发人员则继续修改代码完善直到演示通过为止。为什么开发一定要在测试环境上进行ShowCase,因为如果开发人员用自己的代码进行演示的话,还是有可能会出现代码效果与自动构建的程序不一致,所以为了避免这种情况,开发最好是在测试环境上进行演示。同样测试执行用例后产生的BUG,测试会提问题单,问题单要有详细的操作步骤与界面截图,然后开发人员解决BUG后要对此BUG进行根因分析,是代码逻辑错误还是需求理解问题,方便以后对BUG进行分析。BUG解决完后打回给测试的时候,开发也要进行ShowCase。
总之,现在觉得团队中开发和测试之间的关系还比较好,协作也很流畅,现在看来确实还是方法不对,虽然知道问题的原因但苦于找不到对症下药的办法,如果你的团队中也有类似情况可尝试一下ShowCase这个方法也好。
showcase,开发中必须引起重视的小环节的更多相关文章
- 【敏捷】7.showcase,开发中必须引起重视的小环节
有人说,测试者来自火星,开发者来自金星.这是因为软件测试员和软件开发者就好比一对冤家,里面的缘由说不清也道不明.开发代表着创造,而测试则代表着摧毁,因为测试的目的就是以各种方式不断地从开发出的产品中发 ...
- IOS开发中UI编写方式——code vs. xib vs.StoryBoard
最近接触了几个刚入门的iOS学习者,他们之中存在一个普遍和困惑和疑问,就是应该如何制作UI界面.iOS应用是非常重视用户体验的,可以说绝大多数的应用成功与否与交互设计以及UI是否漂亮易用有着非常大的关 ...
- PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等
页面导航: 首页 → 网络编程 → PHP编程 → php技巧 → 正文内容 PHP安全 PHP开发中常见的安全问题详解和解决方法(如Sql注入.CSRF.Xss.CC等) 作者: 字体:[增加 减小 ...
- SQL开发中容易忽视的一些小地方(一)
原文:SQL开发中容易忽视的一些小地方(一) 写此系列文章缘由: 做开发三年来(B/S),发现基于web 架构的项目技术主要分两大方面: 第一:C#,它是程序的基础,也可是其它开发语言,没有开发语言也 ...
- Ionic2 + Angular4 + JSSDK开发中的若干问题汇总
前景 目前微信公众号程序开发已经相当火热,客户要求自己的系统有一个公众号,已经是一个很常见的需要. 使用公众号可以很方便的便于项目干系人查看信息和进行互动,还可以很方便录入一些电脑端不便于录入的数据, ...
- 【Unity游戏开发】浅谈Unity游戏开发中的单元测试
一.单元测试的定义与作用 单元测试定义:单元测试在传统软件开发中是非常重要的工具,它是指对软件中的最小可测试单元进行检查和验证,一般情况下就是对代码中的一个函数去进行验证,检查它的正确性.一个单元测试 ...
- Scrum Mastery:产品开发中如何优化产品价值?
您是否在开发对组织来说有价值的产品?如何判断产品是否有价值? 如果没有经常提出这两个问题,那么您可能忽略了产品价值方面的问题. 产品是目前工作所要达成的目的,是组建团队的原因.产品也是你选择Scrum ...
- 稍微谈一下 javascript 开发中的 MVC 模式
随着前台开发日益受到重视,客户端代码比重日益增加的今天,如何在javascript开发里应用MVC模式,这个问题似乎会一直被提到,所以偶在这里粗略的谈一下自己的看法吧. MVC模式的基本理念,是通过把 ...
- TDD在Unity3D游戏项目开发中的实践
0x00 前言 关于TDD测试驱动开发的文章已经有很多了,但是在游戏开发尤其是使用Unity3D开发游戏时,却听不到特别多关于TDD的声音.那么本文就来简单聊一聊TDD如何在U3D项目中使用以及如何使 ...
随机推荐
- Cookie的作用以及封装的方法
Cookie相当于本地储存(local Storage),也是一种储存信息的方式. 它通过 document.cookie ='name=value' //name name值 value value ...
- java基础之IO篇
IO流 在计算机中的流是有方向的即为IO流,分为输入流和输出流,他们的方向都是以服务的方向为主,向服务器中发送指令等等就是输出流,服务器给出的反应等等,我们都说为输出流. 字节流 字符流 输入流 In ...
- 织梦dedecms单标签、双标签
标签是dedecms的核心,dedecms的标签也跟html标签一样,同样分单标签和双标签. 我不会讲单标签有那些,双标签有那些,也不会叫大家去背那些是单标签,那些是双标签.如果去背这些标签,这样学起 ...
- 实现Runnable接口和继承Thread类之间的区别
在Java语言中,我们都知道,有两种创建线程的方式,一中是使用Runnable接口,另一种是使用Thread类. public class DemoRunnable implements Runnab ...
- AngularJS高级程序设计读书笔记 -- 过滤器篇
一. 过滤器基础 过滤器用于在视图中格式化展现给用户的数据. 一旦定义过滤器之后, 就可在整个模块中全面应用, 也就意味着可以用来保证跨多个控制器和视图之间的数据展示的一致性. 过滤器将数据在被指令处 ...
- 【JavaScript学习】-事件响应,让网页交互
什么是事件: JavaScript 创建动态页面.事件是可以被 JavaScript 侦测到的行为. 网页中的每个元素都可以产生某些可以触发 JavaScript 函数或程序的事件. 比如说,当用户单 ...
- cygwin vi编辑器左右上下键和删除键乱码错误
安装cygwin后使用其中的vi编辑器时发现上下左右键和删除键乱码,搜索了中文的帮助方案,没有解决,最后搜索了英文的网站,找到了解决方案.参考链接如下:http://superuser.com/que ...
- ubuntu 16.04.2 源码安装gitlab并且利用runner持续集成
参考原档:https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md#using-https 本章只 ...
- 【LeetCode】112. Path Sum
题目: Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up ...
- H5学习第二周
怎么说,在各种感觉中h5学习的第二周已经过来了,先总结一下,感觉学习h5是一件让我爱恨交加的事,学会一些新的知识并把它成功运行出来的时候是非常激动和兴奋的,但是有时候搞不懂一个标签或者属性的时候,就有 ...