软件测试有感
从事了测试工作7,8年了,多少有些心得体会,一直想写些什么,但又好像无从下笔,直到今天看到一篇 博文,同作者的观点甚为认同,于是也决定写下自己的感受。
先来说说原文的几个观点
1. 很多人认为最重要并且最不值钱(这里的值钱指的是值多少工资,并不代表做这件事的价值)的是手工测试,实际上手工测试是最具有价值的测试
本人对这个观点甚为认同,从事了这么久的测试工作,大多数时间都是在做或者在带同事做手工测试的工作,项目中绝大多数的问题都是通过手工测试发现的。但不知到从什么时候起,从哪里起源一种说法,手工测试是低级的,无技术含量的,测试人员要发展就要从事自动化测试和性能测试。面试过不少刚入行测试的同学,普遍持有这种观点,觉得职业发展就需要从事自动化测试和性能测试。
与原文的打的一个比喻相似,我也经常用走路和乘车来比喻不同的测试方法。软件测试就好比要去一个目的地,手工测试就像是走路,自动化就像是乘车,乘车自然要比走路要省时省力,当然成本也比较高。现实中,乘车已经很普遍了,效果也非常好,但为什么在软件测试中,自动化所起到的作用没有像乘车那样明显呢?我觉得是“路”的问题。现实中为了开车,先要修路,但软件测试中有没有为自动化所修的路呢?现在大多数的软件,使用对象都是人,都是人手操作的,用手工测试最能模拟到真实的使用环境和使用场景,所以手工测试能发现很多问题。而自动化测试只是用程序去测试了程序,很大程度上忽略了环境和场景,就好像去往目的地有2条路,一条窄窄的人行道和一条宽阔的水泥路,你的车只能在水泥路上行驶,于是人行道的问题自然无法发现。而不幸的是,真实的用户都是走人行道的。
所以我认为,手工测试和自动化测试并不是低级和高级的区别,而是不同的手段而已,究竟使用什么手段,要根据不同的情况而定,就好像根据不同目的地的路况来选择走路还是乘车一样。
2. 最没有市场的应该是自动化测试
这个观点我算是同意大半吧,为什么这么说呢,因为就目前国内的情况来说,的确是这样。国内的软件项目普普遍周期短,工期紧,资源少,而自动化测试却刚好相反,需要耗费大量的人力物力和时间,在这两者可以达到平衡之前,我也觉得自动化测试举步维艰。也来打个比喻,自动化测试就像开车去一个目的地需要2天,之前需要修路1个月、买车上牌要1个星期、每天需要加油,如果要求你1个月内就要去到目的地的话,你可能路还没修好。换了手工测试就像是走路,从第1天起就可以走啊走,不停走,可能20天就到了。换到实际中,修路买车就是编写你的自动化程序,加油就是维护你的程序,能不能及时到达目的地,就要看你的程序能不能及时完成。
有的同学会发现,自动化程序和道路汽车一样,是可以重复使用的,就是说下次我再去的时候,就不用重新修路买车了。如果目的地一样的话,的确是这样的,例如一些做通用产品的同学可能会好一点,因为他们对很多常去的目的地都修了路,但多数同学面对的可能都是各种各样不常去的目的地。正是因为有这些问题,所以国内的自动化测试很难开展。但正如前文所说,作为测试的一种手段,即使存在很多先天不足,我还是觉得自动化测试很有必要,因此我才会对原文的观点同意大半,剩下的小半,是我觉得自动化测试可以用另外的形式去开展。
以怎样的另外形式去开展呢?我的想法是用工具辅助测试,自动化的优点在于用工具(程序)去完成测试,比手工测试要快捷和省力,但缺点是实现成本高,可用范围小(如果扩大使用范围的话,成本将进一步升高)。相反,手工测试则是可用范围大,成本低,但费时费力。如果可以将二者结合,在一些手工测试中适合使用工具的场景,使用一些现成的工具或者可快速开发的测试程序,这样就可以吸取两者的优点,提高测试的效率。当然,说起来容易,做起来并不简单,这里先不展开讲,以后有机会再另文讲述吧。这里 有篇文章也分享给大家。
说完了自动化测试,怎能不说说性能测试呢,这两个都是做测试的同学们非常向往的东西。现实中我也和不少做测试的同学聊过,聊到自动化和性能测试,大多都能说出不少自动化/性能测试软件的名字,至于用到什么程度,用来做过些什么,就很少人能深入谈下去了。我心目中的自动化和性能测试并不是安装个软件,照着教程上运行几个demo,然后就可以在实际项目中使用的。因为我们需要的是做自动化/性能测试,而不是用自动化/性能测试工具,这可是有很大区别的。举个例子,我问一个小学生,会不会学作文啊?他回答我,说会用圆珠笔写字了。呵呵。
说了这么多,其实想表达什么呢?总结一下。
软件测试,无论手工也好,自动化也好,功能测试也好,性能测试也好,归根究底就是为了高效地发现问题,提高软件质量。至于用什么手段,用什么工具,需要按实际情况而定,不能一概而论,也不能说怎样怎样就一定好,怎样怎样就一定差。好比写文章,有用圆珠笔的、有用毛笔的、有用电脑的,无论用什么工具,目的都是为了写出文章。既然工具不是测试的核心,那什么才是呢?我认为是,知道要测什么,知道要怎样测。