软件测试入门三年经验

本文写于2012.7.27

================================

前几天在知乎(http://www.zhihu.com/question/20269633)上看到了这么一段,说“测试人员能达到的层次大概有这么几个级别”:

1 开一个bug;

2 查找一些额外的资料如设计文档和历史,确定这是一个问题,然后给出详细的bug重现步骤;

3 对重现步骤做一些精炼,确定能够重现bug的最少步骤;可能的话,将重现步骤做自动化;

4 尝试通过研究代码确认问题所在;

5 尝试给出一个fix;

6 对错误的原因进行分析,提出一些标准化的方法来检测出类似的问题,比如stress,fuzzing等等;

7 能够对标准化的测试流程定义对应的数据分析方法,可以保证开发和项目主管都能从中得到需要的信息来掌控质量状况。

我数了一下自己的,基本上能做到1-3,自己实在是算不上个好测试。当然各方面原因也有,比如公司对软件测试工程师的定义不一样,对自己的要求也的确没有那么高过。我觉得这七个层次是很不错的标准了,对于想长期做测试的人来说可以拿来参考一下。看到这个帖子之后呢,就有了自我总结一下的念头。

我也注意到,国内软件行业,尤其是互联网行业,非常重视自动化测试,从最开始的跑自动化测试、到读脚本改脚本、再到自己整合开源工具写一套脚本、再到自己直接开发自动化测试工具,是很多互联网企业的测试正在热衷的。不过自己所在的部门算是个传统软件行业,所以具体情况具体分析吧。

自己所在的team大约稳定在8-12人,长期组里会有1-2个实习生,负责的产品总计10个左右,项目周期基本是1天-6个月不等,每个项目的参与人数一般1个人-6个人不等。绝大部分产品我们完全没有机会接触到源码,除了我现在手头正在做的,因为老跟着开发加班和开发关系比较熟,代码我也能读到,不过自己没追求,从来不去看>_<

整个team里除了一个lead主要做管理很少做项目,其他的人大约有1-2个会参与自动化测试相关的开发和维护,1-3个是不能独立处理大的release项目需要跟着别人做项目,其他的人基本都有独自做大项目和带人做项目的能力和经验。工作的主要内容基本就是对着用了很久的测试用例做手工测试,纯黑盒。少部分时候会需要自己写测试用例。和别的公司一样,并不是太重视测试用例。

我总结一下自己从09年6月开始实习到现在这三年的一点经历吧。

09年6月-10年6月 internship

第一个月是培训期,对着三大本英文书学习产品。基本三周把三本书看完,每周一做一次presentation总结上周学到的内容,并且同事会提问,最后一周会做一些简单的sample,比如产品的升级、功能的简单回归测试。

第二个月开始处理hotfix,流程大致是:根据相关的defect记录,搭环境,重现问题,应用hotfix,确认问题被修复,跑automation regression。工作这三年我大致做了上百个hotfix,主要都是在实习期做的,毕业之后就不会安排这种活儿了,除非实在没有level更低的人做or某个hotfix是是自己做过的别人没经验。

半年后开始跟着做大的release。大的release包含的内容比hotfix要多一些,最开始一般由level比较高的人写new feature的测试用例,开发给了build之后交叉测试new feature,同时也安排人测defect(一般大的release都包含上个release到现在之间的所有的hotfix)。之后会有manual regression(对着超长超详细的英文文档做手工测试,覆盖几乎所有功能)、automation regression、compatibility(和相关的十多个产品在不同的os和database上之间的兼容性)。再之后基本就是install和doc review了。这几个测试之间有一定的先后顺序,比如install肯定是所有平台的build都出了,所有测试基本都结束之后去做的,不过具体哪个阶段做什么还是要看具体的情况,有时候项目快要结束了defect忽然开始爆发。

在没有大的release的时候基本就在忙hotfix,也有闲着的时候,自己上上网看看书什么的。

10年7月-11年7月 graduate=level 0

毕业之后没多久就开始做一个新出的很小的产品的测试,自己针对new feature和功能测试写测试用例,没有自动化测试,整个测试阶段自己大致负责了一半,由一个比我高两届的MM来带我。那个产品release之后到现在也没有下一个版本,不过也没有hotfix(意味着客户这么久都没有提bug)。

之间跟着做了些产品的release,这时候才基本熟悉了大的release的基本流程和步骤。11年4月开始花了两个月在维护一套很老的silktest的脚本,觉得这套脚本设计的很好,覆盖的功能很全,高内聚低耦合,之前为这套自动化测试脚本写测试用例的人很牛。相反,觉得脚本本身倒不是什么特别难的东西。期间也用java调一些api去测一点性能,不算重点,但是比手工测试必然要有意思得多。

11年7月-12年3月 junior=level 1

开始在头儿的指导下带领俩实习生做大的release,期间遇到了一些问题,比如这次release的变动很大(数据库结构变了),要测的覆盖面会比较多,但是之前留下来的测试用例有一些问题,比如写的极详细,阅读两三页的英文文档要花半小时,操作却只要可能几分钟,或者这么多年来产品更新之后,有些测试用例基本是无效的或者没有意义的,但是一直没有更新,也有部分测试用例写得过于简洁,以至于读起来特别费劲,但是读懂之后就容易得多。i所以每当一个测试阶段结束之后开发给下一个版本的build之前,还要抓紧时间按照自己的理解去更新测试用例(有的地方甚至完全没有测试用例),然后在下一阶段交叉测试,然后再更新。这个项目做了大概三个月之后,因为开发遇到了困难,加上项目本身优先级不高,于是暂时搁置了。

这期间也是跟着做另外的产品的release,做离职同事的交接,学点东西。

12年4月-现在 senior=level 2

挂牌成了个senior engineer,4月开始做一个release,预计8月中旬结束。这次算是真正意义上的在进度压力下去带人做。lead一个项目的时候要考虑的事情比跟着别人做项目要多得多,至少会有一种“这是我自己带出来的产品,我要对它的质量负责”的心态,就算要加班也是心甘情愿,不会有“跟着文档做就行了不用动脑子想”的态度。同时要规划整个测试阶段的进度安排,根据人员的能力去安排任务,和他们沟通让他们愿意更努力一些,去和开发沟通推动问题解决,等等。遇到了很多问题,犯了不少错误,在同事的指导下有的很快改了,有的产生了一些不良后果。这个过程中学到了很多东西,并不仅仅是技术上的。

如果继续做软件测试……

下一阶段我会倾向于把精力放在自动化测试上,希望能有大段的时间专心弄一套东西出来,之前和lead聊过,他也挺有意向。有这个想法的原因有几个,一方面当然是因为自动化测试的经历能给自己当块敲门砖啦,一方面是因为没有项目的压力做一些有意思的事情会让上班变得“幸福”一些:)女生可能赚钱的压力没有男生那么大,我觉得在一个氛围很open工作比较轻松的公司待着学了很多东西而且还有钱赚,比在氛围很open学习比较轻松的学校待着学了很多东西可是还要付给学校一大笔钱要有意思点儿。

当然有时候的确会很累,下班了之后眼睛都是直的。有时候也会因为一些沟通的问题弄得自己很沮丧,有时候会担心项目而自己跑去加班,有时候也会因为状态不佳无心工作而效率低下,事后要么加班要么打鸡血把进度给赶回来。毕竟bug是无限的,而时间和资源是有限的,所以在有限的时间内测了自己想到的能测的该测的各种东西之后,基本就只剩下上帝保佑产品到了客户那边可千万不要出问题。反正到目前为止,我仍然是个很菜的小测试。。。

路漫漫其修远兮,吾将上上下下左左右右ABBA而求索。

时间: 2024-08-29 14:19:26

软件测试入门三年经验的相关文章

软件测试入门

一.软件测试理解 1.软件测试是一种有效提高软件质量的手段,但是软件质量不仅仅是测试出来的. 2.好的测试人员不仅要掌握各种测试技术和工具,还要具备丰富的编程技术和对BUG的敏感. 3.软件测试要早做计划,分配好时间.人力.财力等资源. 4.软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心准备的一批测试用例,并利用这些测试用例去执行程序,发现程序错误的过程. 二.软件测试对象 1.软件测试贯穿于软件定义和开发的整个期间.需求分析.概要设计.详细设计.以及程序编码的各个阶段所得到的文档

软件测试理论与经验--阅读笔记

第1章 测试员的角色 测试人员的角色到底是什么?能够定义的很清楚吗? 经验1-测试员是项目的前灯 测试就是要找到信息,有关项目或者产品的关键信息决策都需要根据这些信息来决定. 经验2-测试员的使命决定要做的一切 使命可能决定于行业.公司.项目或者团队的个性,测试项目也是千差万别.我们的使命是以客户为中心, 明确需求,提高工作效率及降低风险.要经常动态调整自己的使命,不要侧重某一方面而疏忽另一方面. 经验3-测试员为很多客户服务 测试员提供的服务时至关重要的,客户可以是项目经理.程序员.技术文档编

软件测试入门要知道哪些?

软件测试入门要知道哪些?首先,我们要知道:对于软件测试人员来说,编码是最基础的技能,无论哪一门语言,至少要会一种,如果能再具备一定的产品开发经验那就更好了.但请注意,过犹不及,不要单纯拿编码能力的高低来衡量测试人员水平的高低,测试人员最核心的技能仍是在测试设计上,不要本末倒置.同样,像数据库.操作系统.网络协议.建模等等都属于基础技能的范畴.可能测试人员在这些技能的掌握程度上没有专业人士强,没关系,因为这些技能最终是为测试专有技能所服务的,如此而已.当然,如果个人有兴趣深入研究那是最好.笔者记得

新人与三年经验的交互设计师有多大的差距?

刚开始实习的时候,师兄告诉我成长最快的方式就是:偷学其他前辈的本领——这不用说我也知道啦,当然不能说偷这么难听,仔细观察平时前辈的工作方式和状态,就会有莫大的收获. 首先,让我不要脸地先把自己定义成一个0.5年工作经验的新人,而我的师姐,则正好是一位满三年工作经验的资深交互设计师.所以,让我仅从一个后辈的眼光,说说我所看到的那些差距. 最先感知到的,是极高的业务熟悉度 作为一名新进实习生,本身又不是电商产品的重度用户,对业务自然是非常不熟悉的.刚接到的一些任务,最困扰我的一个方面就是『设计界限』

软件测试入门——测试模型(V型 W型 H型)

软件测试工程师称为“QA”,质量保证者——这是入门的第一点要学习的. 首先看基本的测试模型 1.“V”型 特点:[活动串行]这是一种古老的瀑布模型,反映了实际和测试之间的关系. 局限:仅仅把测试过程作为编码之后的一个阶段,忽视了测试对需求分析,系统设计的验证,如果前面设计错误,得一直到后期的验收测试才被发现,耗时耗力. 2.“W”型 特点:[活动串行]测试与开发同时进行,在V模型的基础上,增加了在开发阶段的同步测试 局限:仍然不支持迭代,减少了一定错误发生率,但是需按照流水线进行设计.编码和测试

放手一搏:社招Java岗面试经历(三年经验): PingCAP、蚂蚁

前言 今年想出来看看机会,最后很幸运地拿到了 PingCAP,今日头条的 offer 以及蚂蚁金服的口头 offer.想着可以总结一下经验,分享一下自己这一段"骑驴找马"过的心路历程.当然,一家之言,难免粗浅,如有不妥,敬请指正. 全文有点长,假如只对一家公司感兴趣的话可以直接跳过去: 准备过程 我自己是本科毕业后在老东家干了三年多,老东家算是一家"小公司"(毕竟这年头没有 BAT 或 TMD 的 title 都不好意思报出身),毕业这两年多我也没有在大厂待过,因此

软件测试入门随笔——软件测试基础知识(二)

POINT one:软件测试生命周期--V模型 V模型左边为开发阶段,右边为测试阶段.单元测试和功能测试应检测程序的执行是否满足程序设计的要求:系统测试应检测系统功能.性能的质量特性是否达到系统要求的指标:验收测试确定软件的实现是否满足用户需要或合同的要求. 单位测试:对单元模块的功能.性能进行测试,比如能不能完成登录功能等等.主要由开发人员完成,要求具备一定的读.改代码的能力,有静态测试方法(代码分析)和动态测试方法(白盒.或黑盒) 集成测试:以<软件概要设计说明书>为依据,检验软件单元和已

软件测试入门随笔——软件测试基础知识(四)

about 测试流程 一般公司测试流程 评审需求 分解需求 制定测试计划 设计测试用例 执行测试 提交bug报告 回归测试.验证bug 书写测试报告 经验总结 测试过程模型 瀑布过程模型 以文档驱动,自由度低.实际开发过程中,各部分之间都有某种程度的重叠,造成这种重叠的原因是,任何一个阶段都不可能在下一个阶段开始之前结束. 快速原型过程模型 先做出一个可运行的.功能简单的原型系统,交由客户试用看是否满足客户期望,并根据客户反馈进行修改增补. 优点:关注用户需求,降低由于需求不明确导致项目出错的风

软件测试入门—你能分清fault,error和failure吗?

---恢复内容开始--- 一.基本定义和抽象理解 1.1定义: fault:意即故障.缺陷,是软件中静态的缺陷, 我们可以把它看做软件不能正常运行的根本原因,当然,为了更好的理解,这就是软件"生病"的病根,是导致其出现错误或异常的根本原因,这就说明我们设计软件过程中出现了错误. failure:意即失败,关于某个软件,我们有预期行为的描述和要求,但是我们使用时却可能出现我们可见的,也就是外部的不正确的反应和行为.还是为了方便,我们可以把它看做软件"生病"的一系列症状