Agile Testing

不得不说和@YongweiChen 一起合作是件很愉快的事,能在技术上交流,能放得开的扯,最关键是的那种你一句话没说完对方就完全明白的感觉。在FCity最幸运的事莫过去和最聪明的人一起工作。

####为什么是测试

之所以选择Testing作为这次分享的主题是有原因的,FCity刚开始实施SCRUM,很多东西都没有展开,作为技术型的产品,只有管理方式而不提技术是绝对不行的。在这个前提下,公司开始急功近利的搞测试,于是每个组都在做一些重复的事,就想把这件事拿出来,跟大家分享下敏捷测试的一些理念,如何打造一个好的敏捷团队,同时我们如何写出可被测的程序。

基于这个主题,我们把关于测试的一些大的概念给列了出来,致力从普及一些基本的知识,而不是针对于某一个小点去做深层次的分析,所以内容整体会很泛。很多人在试讲时就提出这样的一个问题,但我坚持认为这样做是有意义的。

这次更多的是让听者对敏捷测试有一个大的印象,不求大家都理解,只是让你知道有这么一个东西。如果听者关心,自然会自己去学,网上的教程一拉一大把,这种自我学习的方式才是我们所推荐的,而这次则是告诉大家有这个一个概念。

####“变”决定一切

用变作为开场和现代软件开发的主题,绝对是有意义的。大学时代,敏捷远远没有这么火,那时在学校所学到的软件工程大多以建筑来类比,标准的瀑布开发模型。但建筑因其本质不支持迭代导致其和软件开发走向不同的模式。

正是软件的可变性,导致其在各个领域的快速成长,语言方向进化出了面向对向,又有了面向对象设计模式,流程上引入迭代来拥抱变化,质量上通过更好的测试理念来保证,项目架构上也有分层,模块代的概念,以及领域驱动开发,这一切都是为了打破传统的对变化的拒绝。

以MSN的一周一个Release为例,再看Google所宣称的每天可以发布多个版本,都可以看出互联网软件开发的一个总体趋势,快速的应对变化,快速开发,快速发布还有快速的修复能力。

####敏捷测试理念

Bob大叔对测试有一个很经典的定义:测试就是确保程序做对做好。敏捷测试相对于传最强调的理念是快速反馈,包括开发人员和测试人员的快速沟通,快速的Bug修复,还有团队整体的工作方式,测试人员也从之前的最后一道防线,变身为服务提供者,尽早的引入用户参于测试,并关注自动化测试。

####敏捷团队

测试不再是某个人或者个专有组织的工作,而敏捷中提倡的是全员测试,更是体现整体团队的理念,敏捷测试的团队是怎样的呢?

首先就是刚所提到的团队的概念,同一个团队,同一个目标。所有的事情不再与职务有关,而是共同朝向这个目标进行。在我准备这个Presentation时,Alibaba也酝酿着裁掉QA部门,就是这个理。所有的人参于需求的分析,制定,参于到验收标准。

在与客户和开发人员的角色交互中,测试人员更多的职责是沟通、协助。

####自上而下的变革

可以看出传统上的架构和思想要被打破,开发人员承担更多技术上的债务,同时在工作上也会大大提高,以前只要写自己代码,但现在要再写上重复的Unit Test,为了这种可被测试,要去学习更多的敏捷架构知识。

那这种工作量的提高谁来买单?所以这种变革不可能是自下而上的,而应该是从管理层面的开始。这种多花时间写单元测试的理念应该被认可,在开发人员估时间时被加上。

####测试的分类

黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试、回归测试、功能测试、负载测试、压力测试、性能测试……测试不只这么一些种类,或许你能讲到更多,不同的公司和组织对测试也有不同的分类。同一测试用在不同时间或不同用途也会有不同的名称。

按业务、技术、团队、工具,敏捷测试一本将测试分为4个象限。第一象限则是和业务无关,纯技术的单元测试,由DEV独立完成,第二象限则带有一些业务层次的验证,由Tester和DEV配合完成,第三象限则是用户验收测试,由客户来进行,纯大多数时间是手工的,第四象限则是由工具来对一些安全等方面的测试。

####可被测试的架构

测试不是一句空话,不是说你测试就可以直接的进行测试的。测试是需要优秀的架构来保障的。也就是说软件本身的可测试性。

关于敏捷架构可以参见之前博客,有机会再做更深入总结:Thanks_MSN,Scrum at FCity,前端有FCity网站前端优化方向。

####会后的总结

Q:AZhen总结讲的有点乱。
确实我也能感觉到,在内容的组织上及用词上还是不够清晰。面对一个自己都不是很熟悉的领域第一次做这样的分享,只能说尽力了 ,如果有机会能多出去讲上几次,会更好一些的。毕竟那些专业的讲师都只是固定在自己擅长的领域。对这个问题只好这样自我安慰。

Q:Slide很棒,用什么好软件做的
其实就是用PowerPoint的,本意是为了在Mac和PC上共同创作,不用来回带笔记本上班,但因为字体原因没能实现,如果再有选择的话,我会便于用Keynote。在使用PowerPoint时,也没有用任何特效,Slide中的阴影和线都是手工画的。

Q:没有听到,能不能再重讲一次
想来为了这场分享准备了很久,如果只是这种小群体的分享也确实心有不甘。如果有机会,我真的蛮想出去讲一下,也算对得住AZhen送的投影笔。