测试这个领域,入门浅,真正进入之后才会发现其博大精深,涉足6年余,才仅有点感觉,在此稍做总结,与涉入测试领域的兄弟共勉:
阶段一:入门
1、软件工程:软件
开发模式
首先了解软件研发的过程,才能采取不同的测试策略。如传统的瀑布模型,就可以按V模型的方式进行测试的计划、设计和执行工作;如果是
RUP方式,则测试过程就要按照历次迭代进行分阶段的测试,每次迭代的
测试方法和重点会有所不同。还有很多开发模式,测试工作都需要根据不同情况进行适当调整。
2、测试理论:基本过程与方法
系统测试、
集成测试、单元测试以及BETA测试、
验收测试等的测试依据不同,所使用的方法也不同,边界值法、等效类划分、错误推测、因果图以及条件覆盖、判定覆盖等等,方法非常多,在各阶段测试设计过程中都会用到,所以作为基础课程必须掌握。
二、进阶
了解了上面两条,相当于刚学会什么叫编程语言、C语言的语法是什么,能编写HELLOWORLD小程序了,会编码不等于能编好代码,测试也是一样。掌握上面两条已经可以拿着一个产品说明书开始用产品了,进行初级的系统
功能测试(勉强算测试吧:),真正要深入,还需要再学习以下内容
3、软件特性:软件产品的基本特性
首先知道一个软件必须要具有的基本特性,即一个好的软件是什么样子的,才可能去有目的的设计
测试用例。ISO的一些标准中定义了软件的
质量模型,functionality、reliability、usability、efficiency、maintainability、portability等,这些在真正进行测试设计前必须能够详细了解,没有这些基础,拿着简单的几份
需求、设计文档进行测试是远远不够的。
4、测试设计:测试的精髓所在
要进行测试,必须要提前知道测试什么、怎么测,这时候就需要进行测试策略、方案、用例的设计了。这种设计的基础除上面提到的3个大的内容都要用到外,还要对被测对象进行重复的了解,同时要考虑是否需要驱动/桩模块/模拟环境的支持、如何来设计这些模块与环境、需要什么样的工具、用什么样的方法、用户真正使用的环境是什么等等,测试设计的能力需要在不断的实际项目操作经验中积累。
5、测试工具-提高测试效率的手段
个人认为测试工具在测试知识领域内的重要性并不是很强,属于辅助性的一种手段,可以用来提高效率,但不能依靠它来保证产品质量。测试工具现在已是林林总总,见过的、用过的已有几十种之多,这部分的学习先从面上入手,从功能测试、性能测试、代码测试等几个领域找出几个典型工具,先了解它们能做什么、不能做什么,在测试设计时可以根据情况具体选择,在测试实施过程中再熟练掌握。
掌握上面这些内容,已经可以参与一些项目的测试了,经过一、二年的实践经验,可以说骄傲地说自己已经是个
测试工程师了。
三、高级-更全面、更系统最主要经验更丰富
测试这个领域,所谓高级是无法确定的,所以在此也不敢指导如何成为高级测试工程师,只能说前5条都很熟了以后,可以在其它一些领域进行深入探索:
6、测试流程
方法、工具是回事,真正能把这些东西连贯使用,很好的执行,还需要测试流程来保证,业界有现成的流程可参考,但也只能做参考,团队的规模、产品的领域不同流程肯定不同,制定一套完整、顺畅的流程才是让测试工作有效执行的保证。
7、系统分析
具有系统分析能力的测试工程师才能在产品早期即需求、设计阶段发现产品的问题,盲目地跟着开发需求、设计文档走地测试只能保证产品问题不多,产品没问题并不代表产品就能用、好用。
8、技术创新
测试领域没有固定的、一成不便的理论和方法,在经验积累之后,可以针对产品、环境的不同摸索出不同的流程、方法,可以设计自己的测试文档体系,也建立自己的测试工具平台,向上的空间是永无止境的。
平时也没怎么考虑这些问题,写的时候又分了好几个时间段,思路不太连贯,仅供参考,并欢迎批评指正。
目前业界测试工具包括商用的、免费的至少也有上百种,仅掌握一、两种测试工具如同沧海一粟,是远远不够的。测试如同编程,测试如果要做好,真正的决定因素在于测试的设计,工具只是辅助工作的一种手段而已,换句话说,测试工程师才是测试工作的主体,测试工程师的能力和素质决定了测试工作和产品的质量。
测试工具象是工程师手里的双刃剑,选不好或用不好就不能提高效率、节约成本,如一些功能
自动化测试工具,如ROBOT、QARUN、WINRUNNER之类的,对于新推出的产品,往往客户需求经常变化,版本间改动会很大,这时这些工具就用不上,因为每次都要重新录制脚本,下次还用不上,录制脚本的过程实际就是测试的过程,这个阶段的功能完全
手工测试就可以了,而当版本成熟后,问题和改动比较少,这时后用功能
自动测试工具主要目的仅是为避免因改动导致其它原正确使用的功能出问题(新增特性本身的测试还是要手工测试一遍的),但这种情况只要严格控制开发人员代码修改范围、做好代码走读(小修改的代码量很少)、
测试人员做好周边相关功能的测试(这就要求测试人员对产品功能、系统结构的全面了解),完全可以避免,而且在使用这些工具过程中,测试人员还要花费时间去掌握脚本编程,有些工具仅支持几种语言和有限的控件,超出这些范围又要更换工具,这样算来,费用就远远不止十几万、几十万买一套工具了,人工成本增加不少,测试效率也未必提高。
性能测试工具也很多,而且侧重点也不同,商用工具共同的特点就是奇贵,其实业界管理类软件的复杂度并不高,C/S、B/S结构的免费性能测试工具网上大把,选择一个简单好用的下载就可以了,完全没必要花重金买或用盗版的商用工具。商用性能测试工具以前用过的比较好用的也就算qu
antify了,用起来很简单,分析报告很细很管用,用它发现和解决了大型软件中的很多性能问题。个人认为在免费工具不能满足要求的情况下建议自己来开发性能测试工具,因为无非就测试那么几项内容,所用技术也无非就是
网络编程的基础技术,这样积累下来,容易形成针对同类产品的一个实用的性能测试平台,对一个测试组就足够用了。
单元测试工具建议还是必须要用的,无论商用还是免费的都可以,因为把问题扼杀在编码阶段比后期系统测试更能有效提高产品的质量。
测试过程中的工具也不仅是功能、性能的自动测试,还有一些仿真工具、协议分析工具等,这些的专业性很强,可根据不同的产品来专门选择。另外,可以自行开发一些
测试环境准备的小工具,对提高测试效率也是很有帮助的。
总之,测试工程师要做好一个产品的测试,适当采用测试工具是必要的,但没必要完全迷信于那么一、两种测试工具,不能过分依赖测试工具,只有对各种测试工具全面了解,才能冷静、客观的去分析和选择。另外,规范开发流程、测试过程、强化测试设计的能力和素质,都是保证产品质量的有效手段。人的素质提高、作用提高了,工具的作用自然会相对减弱,企业也就会把关注点从测试工具使用转移到测试人才培养,测试工程师的地位也就会逐步得到提高了。