我们需要测试人员吗?

  先说一个故事。

  接手一个小项目,是因为之前的项目经理被调走了。当时跟我介绍项目情况的时候,这牛人项目经理说,项目完全没问题,功能那么一点点,很容易搞定的。我随口问了一句,有测试人员吗?答曰,这么简单的小项目,还需要测试人员吗?我茫然。

  这牛人于是介绍完了,把这个当时运行很流畅的项目组交给我。每个人都把客户需要的功能做出来了,也已经拼接好了,好像我接手是来拿做好的成果一样。

  忘了介绍这牛人了。这牛人为什么叫牛人,是因为特能加班。每每在项目交货的时候,跟客户耗上那么几个通宵。并且,还带着整个项目组去耗。我自认没有他那么牛。

  接手项目,并不是马上插手乱指挥,这是我的原则。但是还有2周要交付了,我也没有太多时间去慢慢了解项目。于是,在项目的第二天,我去找部门要测试人员了。问我理由,答曰,没有理由,是要2个测试人员。

  很容易的要到了两个PLMM。看着MM我心里舒坦。而且两个MM之前还没测过手机项目。没关系,有测试行。

  熟悉了之后,PLMM们第二天发现了一个很简单的BUG。简单的说,是ListView的数据,在一些操作之后,乱套了。本以为很简单的BUG,也没多问了。

  第三天,项目组成员们很紧张的忙着。第四天,还在忙。我有点坐不住了,去看了一圈代码,感觉有点晕乎。再看,猛然发现,这些代码的数据结构不对,需要重做!

  我的乖乖啊。这是神马啊。如果我放任这情况下去,在项目交货的时候,我也要被逼做牛人了啊!

  还好测试人员进入的早,这BUG带来的影响,在重构代码后,终于平息下来。我们在交付的时候,没有为业务逻辑而通宵。当然,客户的硬件和框架着实让我们牛了一回。我们只是晚上在等客户解决问题的时候,打打牌而已,没有被客户追着改BUG。

  故事说完了。“故”表示已经发生,“事”表示有这么一个经过。

  我不禁要问,难道有那么多人,认为手机项目,真的不要测试了吗?

  传统业务领域,测试人员的重要性已经被大家所接受。我在做项目经理的时候,一般是偏袒测试的,因为我对他们的支持,他们才可以放心的发表不同的意见,才能把问题尽早的暴露出来。当然,也因为我的支持,测试人员经常犯错,把一些正确的当作不对的。不过,我宁愿测试人员犯错,也不希望BUG和问题隐藏到后,到后客户发现了,那非要“牛”不可了。

  测试人员 ,在传统业务领域,做的几个验证工作,可以用一个V字模型来说明。

  1, 单元测试,是对编码的验证,保证编码无误,也是保证某个单元(可以是页面,可以是某个流程等等)被正确的编码。

  2, 结合测试,是对详细设计的验证,保证各个单元串起来之后,能够完成基本的业务流转。

  3, 功能测试,是对功能设计的验证,保证系统的各个大功能得以正常流转。

  4, 用户体验,是对需求分析的验证,保证系统是用户想要的东西。

  左边的开发流程,在手机项目中,因为项目的短平快,导致了很多缺失。简单的和客户沟通之后,客户可能只是给了一个大致的描述,几张效果图。开发组立即对这些客户给的资料进行设计,这个设计把功能设计、框架设计、详细设计、程序设计等等都包括了进去。以至于,只有开发人员才知道客户的需求。

  在这种情况下,整个项目组对测试人员是排斥的。而且测试人员对项目组也是排斥的。测试人员拿不到测试的依据和准绳,对测试无从下手。开发人员不愿意再去复述客户的需求,也不愿意再去整理各种设计,因为他们觉得代码是一切,设计都是为了代码而做的。现在代码已经有了,还要再去整理设计干什么。

  因为手机不如PC的屏幕大,所以很多人认为手机操作比PC程序简单,逻辑也相对简单,所以没必要加入测试人员。开发人员自己跑跑行了。

  以上的各种理由,都造成了短平快的Android项目排斥测试人员。甚至大型的Android项目也对测试不重视,认为有行了,比没有好。

  我在项目做完之后,认真的思考了测试人员在Android项目中,可以并且应该起到的作用。

  1. 用户需求的理解

  现在讲究的是用户体验。对于开发人员来说,天生的自信往往让他们以技术的角度去想问题。技术越牛,往往越会有这种倾向:这个技术多先进啊,用上去之后肯定是好东西。慢着,技术先进是用户的需求吗?所以,我们需要测试人员去理解用户需求,真正把握用户希望要的东西。因为测试人员的独立性,他们不会被技术细节所蒙蔽。

  2. 系统的整理操作流程

  手机因为屏幕小,操作少,所以操作流程往往被忽视。其实,手机程序一点不比PC程序简单。大量的关联操作,将极大的考验我们程序的健壮性。可以这么说,相对PC程序,手机程序的大段的逻辑不多,但是逻辑分支却比PC程序更多。也是说,手机程序有更多的路径需要覆盖。

  这些操作流程,在缺少设计的情况下,由测试人员来整理,肯定比开发人员整理要专业。测试人员可以只凭用户的一些简单信息,例如客户给的效果图、客户口述等,把一份大而全的Case分支给整理出来。当然有些是无法走到的,那个不会有太多影响,多浪费点验证和思考的时间,但是不会把一些细小的分支给漏了。

  手机程序必须比PC程序健壮。手机程序会经受用户的各种操作,正常的和异常的。毕竟手里拿着手机,很可能突然朋友吓一跳,不小心按到了某个键。所以说,缜密的操作流程,需要测试人员来整理。

  3. 细致的回归测试

  为什么我跳过测试,直接说回归测试呢?因为测试工作本身,不值得一提。那是测试人员的基本工作,像开发人员写if - else 一样。而且,很多人都认为,手机测试,开发人员互相测试也是可以的。但是回归测试不同。开发人员没有大量的时间去做测试。哪怕有这个时间,开发人员也不会有足够的耐心去走回头路。放心,我们的测试人员有,他们耐心细致的工作,会告诉那些不小心犯错的开发人员,你们要当心了……