软件测试漫谈

测试不是一件容易的事情,道出了我两年多的五味杂陈。这里我也不想深情的讲解测试的钱途,也不过多阐述软件测试的方法和技巧,只希望针对测试之路谈谈自己的看法。

已经从业两年多了,从手工测试到性能测试,在测试之路越走越远。在这期间带过测试团队,做了几天测试培训,做过面试,也做过测试技术评委。因此在测试方面有了一定的见解。

根据现有的理解,我把测试分为了三个阶段:第一阶段,根据测试用例执行测试,会提缺陷、写测试报告等;第二阶段,带入思想到需求分析、测试用例设计、测试执行及最终交付测试;第三个阶段为更进一步的发展,主要为方向的选择,我分为了测试开发、自动化测试、性能测试以及安全测试等方向的选择。

对于初学者,我觉得最迷惑的就是不知道测试的学习发展方向了。这里我根据自己的一些经验简单说下。

首先不能轻理论。思想决定高度,而理论决定了我们想问题的宽度和广度。测试应该是一种理论指导实践,实践回归理论,最后再从理论和测试相结合的过程。

其次,一定要深入一个方向。我培训时经常说的话应该是:每个团队都很难做到个个全才,但只要我们每个人都有自己所擅长的方向,比接到一个项目测试,leader能放心的把任务(包括功能测试、页面测试、性能测试、安全测试等)分配下去,通过大家的努力把测试做好,那我们这个团队就是一个完整的优秀的团队。

其次在专精的前提下,才是做到全,因为一个人不可能一直做一件事情。

最后还有就是扩展知识面了,比如对心理学的了解能对用户体验等交互性测试大有帮助,美术设计的了解对界面友好性测试大有裨益,社会工程学对安全测试有帮助,在做金融软件测试时需要对金融基本知识有一定的了解等。

因为我主要负责企业项目的性能测试,因此在这里主要透过性能测试来讲下怎么做好测试。

在性能测试了解的更多,也知道自己不懂的还更多。比如最初有可能会用一门工具,录制脚本,然后根据设计的性能测试用例跑完,简单做下结果分析就完成了一次性能测试。但随着自己的不断总结和思考,发现性能测试远远不是表面那么简单。比如要保证自己的性能测试有意义,就要详细的了解用户(或市场)的需求,分析实际运行场景,了解系统流程,业务中的关键点,组网结构等,才能设计好用例以及帮助后面瓶颈的定位。又如测试脚本也不是表面上的把脚本录制下来就行了,还应该看是否应加入检查点,是否需要参数化,是否需上下文关联,以及一些策略的设置等。紧接着执行测试,应该尽可能的收集有用的测试数据,包括系统资源使用情况,数据库执行日志,应用自带的日志等。接下来就是结果分析了,同样为了做好分析,我们应该了解常见的瓶颈表现形式,瓶颈的定位,以及瓶颈原因的分析。

工具不等于性能测试。做到后面,我们应该有套自己问题解决方式方法,尽量用最优的方法(工具的恰当选择或者自己编写工具)完成性能测试目的。最后我觉得论坛有位朋友说的非常好,我们性能测试结果不应该给决策者一道问答题,应尽可能给道选择题。如我会根据自己的了解分析,提出性能优化的方案和建议:包括软硬件的选择,环境参数的调整(服务器参数、数据库参数等),数据库和程序的具体优化等建议。为了更好的完成以上种种,就需要我们对沟通技巧、软件工程、计算机应用、网络知识、脚本设计、编程实现、数据库优化等等都有深入的学习和理解。

谈下职业发展之路,这个我不晓得大家怎么了解的。这里简单说下自己的看法吧。通常意义来说有两种方向,一是纵向发展,二是横向发展。纵向发展,我所理解的就是从初级测试工程师,到高级工程师,要求从测试技术方面不断提升。横向,我理解的就是从测试到开发,测试到需求经理,测试到QA等。因为自己从业年龄有限,也就不过多班门弄斧了。

最后需要牢记的就是不断学习了。“有一天如果我不学习了,那说明我已经‘死’了”这句话谁说的记不清楚了。这里学习当然就不仅仅学习专业知识了。比如为了自己的更好的发展可以学习一门外语(呵呵,我一直想出国,所以最近一直在学习英语);为了防止自己的money贬值可以学学理财;为了使自己的生活多姿多彩,可以学习下动画制作、摄影、写作、烹饪以及乐器弹奏等等。我觉得生活因为学习才使自己有前行的勇气和生命更有意义,才能耐得住空虚和寂寞。



留言