接触手机测试大概有6年时间,感慨颇多,几乎手机所有的问题都碰到过,从硬件到软件,从结构到生产,几乎样样都接触过。一直想总结一下,但是总是没时间(哈哈,这个是借口),趁这个机会简单写写我的感触。

  一、手机到底是一个什么东西?

  现在没有人能够准确定义手机的概念,因为它的功能太丰富了。你说它是电话,但是音频视频功能也许是它的卖点,你说它是照相机,但是也许更多的用它来导航,等等……所以作为一个手机测试工程师,你一定要跟上手机的发展,如果仅仅靠你那点软件测试功底,你离out已经不远了。电话,蓝牙,WIFI(甚至WAPI),camera,GPS,CMMB等等五花八门的功能都是测试工程师应该学习的东西,尽管它们都是用代码来实现的,但是测试方法不同,一个好的工程师,必须对这些功能了如指掌,甚至它们的原理,它们的使用环境都要知道,否则,你无法全面的测试它。所以手机发展到现在,成了个人身边重要的终端,无论你是否承认,它才是你亲密的伙伴。为了让你们的产品成为客户亲密的伙伴,手机测试工程师成为重要的一环。

  二、手机测试工程师是手机的第一用户

  谁是产品的第一个用户?毫无疑问,测试工程师。不要指望开发人员会成为第一个用户,爹妈不会觉得自己的孩子不好。测试工程师应该站在专业角度来客观评价,但是也更应该站在用户角度主观感受。要知道,用户是人,不是机器,他们用得不爽的时候,会抱怨,会退机。所以谁才是真正的测试工程师?用户!但是,谁敢让他们报bug么?大家都不敢,也不想。那么,测试工程师必须充当好第一用户的角色,测试时处处站在用户的角度去考虑。有一次,我们的一个版本发出给客户,结果被客户投诉,问题是,使用手机拍照时会有光晕。可是测试工程师在测试过程中只验证了拍照功能的好坏,虽然他自己说有注意到光晕,但他自己觉得可以接受,结果把这个问题放了过去。从这件事上来说,这个测试工程师不够细心,从根本上来说,他没有把自己当成用户,他只认为自己是工程师。之前我们的测试工程师一只都把自己当成工程师,很多问题他自己知道原因,所以不认为是Bug,甚至知道解决不了,不上Bug,那时我们的测试工程师都是很棒的,除了不会写代码,对功能的理论知识都非常熟悉,很多问题都要过来问他们,但是这也导致一个项目做下来,有500个Bug已经很多了。后来,对这些工程师进行教育和指导,一直在灌输测试工程师是用户的思想,只要是问题,让你觉得不爽的是bug,无论能不能解决。结果,后来每个项目都可以达到2000个bug,而且被客户发现问题的情况大大减少,因为再小的问题都已经被挖出来了。所以,把自己当成是用户,是作为一个手机测试工程师基本的素质。微软有一个名词,叫dogfood,是狗食,意思是说,自己的产品要自己先试用,即使你做的是狗食,也要自己先尝试,当你都不抱怨了,难道狗还会抱怨么?

  三、测试用例无法发现全部问题,要善于总结上一个项目发现的bug

  虽然很不愿意承认这样一个事实,但是测试用例确实无法发现全部问题。手机相比其他产品的应用环境要复杂得多。经过后来统计,我们通过case发现的bug只能占到70%左右。这中间有一定的客观原因,是项目紧张,测试工程师没有足够的时间去进行测试用例的设计,这导致用例的质量不高,数量不够。但也有一点,是很多问题很特殊,根本不是用例可以覆盖的到的。举个例子,在一个项目后期,软件基本稳定,场测也做了几次,问题都不是很大。但是突然有,一个工程师抱怨说,他用的手机会自动拨出电话,但是手机界面没有任何反应,但对方可以接通。这是一个很严重的问题,我赶紧召集开发工程师,测试工程师共同分析,有人不太相信会有这样的事情,原因很简单,项目做了这么久,这个问题不可能才暴露。但是,既然出现了,那么说明这个bug是存在的,至于为什么才暴露出来,不是这个时候该去思考的。通过分析,这个同事近才刚刚换用这款手机,已经出现过两次,每次都是拨给他的家人,据家人反映的时间,正好是他下班的路上。所以我们建议他晚上先跟家里人打个招呼,如果再碰到这个问题,立即把电话打回来。果然,他回去的路上电话再次偷偷的拨出。经过后来总结,这个问题只要经过他路上的某一个位置会发生。而这条路并没有在我们场测的路线中,终,我们把这条路也定为场测路线。由此可见,手机的测试用例是很难写全面的,原因很简单,手机应用场景太复杂,没有办法测试到每一个场景,但是上一个项目发生的bug会很有效的弥补这个问题,只要将项目的bug,经过总结,提炼,补充到工程师编写的case中,经过10个左右的项目,那么你的case会很强壮,因为你会发现,项目后期大量的bug都是由bug case找到的。甚至有人说,其余的case可以不用跑了,只要这些足够了,当然,这只是笑话。

  四、手机测试和软件测试的不同

  个人感觉,能做好软件测试的人,不一定能做好手机测试,同样道理,做好手机测试的人,也不一定能做好软件测试。尽管测试在思想上是一致的,但是产品不同,你所需要的经验也不同。为什么说到这个问题,是因为我们在招聘后备人才的时候经常会从北大青鸟或者其他培训学校中挑选学生,尽管这些人经过专业的软件测试培训,对测试理论了如指掌,但他们根本不了解手机,除了会用,他们说不出别的。所以后来我并不太喜欢从这些学校中招人,而更愿意去招那些没有测试经验,但是学电子通信的应届毕业生,这种人往往后来成了部门的中坚力量。我们也留下一些经过软件测试培训的学生,一年之后聊天会发现,他们所学的知识,很少被用到实际工作当中。这里我并不是说软件测试培训不好,而且这种培训对于手机测试来说是远远不够的。对于那些进入测试行业不久的同行们来说,这其实是两条不同的路,虽然有着相同的测试思想,但是却用着不同的测试方法和技术,所以至于怎么选择,要看个人的兴趣,如果你是一个动手能力和好奇心很强,喜欢新鲜事物的人,也许手机测试更适合你。

  时间有些匆忙,简单的写了些这些年的几点看法,有不足的地方欢迎指正。