最近由于参加了公司一个封闭开发的项目,快速响应需求的更新及上线,忙的不可开交。后来又响应领导提出的测试服务化的号召,将测试脚本服务化,并且又带头开发了一个服务化管理平台。其间遇到不少坑,在不断地挖坑填坑的过程中顺利前进,目前进度符合预期,也终于有空来总结一下遇到问题,以便提升一下自己。
后续再陆续介绍相关的技术,今天先聊一下测试技术的发展之我见。前面的博文中,我曾经介绍过测试工程师的发展,见:闲聊测试工程师http://blog.sina.com.cn/s/blog_68f262210102wr4d.html,当然了也是一家之言。今天我们聊一下测试技术的发展,当然也是一家之言,仅供娱乐和参考,小伙伴们不要太认真哟!
个人认为测试技术的发展经历了以下几个阶段:

一, 纯手工测试阶段
测试是从用户角度出发,去使用产品以检测是否符合预期的工作。所以最基本的测试技术也就是手工测试,根据需求文档,编写相应的测试用例。然后根据具体的测试流程来做:
(1)需求评审。此时测试人员需要测试需求是否存在不合理的地方,从需求不把不符合用户习惯的东西给检测出来。
(2)编写测试用例。如果需求评审没有问题,就需要根据需求文档来编写相应的测试用例。此时开发人员着手开发相应的代码,与我们编写测试用例同步。
(3)冒烟测试用例的提交。在我们编写测试用例的时候,需要先编写核心功能的冒烟测试用例。只有这些儿测试用例通过后,才能开始其他的测试,冒烟测试用例编写完成后提交给开发人员,以方便他们提测之前自测。
(4)正常测试。在开发提交测试后,需要先验证一下冒烟测试用例是否通过,然后再按照完整的测试用例一步步的测试,提 Bug,验证 Bug。一轮一轮地测试,直到达到上线的标准。
(5)上线及验证。一般需求达到上线的要求的时候,会上一个仿真环境或是沙箱环境再验证一下,没有问题了就上线,而后要做线上回归。
(6)项目总结。一般大型的项目上线完成后,要做一个项目总结,总结项目中遇到的问题,积累测试方法和相关经验。

二, 黑盒,白盒和灰盒测试阶段
随着技术的不断发展,测试也在不断地发展。此时的手工测试又被称为黑盒测试,就是我们不管盒子里有什么东西,只要对外表现符合要求即可。白盒测试就是要通过走查代码,采取一些儿如代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法等对被测试对象进行测试。灰盒测试就是要结合黑盒和白盒的测试方法,进行交互测试。
不过现在技术发展的比较快,高速迭代,频繁上线,造成这类测试阶段成为了历史,使用的越来越少了。
(1)黑盒测试不符合要求。因为几乎不存在只测试功能,发现问题就直接抛出的测试人员,必须进行问题定位,黑盒测试就不合适了。而且只会黑盒测试的人员要求比较低,没有门槛,所以竞争比较大,越来越多的测试人员不单纯做黑盒测试。
(2)白盒测试跟不上时代。现在互联网发展的太快了,为了抢占市场或是客户,早上线一天比晚上一天影响非常大的。所以效率第一,现在根本就没有单元测试,更不可能让一个代码能力不太强的人去做白盒测试。而代码能力强的人,就又不屑于做测试,人家都去做开发了;再加上出于安全的考虑,白盒测试已过时了。
(3)灰盒测试推进很难。同样的原因,灰盒测试要求也比较高,通过前端表现的 bug,来定位后端错误程序,本身就不太容易。加上这个程序不是你写的,会非常耗时的。人员的匮乏,加上时间的允许。现在几乎没有测试人员在分什么黑盒 ,白盒和灰盒测试了。

三, 工具测试阶段
测试行业的发展,让不少公司看到了这是一个大饼,所以有不少公司专门做测试工具的开发,进而想抢占这一市场。也就涌现出不少如性能测试 :loadrunner jemter ab ,功能测试:qtp,bug 管理:Qc bugziller 等知名的工具。
此时的测试人员就会努力学习各种测试工具,不过后来发现这些测试工具为了盈利,就会收费的。不少公司,尤其是创业公司完全抛弃了这些儿测试工具,而只有银行或是国企使用这些儿收费的测试工具,而这样的公司很难进去的。而测试工具的学习成本比较低,你出去面试的时候,如果说自己会什么样的测试工具,人家根本就不 care,因为在大家看来,如果有需要,这些工具就可以直接拿来用的。会测试工具的使用,不算任何优势,就像吃饭会用筷子似的;再者我们也不能保证工具完全好用,出现了问题,如果是测试工具的缺陷导致的,那就非常郁闷了!

四,开源及自动化测试阶段
随着开源社区的贡献的越来越大,很多开源工具,框架涌现了出来。这也必将带动测试技术的发展,如著名的 Selenium, webdriver, Appium,Robotium,再加上 python unittest,java TestNG 等语言的支持,通过使用这些儿框架加上编写少量的代码,就可以用代码来测试我们的代码,也就是自动化测试。
于是就出现了 Webdriver+python+unittest+HTMLTestRunner
+Jenkins 和 WebDriver+java+TestNG+Jenkins 的持续化集成架构,用来对 Web 完成自动化回归;同时也有 python+unittest+requests+HTMLTestRunner+jenkins 的接口自动化测试框架;Appium+python/java+Jenkins+ HTMLTestRunner/TestNG 移动端的自动化测试框架,Robotium+java+TestNG+Jenkins 移动 andorid 自动化测试框架。当然,还有不少其他的组合,非主流的开源框架等等,其实不管怎么组合,我们的目的是一致的:通过代码编写自动化测试用例,完成繁琐而枯燥的回归测试,确保新上线的东西对原功能没有影响。
要开展自动化测试,虽然要求测试人员有一定的编码能力,可是要求也不太高。需要对特定的语言的一些儿简单的应用即可,而大部分测试用例的编写使用的技术都是那几种,所以上手还是比较快的。有专门的人指导的话,一两周完全可以编写自动化测试用例,自动化测试的优势在前几年比较明显,最近两年也在慢慢的暗然失色。现在还在沉迷于自动化测试的同学,需要注意一下了。

五,工具,平台和服务化阶段
测试技术发展了这么多年,有一定的技术积累了,当然高级测试开发工程师也成长起来了不少。于是大型的公司就开始开发针对自己业务的测试工具,测试平台,同时将自己特定的测试功能代码服务化,以方便公司其他测试同事的使用。
这类的东西就比较难以介绍了,像阿里,百度,腾讯,58 赶集等都有自己开发的平台。有成熟的也会开源给社会,以提高自己公司的技术形象,当然更多的出于安全考虑不会公开的。我们暂切不管工具,平台或是服务化的具体实现及其功能,这说明一个趋势,业界对测试人员的要求越来越高了。测试的产品是测试,测试的用户也是测试,需要一批高技术人员为测试人员服务,以提高测试质量和效率。这就要求我们不仅会测试技术,还要会开发技术,运维,产品,交互等等,也就是全站工程师的趋势,具体的技术就不一一罗列了。
此时那些只会一两种语言,编写简单的测试用例,使用开源框架编写自动化测试用例的同学,明显感觉不太够用了。需要全面提高自己,几乎你公司里面其他同学会的东西,都是你学习的对象,不要求你比他们精通,但是要求你必须了解,遇到问题的时候会通过相关的技术来解决。

六,测试架构及新技术拓展阶段
再往上发展就是架构师,设计测试平台或是测试工具的架构,以便使我们的开发更加合理。同时,对新技术进行探索,给出新技术能否应用到我们的测试工作为,提升测试效率及质量。
测试行业有两极发展的趋势,一方面的开发能力较强的高级测试工程师,他们负责开发高级的测试工具及平台,以方便普通的测试人员使用。而测试工具和平台要求使用简单,不需要任何技术,如果达不到这个要求,则说明不够成功。另一方面,普通测试人员,只要懂得简单的测试方法,就可以工作,而且有复杂的测试工作的时候,高级的测试人员就会开发出相应的工具。普通测试人员属于高消耗型的,公司不会提升你的技术水平,只需要你花费大量的时间工作就行,一旦不符合公司的发展,就换一批。

七 总结
以上仅是我个人认为测试技术发展的各个阶段,由于能力和眼界有限,可能存在不少不到之处,希望大家多多包涵。仅供参考吧,测试门坎比较低,但是真正发展起来,还是很有难度的。不要仅仅以自己对测试的认识来阻碍发展,未来评价测试人员的不是工作经验,而是你在工作用学到了什么?能为我们带来什么?


↙↙↙阅读原文可查看相关链接,并与作者交流