软件测试工程师 订阅
软件测试工程师(Software Testing Engineer)指理解产品的功能要求,并对其进行测试,检查软件有没有缺陷(Bug),测试软件是否具有稳定性(Robustness)、安全性、易操作性等性能,写出相应的测试规范和测试用例的专门工作人员。简而言之,软件测试工程师在一家软件企业中担当的是“质量管理”角色,及时发现软件问题并及时督促更正,确保产品的正常运作。按其级别和职位的不同,分为三类。 展开全文
软件测试工程师(Software Testing Engineer)指理解产品的功能要求,并对其进行测试,检查软件有没有缺陷(Bug),测试软件是否具有稳定性(Robustness)、安全性、易操作性等性能,写出相应的测试规范和测试用例的专门工作人员。简而言之,软件测试工程师在一家软件企业中担当的是“质量管理”角色,及时发现软件问题并及时督促更正,确保产品的正常运作。按其级别和职位的不同,分为三类。
信息
职    能
测试软件
就业方向
各种需要软件管理的企业
分    类
三类
中文名
软件测试工程师
理    解
产品的功能要求
外文名
Software Testing Engineer
软件测试工程师分类
按其级别和职位的不同,可分为三类:高级软件测试工程师,熟练掌握软件测试与开发技术,且对所测试软件对口行业非常了解,能够对可能出现的问题进行分析评估;中级软件测试工程师,编写软件测试方案、测试文档,与项目组一起制定软件测试阶段的工作计划,能够在项目运行中合理利用测试工具完成测试任务;初级软件测试工程师,其工作通常都是按照软件测试方案和流程对产品进行功能测验,检察产品是否有缺陷。
收起全文
精华内容
下载资源
问答
  • 软件测试工程师

    2018-08-03 13:45:05
    软件测试工程师进阶必读的书籍。
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友

    万次阅读 多人点赞 2018-03-29 11:16:09
    这两天和朋友谈到软件测试的发展,其实软件测试已经在不知不觉中发生了非常大的改变,前几年的软件测试行业还是一个风口,随着不断地转行人员以及毕业的大学生疯狂地涌入软件测试行业,目前软件测试行业“缺口”已经...

    这两天和朋友谈到软件测试的发展,其实软件测试已经在不知不觉中发生了非常大的改变,前几年的软件测试行业还是一个风口,随着不断地转行人员以及毕业的大学生疯狂地涌入软件测试行业,目前软件测试行业“缺口”已经基本饱和。当然,我说的是最基础的功能测试的岗位需求已经很少了,而自动化、性能、安全乃至于以后可能出现的大数据测试、AI测试仍存在着非常多的机会。

    8年软件测试工程师感悟——写给还在迷茫中的朋友

    “长江后浪推前浪,前浪死在沙滩上”,曾经一句让人会心一笑的调侃,而今变成了软件测试行业的真实写照。由于软件测试行业入门门槛低,薪资报酬高,不断有新鲜血液冲刷着软件测试行业的“前行者”们,给我们带来了非常大的压力。

    那些入行几年,但是依然是功能测试的同学所面临的的压力可想而知。说到底,软件测试行业还是属于技术岗位。既然是技术岗位,那就要靠技术说话。不断掌握新的技能,提高软件测试“找bug”的能力也就变成了目前软件测试从业人员迫在眉睫需要解决的问题。因此,现在大部分初级功能测试人员都在向自动化、性能、安全靠拢。

    但是还是有不少的软件测试工程师站在“十字路口”迷茫、无助,找不到自己的方向。

    8年软件测试工程师感悟——写给还在迷茫中的朋友

    一切的迷茫都是因为想得太多而做的太少!每位软件测试行业从业者都能意识到目前自己面临的窘境,但能及时作出改变,顺应时代变化的人还是太少。多数人明明“泰山崩于前而面色如土”却只能眼睁睁看着自己被行业淘汰吗?

    8年软件测试工程师感悟——写给还在迷茫中的朋友

    并不是,下面的软件测试工程师发展方向知识架构体系图,会告诉你该往哪里努力:

    一、Linux必备知识

    linux作为现在最流行的软件环境系统,一定需要掌握,目前的招聘要求都需要有linux能力。

    8年软件测试工程师感悟——写给还在迷茫中的朋友

    二、Shell脚本

    掌握shell脚本,包括shell基础与应用、shell逻辑控制、shell逻辑函数等。

    8年软件测试工程师感悟——写给还在迷茫中的朋友

    三、互联网程序原理

    自动化必由之路:前端开发基础知识以及互联网网络必备知识。

    8年软件测试工程师感悟——写给还在迷茫中的朋友

    四、Mysql数据库

    软件测试工程师必备Mysql数据库知识,不仅仅停留在基本的“增删改查”。

    8年软件测试工程师感悟——写给还在迷茫中的朋友

    五、抓包工具

    Fiddler、Wireshark、Sniffer、Tcpdump各种抓包工具适用于各种项目,总有一款适合你。

    8年软件测试工程师感悟——写给还在迷茫中的朋友

    六、接口测试工具

    接口测试神器,你绕不开的强大工具:Jmeter。小巧灵活:Postman。

    8年软件测试工程师感悟——写给还在迷茫中的朋友

    七、Web自动化测试Java&Pyhton

    了解自动化的目的,熟练掌握testng&unittest自动化框架,以及断言与日志处理。

    8年软件测试工程师感悟——写给还在迷茫中的朋友

    八、接口与手机自动化

    专业接口调用、测试解决方案。组建完整的web和接口自动化框架,Appium整体使用。

    8年软件测试工程师感悟——写给还在迷茫中的朋友

    九、敏捷测试&TestOps构建

    揭开TestOps的神秘面纱,持续集成Jenkins框架烂熟于心。

    8年软件测试工程师感悟——写给还在迷茫中的朋友

    十、性能测试&安全测试

    软件测试的彼岸:性能测试和安全测试,选对方向,努力爬坑吧!

    8年软件测试工程师感悟——写给还在迷茫中的朋友

    上面就是我为大家整理出来的一份软件测试工程师发展方向知识架构体系图。希望大家能照着这个体系在3-4年内完成这样一个体系的构建。可以说,这个过程会让你痛不欲生,但只要你熬过去了。以后的生活就轻松很多。正所谓万事开头难,只要迈出了第一步,你就已经成功了一半,等到完成之后再回顾这一段路程的时候,你肯定会感慨良多。

    如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以关注我们:爱码小士, 公众号里面有各种软件测试资源和技术交流。

    加油吧,测试员!路就在脚下,成功就在明天!

    未来的你肯定会感谢现在拼命的自己!

    展开全文
  • 软件测试工程师 软件测试工程师个人工作总结 工作总结就是把一个时间段的工作进行一次全面系统的总检查总评价总分析总研究并分析成绩的不足从而得出引以为戒的经验下面是本站为大家整理的软件测试工程师 软件测试...
  • 工作总结就是把一个时间段的工作进行一次全面系统的总检查总评价总分析总研究并分析成绩的不足从而得出引以为戒的经验下面是本站为大家整理的软件测试工程师 软件测试工程师个人工作总结供大家参考 软件测试工程师 ...
  • 软件测试工程师经典面试题

    万次阅读 多人点赞 2018-10-27 23:55:52
      软件测试工程师,和开发工程师相比起来,虽然前期可能不会太深,但是涉及的面还是比较广的。前期面试实习生或者一年左右的岗位,问的也主要是一些基础性的问题比较多。涉及的知识主要有MySQL数据库的使用、Linux...

      软件测试工程师,和开发工程师相比起来,虽然前期可能不会太深,但是涉及的面还是比较广的。前期面试实习生或者一年左右的岗位,问的也主要是一些基础性的问题比较多。涉及的知识主要有MySQL数据库的使用、Linux操作系统的使用、软件测试框架性的问题,测试环境搭建问题、当然还有一些自动化测试和性能测试的问题。测试工程师的面试题,基本上都是大同小异的,面试的核心主要在于框架模块(一到两年工作经验)
    。今天这篇帖子主要讲解之前面试自己面试过程中或者周围人面试过程中经常被问到且比较经典的面试题,一家之言,如有异议或者有想问的问题,可以在评论区留言,看到后将在第一时间内回复!


    1、软件测试的流程是什么?
      分析:每当HR问一个问题的时候我们都可以用1~2s的时间去想HR想要从这个问题中获取什么信息,这点搞清楚之后再去回答就很好回答了。如果有工作经验,直接按照公司流程回答即可,如果是刚转行或者刚实习,那按标准回答即可,文中回答仅供参考;
      回答: 项目经理或者PD把项目需求文档提前下发给相关的研发人员,研发人员抽出一定的时间记录文档内需求不明确或者遗漏的点为后面的评审做准备;在需求评审会议上,各研发人员提出自己的疑问并解决,需求评审最终通过之后会出一份最终的需求规格说明书;(需求评审阶段)
        需求规格说明书评审通过后,开发经理开始编写开发计划,测试经理开始编写测试计划,计划评审通过后开发人员开始进行程序的开发,测试人员开始测试用例的编写,等程序的第一个版本出来后,开发人员进行第二个版本的迭代,这时测试人员对程序进行测试并记录追踪管理缺陷,直到程序迭代完毕。(产品研发阶段)
        程序迭代完毕并修复大部分缺陷后,测试人员开始进行工作的总结,并最终输出一份测试报告书,记录此次的测试工作共,程序存在的相关问题。(产品发布阶段)

    2、测试用例主要有哪些元素?
      分析:每个公司因为使用的模板不一样,所以测试用例的内容也是不尽相同的,所以回答时只需要回答出基本的元素即可;
      回答: 测试用例主要元素有:ID、标题、模块、预置条件、操作步骤、预期结果、实际结果、是否通过、BugID等;

    3、软件测试有什么策略和阶段?
      分析:软件测试的策略就是测试将按照什么样的思路和方式进行如采用什么技术,什么步骤等。
      回答 :软件测试的策略主要有:动态测试和静态测试、白盒测试和黑盒测试。测试阶段按照研发顺序分别是:单元测试、集成测试、系统测试,有些公司还会有验收测试;(单元测试开发在调试代码时就完成,集成测试也是,但是有时测试人员也需要进行集成测试;测试人员平时主要的工作就是系统测试,验收测试是有客户参与进行的测试);

    4、黑盒测试和白盒测试是什么?二者有什么区别?
      分析:黑盒测试和白盒测试的概念百度百科上面都有,这里不再做太多介绍。黑盒测试和白盒测试的区别:https://www.cnblogs.com/i16i1007/p/6624072.html记得
      回答: 黑盒测试主要是在程序界面进行测试,通过设定某种场景检验程序在这种场景下是否给出了正确的反应,验证程序正确实现了需求规格说明书中的需求,而白盒测试主要是针对程序内部结构,对程序代码进行代码走查等,但是白盒测试的成本会比较大,当程序有多个路径时,可能会产生较多的遗漏;

    5、软件测试有什么类型?
      回答: 常见的软件测试类型有:功能测试、性能测试、兼容性测试、可靠性测试、安全性测试、压力测试、负载测试等;

    6、测试用例是什么?有什么作用?
      回答:测试用例就是设计一个特定场景,让软件在这种场景下运行,检验程序是否给出正确的反应,以此验证软件是否正确实现了客户需求。
      作用:1、避免盲目测试并提高测试效率;在软件版本更新之后只需修正少部分用例即可开展测试工作,降低工作强度,缩短测试周期;
             2、可以分清哪些是测试重点,测试用例是测试工作的见证,能知道测试了哪些功能,没测哪些模块;
             3、测试用例是量化测试工作的方法之一;

    7、你平时是怎么设计测试用例的?
      分析:这个问题的点主要考察是否掌握测试用例设计方法,在回答之后,HR可能会继续追问某种设计方法的概念或者实例,这时举例说明即可;如:等价类划分法就是把程序的输入域划分成等价类,从每个部分中选取少数代表性数据当做测试数据。
      回答:设计测试用例一般都会使用到等价类、边界值、场景/流程法、因果图还有错误推测法;

    8、软件缺陷的定义是什么?
      分析:什么样的问题才是一个缺陷,需要从客户需求出发;
      回答:1、软件未实现需求规格说明书中的要求;
            2、出现需求规格说明书中指明不应该出现的错误;
            3、软件未实现需求文档中虽未明确提及但应该实现的功能;(如:账密加密)
            4、软件出现难以理解、不易使用或者运行速度慢等问题都可以认为是软件缺陷;

    9、缺陷中应该包含什么元素?严重等级一般有哪些?
      分析:这个问题和上面测试用例一样,每个公司的要求可能都会不一样;
      回答:主要元素有:标题、BugID、复现步骤、实际结果、预期结果、截图、日志等;软件缺陷等级一般有四种,致命(程序奔溃)、严重(金额计算错误、数据出错)、一般(不影响使用但是会造成一定的麻烦)、优化(字体字号不统一)

    10、给你一个杯子,你会怎么测试?
      分析:给你一个杯子,给你一个电梯,这种问题在前期的面试中是经常遇到也是非常经典的一道面试题,这里给出一个链接,回答时从外观、功能、性能等各个角度说起,再结合自己的一些话就可以了。
      回答:经典测试用例,一个水杯的测试https://blog.csdn.net/ganhongxia/article/details/6025416

    11、测试报告里面包含什么内容?
      分析:测试报告,是测试工作结束后测试部门输出的一份测试结果,但每个公司的测试报告内容都会有些差别。有些公司的测试报告是有测试部门的负责人一人编写,或者是由每个测试工程师输出自己对应模块的测试报告再由测试组长整合成一份完整的测试报告;
      回答:测试报告内容一般有:编写目的、系统简介、测试环境、测试方法和工具、测试执行结果与记录、缺陷汇总、遗留缺陷跟踪、测试用例执行情况、测试结论与建议等;

    12、如果在测试过程中发现了BUG,可是开发不承认这是Bug,你会怎么办?
      分析:HR问这个问题主要还是想知道你平时是如何处理与同事之间的关系。开发和测试是两个即对立又统一的两个岗位,所以开发和测试之间关系的处理也是HR面试过程中需要考虑的一个点。当然,HR问这个问题也表名该公司有氛围不是很好的风险。
      回答:首先还是应该回归到客户需求上面,确认这个问题到底属不属于一个缺陷,如果确实是则要和开发同事解释清楚;如果开发还是坚持自己想法的话,则询问同事或者测试组长的意见,讨论这个问题到底属不属于缺陷问题,如果大家都觉得是则需要和开发解释清楚。

    13、你们公司的需求评审是怎么进行的?
      分析:需求评审,就是对客户需求,软件各个模块之间模糊的点进行审查,排除不理解或者没有考虑到的点。
      回答:需求评审,在一些分工比较明确的公司,都是由PD(产品设计师)负责,需求确认好后再下发到开发和测试部门;分工不怎么明确的公司可能就是开发测试产品等大家坐在一起共同探讨;评审形式一般分为线上和线下两种方式,负责人一般会提前把需求文档下发到大家手上供大家整理各自的疑惑点,为后续的评审会议做准备。

    14、MySQL的常用命令有哪些?
      分析:数据库知识,是测试工程师必备的一个基本技能,在面试过程中也是经常会遇到的一个考点。对于刚入行的测试,对数据库知识的要求不会太高,只要求能掌握基本的增删改查语句即可。关于数据库的知识,在后续的时间里,也会慢慢的整理出来,供大家学习、参考。
      回答:这里只给出几个标准的语法结构:
            增:insert into 表名(列名) values (数据);
        如:在stu表中插入id为001,姓名为张三的学生,(insert into Stu(stu_id,stu_name) values (001,‘张三’);)
            删:delete from 表名 where 指定数据;
        如:在stu表中删除id为001,姓名为张三的学生:(detele from Stu where stu_id=‘001’ and stu_name = ‘张三’;)
            改:update 表名 set 改变项 where 指定数据;
        如:在stu表中修改id为001的学生姓名为“张三”:(update Stu set stu_name = ‘张三’ where stu_id=‘001’ ;)
            查:select (查询项) from 表名 where 指定条件;
        如:在stu表中查询id为001,姓名为“张三”的学生信息:(select * from Stu where stu_name = ‘张三’ and stu_id=‘001’ ;)

    15、Linux下的一些常用命令是什么?
      分析:Linux系统,也是软件测试工程师必须要掌握的一项基本的技能,由于Linux具有运行稳定等很多优点,软件的服务器大多部署在Linux系统上,搭建测试环境也是测试工程师需要掌握的。关于Linux的知识,在后续的时间里,也会慢慢的整理出来,供大家学习、参考。由于Linux下很多命令都是常用的,所以这里不给出答案。

    16、你未来的职业规划是什么?
      分析:职业规划问题,是所有面试中最常问的问题,问的人可能是HR、部门主管、经理、甚至是董事长。同一个问题,问的人不同,想要获取的信息也肯定是不一样的。HR更多的想看你在公司的稳定性;技术主管可能更想知道你是否真的喜欢测试这个岗位,后期是否会主动学习型新的技能等;而经理更多的是看你的职业规划符不符合公司的发展方向;软件测试工程师的发展方向主要有:测试开发、产品经理、测试转开发、测试大牛、讲师等岗位;
      回答:HR:如果是HR问的话,多从稳定性的角度回答,如:家人、朋友都在公司附近,或者喜欢贵公司的文化氛围等;
            技术:回答之前可以先简单介绍一下自己为什么选择软件测试这个职业,以及自己对这个职业的看法,最后再回答自己的职业发展方向即可;
            经理or董事长:这个回答回答起来的话还是比较难把握的,因为在面试时,面试者往往对公司的发展方向不是非常了解,所以在回答时可以再带一句,“具体的发展方向,还需要公司的发展方向去调整”。这样回答就会保险一些。

    17、还有什么想要问我的吗?
      分析:这个问题在每个面试的尾声都会被问到,直接说没有,会让HR觉得你不关心这个岗位,问的多了又会显得面试之前没有做好充分的准备。所以问题一般控制在两到三个比较好。
      回答:1、公司的研发团队目前是什么规模?开发、测试分别有多少人?
            2、公司的业务方向是什么?
            3、如果我入职之后,我的工作职责是什么?

    18、为什么想要离职?
      分析:这个问题主要是想要了解你的近况,以及上一家公司是什么原因导致你离职,。在大部分情况下,HR都会理解你,但是在回答问题时千万不能太过于实诚,有些面试者一上来就在抱怨上一家公司如何压榨公司员工等,没有一家公司愿意接受这样的面试者,HR并不能完全感受你所遭遇到的,所以还是请控制好自己的负面情绪。

    展开全文
  • 中级软件测试工程师的岗位职责 中级软件测试工程师需要根据产品需求 应用环境设计测试方 案编写测试用例 下面是我为您精心整理的中级软件测试工程师的 岗位职责 中级软件测试工程师的岗位职责 1 职责 1. 参与测试...
  • 第 PAGE 页码 页码页 /总页数 NUMPAGES 总页数 总页数 页 软件测试工程师的岗位职责范本 导读我根据大家的需要整理了一份关于软件测试工程师的岗位职责范本的内容具体内容软件测试工程师需要配合项目计划负责公司...
  • 初级软件测试工程师的主要职责 初级软件测试工程师需要按测试进度开展测试活动,执行测试过程进行缺陷录入、分析和跟踪并协助重现缺陷,编写报告。下面是小编为您精心整理的初级软件测试工程师的主要职责。 初级...
  • 高级软件测试工程师的基本职责 高级软件测试工程师需要执行功能测试和性能,编写自动化测试脚本及维护。以下是小编整理的高级软件测试工程师的基本职责。 高级软件测试工程师的基本职责1 职责: 1、负责产品或项目...
  • 软件测试工程师职责_软件测试工程师工作内容 由于工作的特殊性,测试人员不但需要对软件的质量进行检测,而且对于软件项目的立项、管理、售前、售后的等领域都要涉及。以下是小编精心收集整理的软件测试工程师职责篇...
  • 高级软件测试工程师的工作职责说明 高级软件测试工程师需要执行具体测试任务并确认测试结果,完成测试报告以及测试结果分析。以下是小编整理的高级软件测试工程师的工作职责说明。 高级软件测试工程师的工作职责...
  • 手机软件测试工程师的基本职责说明 手机软件测试工程师需要组织性能测试用例设计、测试脚本编写、环境配置和测试执行。下面是小编为您精心整理的手机软件测试工程师的基本职责说明。 手机软件测试工程师的基本职责...
  • 软件测试工程师职责_软件测试工程师是干什么的 软件测试工程师是决定软件是否具有稳定性,写出相应的测试规范和测试用例的专门工作人员。以下是小编精心收集整理的软件测试工程师职责篇,下面小编就和大家分享,来欣赏...
  • 软件测试工程师职责_软件测试工程师岗位要求有哪些 软件测试工程师需要有较强的责任心,思维逻辑清晰,擅于跨团队沟通和协作,以下是小编精心收集整理的软件测试工程师职责篇,下面小编就和大家分享,来欣赏一下吧。...
  • 初级软件测试工程师的工作职责精选 初级软件测试工程师的工作职责精选1 职责 1根据产品需求进行系统模块测试包括测试设计执行BUG提交和追踪测试报告接口测试等; 2根据项目过程中的体验对产品提出改进建议以提升用户...
  • PAGE PAGE 1 [模拟] 四级软件测试工程师分类模拟25 选择题 第1题 以下关于面向对象软件测试的说法中正确的是( ) A.面向对象软件只能采用白盒测试不能采用黑盒测试 B.测试一个类时该类成员方法的任何一个消息序列都是...
  • PAGE PAGE 1 [模拟] 四级软件测试工程师分类模拟43 选择题 第1题 以下哪一项不属于Web应用软件表示层测试关注的范畴是( ) A.排版结构的测试 B.链接结构的测试 C.客户端兼容性的测试 D.数据完整性测试 参考答案D Web...
  • ylbtech-杂项-职位-软件测试工程师软件测试工程师 软件测试工程师(Software Testing Engineer)指理解产品的功能要求,并对其进行测试,检查软件有没有缺陷(Bug),测试软件是否具有稳定性(Robustness)...
    ylbtech-杂项-职位-软件测试工程师:软件测试工程师
    软件测试工程师(Software Testing Engineer)指理解产品的功能要求,并对其进行测试检查软件有没有缺陷(Bug)测试软件是否具有稳定性(Robustness)、安全性、易操作性等性能写出相应的测试规范和测试用例的专门工作人员
    简而言之,软件测试工程师在一家软件企业中担当的是“质量管理”角色,及时发现软件问题并及时督促更正,确保产品的正常运作。按其级别和职位的不同,分为三类。
    1.返回顶部
    1、
    中文名:软件测试工程师
    外文名:Software Testing Engineer
    理    解:产品的功能要求
    分    类:三类
    2、
    2.返回顶部
    1、

    分类

    按其级别和职位的不同,可分为三类:
    高级软件测试工程师,熟练掌握软件测试与开发技术且对所测试软件对口行业非常了解能够对可能出现的问题进行分析评估
    中级软件测试工程师,编写软件测试方案、测试文档与项目组一起制定软件测试阶段的工作计划能够在项目运行中合理利用测试工具完成测试任务
    初级软件测试工程师,其工作通常都是按照软件测试方案和流程对产品进行功能测验,检察产品是否有缺陷。
     

    角色定位

    软件项目开发是个分工明确的系统工程,不同的人员扮演了不同的角色,包括部门经理、产品经理、项目经理、系统分析师、程序员、测试工程师、质量保证人员等。可见,软件测试工程师只是软件项目开发中的一个角色而已。
    测试工程师承担的任务角色决定工作内容和承担的任务。测试工程师的角色应该承担什么任务呢?这没有统一的答案。因为,这与软件公司的规模,软件项目管理制度,公司领导和项目经理的管理风格,以及具体软件项目自身的特点有很大关系。而且,测试工程师也有普通和高级之分。
    笼统的答案列举如下:
    设置软件测试环境,安装必要的软件工具
    运行软件,发现和报告软件缺陷或错误。尤其需要快速定位软件中的严重的错误。
    对软件整体质量提出评估
    确认软件达到某种具体标准
    以最低的成本,最短的时间,完成高质量的测试任务
    在这其中,最重要的是要明确程序员的责任和目标。在执行任何具体测试任务前,都要在项目组内对于责任和目标达成共识,以免带来后续工作的相互推诿。
    提高测试质量的要诀
    另外一个值得注意的方面就是工作效率和质量,或许高级测试工程师与普通测试工程师的主要区别在于高级测试工程师可以更快地发现更多软件中的严重错误。对此,有什么可以借鉴的诀窍吗?请尝试以下方法,保证不会使您失望。
    首先测试程序的核心功能,然后测试辅助功能
    首先测试功能,然后测试性能
    首先测试常见情况,然后测试异常情况
    首先测试经过变更的部分,然后测试没有变更的部分
    首先测试影响大的问题,然后测试影响小的问题
    首先测试必须测试的部分,然后测试可选或没有要求测试的部分
    服务员
    需要强调的一点是,无论你是多么高级的测试工程师,都要明白无论测试需要的工具多么复杂,测试步骤多么冗长,测试工程师在软件项目开发中始终都是扮演服务员的角色,这是由测试工作的特点决定的。任何服务都有被服务对象—客户,测试工程师的服务对象有哪些呢?
    最重要的客户是软件的用户。测试工程师需要站在客户的使用和需求角度测试软件,报告问题。
    项目经理也是客户。测试工程师需要报告测试工作进度和发现的问题,尤其是严重的问题。
    程序员是最经常打交道的客户。为了便于程序员重复报告的错误,尽量提供良好的软件问题报告,以便程序员可以更快的修复软件错误
    技术文档工程师、市场开发人员和技术支持工程师也都是测试工程师的服务对象。
    避免错误
    前文已经指出测试工程师应该明确角色,明确任务和责任。知道哪些是自己分内的事,哪些是不属于自己的事。一定要尽最大努力完成分内的事,不要做不属于自己的事情,以免弄巧成拙。
    为了更好的扮演软件测试工程师的角色,尽量避免犯下面的错误:
    ⒈承诺完成测试的软件没有质量问题
    软件测试只是保证质量的一种方法,软件测试工程师的工作不会直接提高软件质量,因为绝大多数软件错误都需要程序员修复。软件测试只能证明软件存在错误,不能保证软件没有错误,不可能找出全部软件错误。个人的能力和对质量的影响范围很小,软件质量的提高要靠软件项目团队全体成员的共同努力。
    ⒉承担软件的发布权利
    不要因为软件中存在还没有修复的错误,而试图提出更改软件发布的计划。也不要认为已经完成了测试计划,自己决定可以发布软件。因为,改变软件发布计划可能要失去进入市场的良机和很多客户,对此造成的经济和公司市场的损失将不是测试工程师能够承担的。另外,软件发布后,如果用户发现了新的软件错误,公司领导或项目经理可能将过错加在软件测试人员的头上,因为他们同意发布软件。通常软件发布的权利由产品经理、项目经理、测试经理、市场经理共同集体讨论决定。
    ⒊扮演过程改进成员的角色
    软件测试工程师必须报告错误,有时也要分析错误的类型、特征和产生错误的原因。但是,不要主动提出改进软件过程的具体改进措施,更不要直接干涉程序员的工作方式,以免出力不讨好,影响今后的愉快合作。软件过程改进的方法是软件质量控制部门的事情,这是他们的本职工作。
     

    工作职责

    软件测试就是使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。开发工作的根本是尽量实现软件用户的需求,测试工作的根本是检验软件系统是否满足软件用户的需求。
    软件测试工程师简单的说是软件开发过程中的质量检测者和保障者,负责软件质量的把关工作。软件测试工程师具体工作有:
    1 、使用各种测试技术和方法来测试和发现软件中存在的软件缺陷。测试技术主要分为黑盒测试白盒测试两大类。其中黑盒测试技术主要有等价类划分法、边界值法、因果图法状态图法、测试大纲法以及各类典型的软件故障模型等;白盒测试的主要技术有语句覆盖分支覆盖判定覆盖、基本路径覆盖等;
    2 、测试工作需要贯穿整个软件开发生命周期。完整的软件测试工作包括
    单元测试、集成测试、确认测试和系统测试工作。单元测试工作主要在编码阶段完成,由开发人员和软件测试工程师共同完成,其主要依据是详细测试。集成测试的主要工作测试软件模块之间的接口是否正确实现,基本依据是软件体系结构设计。确认测试和系统测试是在软件开发完成后,验证软件的功能与需求的一致性、验证软件在相应的硬件条件下的系统功能是否满足用户需求,其主要依据是用户需求
    3 、测试人员将发现的缺陷编写成正式的缺陷报告,提交给开发人员进行缺陷的确认和修复。缺陷报告编写最主要的要求是保证缺陷的重现。要求测试人员具有很好的文字表达能力和语言组织能力
    4 、测试人员需要分析软件质量。在测试完成后,测试人员需要根据测试结果来分析软件质量,包括缺陷率、缺陷分布、缺陷修复趋势等。给出软件各种质量特性包括有功能性、可靠性、易用性、安全性、时间与资源特性等的具体度量。最后给出一个软件是否可以发布或提交用户使用的结论。
    5 、测试过程中,为了更好地组织与实施测试工作,测试负责人需要制定测试计划,包括有测试资源、测试进度、测试策略、测试方法、测试工具、测试风险等。
    6 、测试人员为了更好更有效地进行测试,保证测试工作质量,需要在执行测试工作之前首先需要设计测试用例,形成测试用例报告。设计测试用例是保证测试质量的核心工作,很多测试技术都可以用来指导设计用例。为了提高测试用例的设计效率,BTEST培训课程专门开设了高效设计测试用例一门课来讲授各种设计用例的技术与方法。
    7 、为了提高工作效率或提高测试水平,测试工作需要引进自动化测试工具,测试人员需要学会使用自动化测试工具,编写测试脚本,进行性能测试等。
    8 、测试负责人在测试工作中,还需要根据实际情况不断改进测试过程,提高测试水平,进行测试队伍的建设等。
     

    职业发展

     

    简介

    职业方向
    测试组长这类测试人员通常是测试项目的负责人,既要具备较高的测试技术能力,还要具备一定的管理能力。主要职责是制定测试计划、编写测试计划、监控和管理整个测试过程。测试组长可以向上发展为测试部经理、质量经理,也可以横向发展为项目经理,而且通常待遇相对较高些。
     

    测试分析师

    主要职责是对系统的测试结果进行综合的分析,例如缺陷分析、性能分析等。测试分析师不但测试技术能力较强,还要具备数据库、操作系统等多方面的技术知识。这类职务的发展空间也不错,可以发展成系统设计师等。
     

    测试工程师

    主要职责是编写测试程序、执行自动化测试任务。这类职位的测试人员至少要达到初级程序员的能力,因为经常和程序打交道。发展空间也不错,例如可以发展为程序员。
     

    职业优势

    入门门槛低
    大中专学历即可,是不是计算机专业都可以。如果是其他有业务背景的专业更有优势,例如:会计、金融、办公自动化、酒店管理、网站设计等。对于有行业背景的人来说入门更快,因为对于测试工作来说,有时懂业务比懂技术还重要,你会了技术,去各行各业做测试都是要学习业务知识的,这是很正常的事。
    初级技术要求低
    目前大部分测试技术还属于手工测试,手工测试要求入门门槛很低。你只要会写用例,会提缺陷就可以了。测试人员需要简单了解业务知识,学习所开发系统的使用,也就是会使用系统就可以了。照着用例执行测试,发现缺陷直接提交缺陷就可以了。
    很大的薪酬优势
    刚开始工作时月薪最低4000多,但工作半年,对工作流程了解后,再去换工作,五六千没问题。如果做银行业务测试起薪六七千没问题,有一点银行业务知识的再去换工作八千以上没问题,现在银行测试人员缺口很大。尤其是在大的外包公司做好的项目,比如银行项目等待遇和同等工作经历的开发差不多
    就业好
    国外开发与测试的比例是1:2。目前国内开发与测试的比例是6:1。所以测试行业人才缺口很大,就业前景很好。基本属于供不应求。
    工作比较轻松
    比起软件开发工程师来说,软件测试工程师的工作就相对轻松多了
     

    发展大

    测试分为三个阶段:手工测试、自动化测试、性能测试。这是一个逐步提升的过程。最初工作可能做手工测试,也是目前绝大部分测试人员所从事的工作。自动化测试是测试的发展趋势,而且现在自动化测试人员急缺,且薪资很高。现在最稀缺的是性能测试人员,目前性能测试人员的待遇比同等经历的开发可能还要高,因为现在性能测试人员属于稀缺状态
    (1)手工测试:现在比较普及,大多数测试都还停留在手工测试阶段。
    (2)自动化测试:是趋势,但目前用自动化测试的还比较少,需要适当的代码编写工作。做一段手工测试后,积累一定经验,可以慢慢步入自动化测试阶段,如果自动化测试比较熟练,月薪1万没问题,和开发工资差不多。
    (3)性能测试:性能测试人员现在稀缺人群,一般能做性能测试,且做得可以的一般月薪都在1.6万以上,比开发要高。
     

    无性别要求

    软件测试工程师对性别没有特定要求,因此是一相对来说比较适合女性的IT职业。
     

    越老越吃香

    软件测试工作是对质量的把关,其中包含技术及管理等方面的工作,工作相对稳定,对年龄没有限制,而且随着经验的积累,工龄越长越吃香。
     

    前景分析

    软件测试人员的主要职责是对软件产品的整个开发过程进行监督和检验,使之能够达到满足客户的需求,因此对于企业来讲是十分重要的岗位。在国外,一般软件测试人员与软件开发人员的岗位设置比例是1:1,像微软在开发windows2000时候使用的软件开发人员是1700名,而专业的测试工程师有3200名,测试开发人员比例高到1.7:1,由此可见软件测试岗位重要性的不一般。
     

    职业素质 

    专业技能

    中国国内软件测试人才现巨大缺口中国国内软件测试人才现巨大缺口
    计算机领域的专业技能是测试工程师应该必备的一项素质,是做好测试工作的前提条件。尽管没有任何IT背景的人也可以从事测试工作,但是一名要想获得更大发展空间或者持久竞争力的测试工程师,则计算机专业技能是必不可少的。计算机专业技能主要包含三个方面:
    测试专业技能
    测试专业知识很多,本书内容主要以测试人员应该掌握的基础专业技能为主。测试专业技能涉及的范围很广:既包括黑盒测试白盒测试测试用例设计基础测试技术,也包括单元测试功能测试集成测试系统测试性能测试等测试方法,还包括基础的测试流程管理、缺陷管理、自动化测试技术等知识。
    ⒉ 软件编程技能
    软件编程技能实际应该是测试人员的必备技能之一,在微软,很多测试人员都拥有多年的开发经验。因此,测试人员要想得到较好的职业发展,必须能够编写程序。只有能够编写程序,才可以胜任诸如单元测试、集成测试、性能测试等难度较大的测试工作。
    此外,对软件测试人员的编程技能要求也有别于开发人员:测试人员编写的程序应着眼于运行正确,同时兼顾高效率,尤其体现在与性能测试相关的测试代码编写上。因此测试人员要具备一定的算法设计能力。依据资深测试工程师的经验,测试工程师至少应该掌握Java、C#、C++之类的一门语言以及相应的开发工具。
    ⒊ 网络、操作系统、数据库、中间件等知识
    与开发人员相比,测试人员掌握的知识具有“博而不精”的特点,“艺多不压身”是个非常形象的比喻。由于测试中经常需要配置、调试各种测试环境,而且在性能测试中还要对各种系统平台进行分析与调优,因此测试人员需要掌握更多网络、操作系统、数据库等知识。
    在网络方面,测试人员应该掌握基本的网络协议以及网络工作原理,尤其要掌握一些网络环境的配置,这些都是测试工作中经常遇到的知识。
    操作系统和中间件方面,应该掌握基本的使用以及安装、配置等。例如很多应用系统都是基于Unix、linux来运行的,这就要求测试人员掌握基本的操作命令以及相关的工具软件。而WebLogicWebsphere等中间件的安装、配置很多时候也需要掌握一些。
    数据库知识则是更应该掌握技能,现在的应用系统几乎离不开数据库。因此不但要掌握基本的安装、配置,还要掌握SQL。测试人员至少应该掌握Mysql、Sqlserver、Oracle等常见数据库的使用。
     

    行业知识

    行业主要指测试人员所在企业涉及的行业领域,例如很多IT企业从事石油、电信、银行、电子政务、电子商务等行业领域的产品开发。行业知识即业务知识,是测试人员做好测试工作的又一个前提条件,只有深入地了解了产品的业务流程,才可以判断出开发人员实现的产品功能是否正确。
    很多时候,软件运行起来没有异常,但是功能不一定正确。只有掌握了相关的行业知识,才可以判断出用户的业务需求是否得到了实现。
    行业知识与工作经验有一定关系,通过时间即可以完成积累。
     

    个人素养

    作为一名优秀的测试工程师,首先要对测试工作有兴趣:测试工作很多时候都是显得有些枯燥的,因此热爱测试工作,才更容易做好测试工作。因此,除了具有前面的专业技能和行业知识外,测试人员应该具有一些基本的个人素养,即下面的“五心”
    1.专心:主要指测试人员在执行测试任务的时候要专心,不可一心二用。经验表明,高度集中精神不但能够提高效率,还能发现更多的软件缺陷,业绩最棒的往往是团队中做事精力最集中的那些成员。
    2.细心:主要指执行测试工作时候要细心,认真执行测试,不可以忽略一些细节。某些缺陷如果不细心很难发现,例如一些界面的样式、文字等。
    3.耐心:很多测试工作有时候显得非常枯燥,需要很大的耐心才可以做好。如果比较浮躁,就不会做到“专心”和“细心”,这将让很多软件缺陷从你眼前逃过。
    4.责任心:责任心是做好工作必备的素质之一,测试工程师更应该将其发扬光大。如果测试中没有尽到责任,甚至敷衍了事,这将会把测试工作交给用户来完成,很可能引起非常严重的后果。
    5.自信心:自信心是现在多数测试工程师都缺少的一项素质,尤其在面对需要编写测试代码等工作的时候,往往认为自己做不到。要想获得更好的职业发展,测试工程师们应该努力学习,建立能“解决一切测试问题”的信心。
    “五心”只是做好测试工作的基本要求,测试人员应该具有的素质还很多。例如测试人员不但要具有团队合作精神,而且应该学会宽容待人,学会去理解“开发人员”,同时要尊重开发人员的劳动成果——开发出来的产品。
     

    要求

    1、质量意识:在整个软件测试的各个环节中,质量意识一定要贯穿其中。理解功能需求,书写测试案例,执行测试计划,发现问题,提交问题,描述问题,协助解决问题,以及问题的跟踪等,在所有的环节中,一定要注重质量,并且从质量的角度来思考问题。
    2、细心并且系统:软件测试可能每天要重复同样的操作,其工作可能会枯燥无味,并且发现的问题可能很微小或者很杂乱无章、现象不一。在这样的情况下,软件测试人员一定要细心不放过任何微小的错误,并且从很多杂乱的现象中找出一定的规律和复现性。并且在测试中有很好的规划性,先测什么而后测什么,不放过任何软件的死角。在测试中,一定要系统的看待问题,功能模块A的改动会否影响到其他模块的功能,不能想当然,一定要系统性的看待。有时候一个内存地址的改变,都有可能引起准给软件的崩溃。所以一定要系统性的去处理和看待软件中修改的任意一处代码。
    3、软件测试理论的掌握以及开发工具和平台的应用:黑盒测试,白盒测试,功能/系统/压力/性能等等。但不管测试任何东西,基本理论是不变的。需求文档,设计文档,根据文档制作测试用例(划分等价、边界测试、路径测试、用户体验、等等),执行测试,提交并跟踪问题。当然,行业的不同,其测试用的工具和方法也不太一样。手机App该如何测试,无线通讯产品该如何测试,C/B-S应用该如何测试,这些产品的差异性很大,其用到的工作也很不一样,但是其基本的测试理论还是一致的。
    4、站的高看的细:不能光有理论,对测试的很多文档可以提出很多有建设性的意见,但当执行测试时却不能发现问题。这其中有几个原因,一是可能提出的意见并没有写进测试案例中,二是有可能执行不仔细总是忽视问题的存在,三可能就是没有去实施。所以一定要站在一定的高度去看待软件测试,但是又要很细致的实施。只有通过实践,才能发现问题改进问题到最后解决问题。
    5、团队合作:这个无需多讲,在这个产品日渐复杂的年代,很难有一己之力就可以在各个方面做的最好。要充分发挥团队每个人员的工作能力和效率。
    6、怀疑:有些书是这样定义软件测试的,软件测试不会去证明软件是正确的,而是去证明是错误的,但是我们不可能发现所有的错误。所以有很多时候要去怀疑要去假设。
     

    软件技能

    (Software Engineering Skills)
    软件工程技能可以分成三大块:理解软件工程的规则,了解计算机编程和操作系统知识
    理解软件工程“规则”。有一种过时的眼光认为软件工程只是由一些在工作期限之前疯狂编程、靠着非凡的协调能力和超人般的咖啡消耗整夜不睡,不停地设计和测试程序的“专家”们组成的。这种现象确实存在,但你只有了解了软件开发的真正过程,才会是一个专业人员。
    从哪开始呢?先到图书馆去走一走。你需要建立软件测试知识的软件工程基础。我的建议是阅读Roger Pressman的软件工程:A Practitioner's Approach,fifth edition (职业入门,第五版,McGraw Hill,2000年版)和 Glenford Myers的The Art of Software Testing(软件测试艺术,John Wiley & Sons,1979年版)。Pressman的书是一个对软件工程原理的全面介绍。有很多关于软件技巧、项目管理、要求分析和软件设计等软件工程方面的好书,但Pressman对这些方面在一本书里作了介绍。Glenford Myers不到二百页,1979年发行,却是软件测试方面的圣经。Myers定义及诠释的测试方法论已成为软件测试的基本模块。
    Myers还考查了软件测试中的经济(缺陷的代价)和心理学方面(测试的目标就是发现失误及不成功之处),以及主导软件开发和测试的基本原则。
    对参考书进行基本研究是一个好的开端,但这只是单方对话。如果你能和上千个直接具有软件工程和测试经验的人以及想进入这一领域的人对话是不是再好不过了呢?感谢那些网络电子部落,你已经可以做到了。Comp.software-eng覆盖了设计、编程、项目管理等软件工程的各个方面。Comp.software.testing涵盖了软件测试的自动化、培训、技巧等方面。
    等等,别只停留在这里!你是不是应当经常访问这些网址呢?Bug-Net(http://65.54.244.250/cgi-bin/linkrd...%2ebugnet%2ecom)是有关软件缺陷的在线杂志。阅读有关缺陷的文章是学习如何工作及失败的极好方式。你也应当查阅软件测试及质量工程杂志(http://65.54.244.250/cgi-bin/linkrd...ww%2estqe%2ecom)。STQE 是确定网络软件测试资源很好的始发站。
    计算机编程。不能想像有的人喜欢测试产品却从不阅读、检查和理解组成产品的软件一样。
    不要误解我的意思。你不必花所有的时间去读源代码,但任何你做过的有关自己程序的设计、编写和纠错都能大大地有助于测试别人编写的程序。
    你怎样学习编程?通过编程。可以严肃地说,开始学习写计算机程序是最简单的事。记住我说的是“开始学习”。软件编程环境,例如 Microsoft Windows Foundation Classes (MFC) or Sun's Java Foundation Classes (JFC,also called "Swing")不断变得越来越复杂,越来越难跟得上。
    但我在努力超越自己。你应当怎样学习编程呢?
    首先,买Microsoft Visual Basic。不要让名字骗了你。你能用这套组件建立相当复杂的程序。而且它只要一百元左右。下一步呢?等等,是visual编程警告的时候了!
    现在你为你的PC买一个程序语言的时候,你其实是买了一个集成开发系统或称为IDE。这些IDE通过对编程的简化把开发过程流水线化。这些IDE其实会帮你写很多编码。这非常有利于尽早开发出一个产品,却不利于你学习编程。如果你用Windows产生程序,你别无选择,因为环境介入太多使你无法从头编程。如果你从Unix系统产生程序,你能自己写所有的编码。
    一旦你习惯了与参量、控制结构、对象、输入输出及更重要的Visual Basic纠错打交道的时候,你就可以开始学习C语言了。学习C能使你熟悉十六进制系统,通过指针分配和参考内存,存取个体位码及建立程序模块
    我总是认为在学Java之前最好先学会C,因为C强迫你自己去完成许多任务而Java会自动处理(例如,释放未用的空间)。用C工作比Java难,但你能学到编程更多的基本方面。你其实能用Visual C++IDE从头写C程序,但最好还是在Unix系统中学C。
    操作系统知识。你已经把它交给了在Redmond,Washington的那些人了。在短短的几年内,Windows NT已经成为世界上大部分计算机的标准操作系统。如果你要用NT工作,你需要了解它的寄存地址。(它是一种用于存储你的系统结构的各个方面的数据库。)我发现Peter Norton写的InsideWindows NT 4.0(SAMS,1998)是一本很好的介绍书。但是,如果你的应用或系统要求高的保密度、产出、可靠性及灵活性Unix依然是最好的选择
    如果你想成为一个成功的软件工程师你必须能在Unix的世界里工作,如果你想从头学习编程,也要在Unix下进行
    你的选择是什么?你可以到当地的学校或大学学习课程,或者在家建立一个Unix系统。别昏过去了,你所需要的只是一台PC和一份能让你从网络免费下载的Linux拷贝。(你大约花二十九元能买一份在一个CD-ROM中带了所有文件的拷贝。)Linux不是Unix的“玩具”版,它是真实的。它已经发行了七百万份拷贝,一些主要的PC生产商甚至先替你装载了它。
    好了,你已经到了Unix或Linux系统了。你应当学些什么?文件和目录结构,标准输入输出和错误流,背景(background,也称为"daemon")处理,从C调用系统功能,好,我可以接下去了。一个好的开端是读Arnold Robbins的Unix in a Nutshell (O'Reilly & Associates,1999)或者是Ellen Siever的Linux in a Nutshell (O'Reilly & Associates,1999)。
     

    交流技能

    (Communications Skills)
    能写出计算机程序却写不出一个完整句子的软件工程师现在还有。但不幸的是,要成为一个成功的软件测试工程师,你需要清楚的交流。
    你怎么去学习写?通过写。如果文字水平太粗糙,上一门创造性写作的课。每天写工程流水记录或发email。关键是学习(或重新学习)怎样用清晰可懂的语言表达你的思想。一个好的写作参谋是William Strunk Jr.和E.B. White写的The Elements of Style(Allyn & Bacon,2000),它一点也不象初中教科书。
    测试工程师必须把产品测试的技术写成文件。测试计划提供指导并把测试设计转化为设置、实现测试和评估结果的步骤指导。具有一般软件和产品特性不同层次经验的工程师都能使用这样一个详细的测试计划。如此测试设计者或测试方案作者之外的工程师也能能进行测试。
    测试计划也帮着佐证测试策略的正确性。项目中的每个人都应当参与审查(即市场、开发、支持、技术写作及测试人)。计划的审查是必不可少的,因为尽管测试工程师尽最大努力来达成一个对产品的全面定义,这一测试设计者所基于的定义不一定是完整或准确的。此外,就象开发者很难测试他们自己的编码一样,测试工程师也很难明确评估他们自己的测试计划。每一个计划审查者都可能根据其经验及专长建议修改,有时候审查者还能提供测试工程师在组织产品定义时不具备的信息。例如,一个市场人员可能了解到了新的客户要求,一个软件支持专家可能从有关的产品领域了解到了一个新的缺陷报告。
    测试计划强调测试计划和执行的原则。在测试计划中描述进行测试所需的测试设计和步骤是另一层关于测试设计和计划的原则。在测试设计和计划中的错误与欠缺在设计转化成测试计划中特定的结构和测试步骤后就经常是再已无法弥补。
    测试计划可作为其它项目,例如为不同的产品准备测试时的参考资料。当被测试软件找到缺陷解决并证实后,测试计划所述的测试可以用于证实缺陷的解决方案。同时,一个主要的测试设计信息来源,特别对于旧产品的新版本而言,是相关产品或前版本的测试计划。在建立新版本时,旧版本的软件测试计划都应当被重新审查。
    与功能与设计说明不同,测试计划将从测试的角度来描述产品的功能操作。从这方面说,测试计划构成了公司公共档案的一部分。随着时间的流逝人们会离开公司,带走他们的知识。以前产品的测试计划就能帮助你定义新产品的测试。
    软件测试工程师还要写测试结果报告。测试结果必须写成文档,这样就能确定被测软件的状态,提供关于必须要解决的缺陷的记录。产品测试中发现的所有缺陷的记录是测试部门最显眼、保存时间最长的文档。测试计划和测试报告在项目的最后常被遗忘,但现存缺陷的清单(或数据库)代表项目未完成的议程。这一议程没完成是因为一些缺陷必须在对原来产品的一个patch或maintenance release的时候纠正,或者它们在这个产品作为后续产品的基础之前被修复。
    在与软件产品打交道的过程中,测试工程师比其他部门的人参与项目的更多方面。测试部门应当记录项目过程中重大事件(例如设计决定)的信息。这个信息应能帮助测试部门和其他部门避免在后续项目中犯同样的错误。错误是不可避免,在一个项目中可能出问题。从这些经验中学习就可能避免问题,避免今后的同样错误。从错误中学习的第一步就是记住它们,记忆的第一步就是把它们写下来。
     

    组织技能

    (Organizational Skills)
    每当执行一个软件项目的测试计划,几乎不可能不遇到至少会阻碍一些测试而必须解决的缺陷。一个测试工程师应当能灵活地停止测试产品的一部分而开始测试其他部分。有时被测软件需要做根本变动引起大量的测试结果失效,测试也许得重做不止一次。在问题被查找和改变在进行的过程中,测试工程师必须有条理,保持对执行测试的软件的前后关系的明确感受(例如目前被测试的程序特定版本的不同部分)。
    网络时代要求的动态开发和测试模式使组织性的工作方式对测试工程师越来越重要。在整个开发过程中被测试软件可能会不断地改进。测试工程师在计划和实施测试的时候必须考虑这些变化因素,必须控制测试环境来保证测试结果的有效性。
    记住计划是一个动词。作为一个软件工程师,你永远不会有你想要的所有时间和资源。你总是必须通过理解技术和产品,开发组织方式,从你和其他人的错误中学习,以及在设计必须改变和出问题的时候的迅速调整,使你的测试效果和效率最大化。如何能做到这点呢?基本代数:量化任务、目标和结果来减少方程中的变量数。把产品的功能定义成要求。在测试计划和测试中量化测试及其预期的和实际的结果,把信息提供给项目组。你东点一下西点一下是不能完成整个测试的。未来软件开发的组织模式要求有灵活的设计和不断进化的开发周期。对产品测试必须随着产品的进化而进化。
     

    实践经验

    (Hands-On Experience)这是个典型的两难问题。你需要软件测试经验来找工作,你没工作你就没经验。你该怎么办?
    Be careful! 这需要勇气和你的PC的小心备份
    作为自愿者参与beta测试。怎样发现需要beta测试员的公司呢?首先,给你在软件公司工作的亲友打电话。偶尔有人会需要beta的测试人员。如果这不行,到你最喜欢的网络搜索引擎上去找“beta test”。你会发现很多小(和不那么小的)公司亟需beta测试员。为什么?这得感谢互联网,竞争的加剧使公司必须做出产品模型贴到他们的网址上作为“beta”版推出。这些公司希望人们不仅测试他们的产品,而且对这些免费品感兴趣进而购买他们的产品。
     

    态度

    (Attitude)
    “我希望你幸福的梦想,被你打破了!”
    我打赌这句话能勾起一些人童年记忆的创伤。我不是心理学家,但我还敢说这种说法是因为我们渴望看到成功。在软件测试中,你不仅要证实软件在做它该做的,还要证实它不会做它不该做的。为了做到这一点,你得找出软件的失败之处。
    进行软件测试需要很多人的眼光要进行一百八十度的转变,因为测试的目标是要让被测软件失败,由此产生出等同于其他东西工作正确时的成功。在软件测试中,一个成功的测试揭示一个缺陷。进行软件测试也是因为互联网的来临要求人们用一种大不同以往的眼光来看待动态的开发和测试模型
     

    必备特性

    软件测试工程师除了技术,还要求具有否定性的创造力探测技巧总体理解产品的能力用客户的眼光进行评估怀疑的而不是敌意的态度能经受得住坏消息而保持目标拥抱新技术的热望等特征
    否定性的创造力
    一个软件工程师不能怕引起一个产品的瘫痪或烧毁。在软件测试中,边界意味着被超越而不是被遵从。如果一个程序对某个值的极限为10(例如,可以在一时间被打开的最大文件数),测试工程师的第一想法应当是“如果我把那个值取11,或0,或10.1,甚至不设这个值会如何?”
    在我的早期的工作生涯中,有一次我测试一个开发和QA工程师遗漏下来的PC数据库。有问题的数据库是2.01版。这本身就说明产品有问题。2.0版没解决1.0版的所有缺陷吗?或者2.0版又加入了新的缺陷?很遗憾因为时间紧我没有调查这些,只是证实了最后的缺陷修复后就告捷了。
    这是很大的错误。我应当重测开发人员所谓“没有变化”的所有产品功能。2.0版本中的缺陷确实复修了,但在修复的过程中,有人破坏了请求。事实就是如此,在数据库里不能搜索数据了,第一个收到这项产品的beta客户发现了这个缺陷。
    我宣布以前的测试无效,要求对产品进行全面测试。找到几个缺陷之后,我发现这个数据库读取写保护文件或写保护了的磁盘的时候就会引起瘫痪。开发人员很吃惊我会试着写保护一个数据库。他们的反应就是:“没人会这么干的!”产品的市场经理很快用他们的方式承认了错误。
    探测技巧
    在一个理想的世界中,软件测试应当在一个经常更新的写得很清楚的功能与设计说明文件(一般被称为“specifications”)中被完整而精确地描述。不幸的是,这一完善被开发程序每一方面文件的任务,包括记录在开发中对程序不可避免的改变,要花很多的时间和精力以至于人们无法完成编程。而且花费也太大。
    正式与非正式的信息源
    正式系统
    要求文件
    功能说明书
    设计说明书
    非正式系统
    用户文件
    与其他开发人员的交流
    与软件支持人员的交流
    有关产品的文件
    有关产品的缺陷
    从工作于相关或早期版本产品获得的“局部知识”
    因为我们不是在理想世界里编程,测试工程师应当能够自己找出工作的方式。典型的是,总会有一些设计和功能说明书让测试工程师用于开始他的研究。这些文件能看成为描述被测试软件的“正式”系统。测试工程师应当能用更广大的“非正式”系统的信息来扩展“正式”系统的信息。同时,在项目周期的任何一个点,任何文件都可能是正确或不正确的,所以测试工程师必须根据对软件工作模式的观察,与开发人员和其他项目人员的交谈,或对有关或看上去不那么相关文件的审核,来确定文件的精确性。
    总体理解产品
    在一个程序项目是,软件开发工程师主要把他们的精力和注意力集于自己的项目部分。结果当这些项目部分组合在一起进行测试的时候,就会碰到兼容性的问题。到产品寄给一个客户之前,唯一能见到整个产品的就是测试工程师。因此测试工程师必须能够对整个产品的操作与使用保持一种“系统”的眼光。
    测试工程师对产品的任何一部分的操作可能不是最好的专家,但他必须是产品整体操作的专家。例如,如果被测的产品是一个类似于Microsoft Office的由文字处理、扩展页和其他有关程序组成的办公室自动组件,测试工程师必须了解每个程序的操作,各个程序之间的相互作用和客户其他的软件硬件和软件环境
     

    评价

    测试工程师必须是客户的拥护者。被测程序有可能运行可靠满足所有的设计要求,但在客户的软件环境中未必能够用。产品被送到客户之前的测试之一就是要证实产品达到了客户的要求与期望。在这项测试中,测试工程师必须模拟用户的软件环境,把自己放到他们的位置上。
    关于软件功能“正确”而不能满足客户需要的一个悲剧性的例子就是美国航空公司965航班1995年在哥伦比亚卡利市的一次失事。在飞行着陆时,空中信号控制系统指示机组人员朝一个叫“Rozo”的航空信号灯飞。这个信号灯在航空图中标为R。机组人员把R输入到飞行管理计算机中,看到了明显是由近到远列出的六个航空信号灯。机组人员选了第一个信号灯,以为这就是Rozo。但那不是。自动驾驶仪把飞机向左转了九十度,撞到了山上。
    什么地方出错了呢?当航空表里把Rozo列为R的时候,飞行管理计算机要求机组人员输入信号灯的全名调出它的方位。同时,计算机只显示了信号灯的编码字母和方位。计算机功能“正确”,但不满足用户的需求
     

    变化

    项目刚开始时的要求与最终项目完成时的要求一致的情况是极少见的。有时技术变化了,产品必须改变以适应于技术。有时竞争对手的产品具有你的产品所没有的功能。很多情况下,客户的或潜在客户的要求需要变化。这些因素合在一起的一个例子就是目前Microsoft Internet Explorer和Netscape的竞争。
    随着计算机首次用户的迅速增加,今天的测试工程师比以往更需要把自己置于客户的位置上。这些新的非技术用户不愿意接受缺陷,对缺陷的解释或理性思考,或通过“升级”修正缺陷。他们只希望他们所买产品的软件和硬件都是能工作的。
     

    态度

    测试工程师不能按表面值接受事物,必须执着地对一切提出疑问直到被证实。工程师必须用一种与项目的其他的人合作精神来平衡这种怀疑性与执着性。测试部门与其有关部门的关系可能会变得紧张,特别是在大量缺陷被发现后,或者在每个找出的缺陷会潜在地延迟产品的发货时间而延迟了项目时。测试工程师应当记住要攻击程序的整体性,而不是程序员。
     

    能力

    一个测试工程师必须忠实地汇报产品中的缺陷。这一信息应当被项目组欢迎,因为每一个测试工程师遇到的问题(除非加入新的问题)都意味着减少客户会面临的问题。但不幸的是很多人不想听到有问,特别是在程序项目的后期。
    测试工程师应当能处理因为工作做得太好而引起责备的情况。这对有些人来说是很难做到的,会严重地影响斗志与自尊。
    看起来常常是测试工程师阻挠了向客户交货。客观的项目经理才能感觉到测试工程师是在对项目提供有价值的服务。我清楚地记得一个项目经理举起他的手求我他要的是:“解决方案,不是问题!”(他不明白解决方案的实现有时要求一个问题的解决。)有时项目经理在项目计划不方便的时候对于因为发现缺陷而打折是有压力的。在这些情况下,测试工程师应当能基于他对产品的经验和知识进行辩护,但他不应表现为象是他个人受到了威胁。
    如何避免这些情形呢?就测试的内容、时间及如何更新测试结果和缺陷信息,设定其他项目组成员的期望。我曾经为一个希望延迟产品发送日期的QA经理工作过。他的目的不是为了产品成功,而是政治权力的操纵。他确信自己能被提升,把一些为他工作的工程师指定为“manager”,开始自称为“director”,还要大楼管理人员把他的办公隔间加宽一英尺。(这没有实现,但至少他的座位有了更多伸脚的余地。)
     

    热望

    对多数人来说,年龄越大越难学习在商业世界里,人员越往公司的食物链高处走,越远离他们所建立的技术基础。这一部分是因为他们需要把精力集中于其他的经营和指导其下属的任务中。有时也是因为他们不幸地认为自己已不需要进行实践的技术工作了。互联网增加了技术变化的速度。不继续学习或跟着发展就无法做出商务与技术的决断。
    从前的一个经理给我树立了如何对待新技术的榜样。我跟他工作的时候他年近六十,但他象新手一样地热心于学习新技术。他大量地获取信息,不断补充在网络服务器防火墙、和Perl或Expect等新语言的知识。他还重视做QA或测试组织的工作。他的最初背景是软件开发和开发管理,但他并不认为做QA经理是在降低他的声望。他明白一个独立的测试或QA组所进行的完整测试能使开发经理的工作变得多简化。
    正象我所说的,当你生活于网络时代,只要原地不动就很容易落伍了。
    相对于其他软件工程人员,软件测试工程师的知识面应该非常宽广,但最重要的品质应该是能够在第一时间内接受新技术。
    由于公司之间的竞争日益集中在质量方面,所以公司对软件测试人员的需求量也越来越大,这一点,在北美尤为明显,这决定了软件测试行业的前景可喜,同时也为愿意不断进取、学习新技术的华人移民提供了广阔的就业空间,软件测试工程师的就业机会一直都是非常多的,最关键,要善于抓住机遇并肯付出努力,踏踏实实的学起来、做起来。
     

    开设课程

    搭建 Windows测试环境
    主要讲解搭建 Windows 测试环境所要具备的软、硬件及网络知识。包括计算机中各种硬件和接口。软件的分类、分发和授权等方式;操作系统的初步知识;注册表、病毒、安全等知识; TCP/IP 协议和 DNS 、活动目录等知识。从而让学员可以在实际工作环境当中搭建一个基于 Windows活动目录的局域网环境。
    使用 C 语言开发简单应用
    设置本课程的目的主要是使学员掌握软件开发的技术,掌握编程的方法、思想,了解软件开发过程当中常犯的错误,为后面的测试课程以及编写测试脚本打下语言基础。课程中主要包括 C 语言的语法、程序基本结构、函数、指针数组、数据结构、算法等程序设计所涉及到的知识。课程注重实用性、重在培养学员对代码分析的能力,掌握编码规范,掌握调试知识和分析程序错误的能力。同时学习内存检查工具软件配置管理等知识。该课程中贯穿了一个开发“软件测试工程师管理系统”的项目,增加学员开发项目的经验。
    本课程是软件测试重点课程。本课程主要介绍软件测试的基本概念和基础知识、如何编写测试计划、识别软件缺陷、编写缺陷报告等。通过学习,学员可以掌握软件测试的流程、软件测试的策略和分类,掌握缺陷的分类和优先级等,从而对测试有一个整体的认识。本课程中介绍了 Bugzilla 缺陷跟踪管理系统(测试工具)。总体来说,本课程将使学员掌握大部分软件测试相关的基础知识。
    高效设计测试用例
    本课程是软件测试重点课程。本课程主要通过引入的大量案例讲解如何编写测试用例。讲解设计测试用例的技术包括等价类划分、边界值分析、因果图方法、状态图方法、测试大纲等的方法以及正交排列表、测试矩阵等。测试特性包括:功能、性能、兼容性、易用性等。测试对象包括软件功能、 GUI 界面、文档测试、安装和卸载测试等。通过本课程,主要是培养学员设计测试用例的视角,在最短的时间内针对功能写出恰当的测试用例。本课程和《测试计划软件缺陷》课程中贯穿了对“软件测试工程师管理系统”编写测试计划、测试设计和开发,实施测试及测试评估的项目,增加学员软件测试相关经验。
    白盒测试
    本课程主要讲解白盒测试技术。主要内容包括逻辑驱动覆盖和基本路径覆盖两个方面,在逻辑驱动覆盖中主要介绍了语句覆盖判定覆盖条件覆盖、判定 / 条件覆盖、条件组合覆盖、路径覆盖和循环语句覆盖;在基本路径覆盖中介绍了绘制控制流图及程序复杂性相关概念,最后重点介绍了单元测试技术。通过学习,学员可以了解白盒测试的理论,组织方式,已经如何评估一个白盒测试的效果。本课程中介绍了Logiscope和 C++ Test 两个白盒测试工具。
    Linux 与网络应用环境
    本课程主要讲解搭建 Linux测试环境所应具备的知识。通过学习 Linux 的安装和配置、 Linux 常用命令、 Linux 下软件安装、卸载和使用、常见的 Linux 的服务(Apache 、 Mysql 、 Squid 、 Iptables 等)、 Linux软件开发环境等,让学员能够使用 Linux 实现一个提供常见服务的网络环境。本课程中在前期通过在 Linux 当中搭建 Bugzilla 缺陷跟踪管理系统来讲解 Linux 的使用和配置。
    WEB 技术与数据库
    本课程通过对数据库、 HTML 、 XML 、 HTTP 、 J2EE 、 .NET 等基础知识的讲解,让学员掌握这些技术,以便于建立分布式软件的测试环境。数据库是以 SQL Server 作为重点讲解,同时也介绍了 Oracle 和 MySQL 数据库。
    高效使用自动测试工具
    本课程主要介绍了国际测试工具占有率最高的 MI 的三大测试工具:功能测试工具 QuickTest Professional 、性能测试工具 LoadRunner 、测试管理工具TestDirector。学员掌握这些流行的测试工具,从而进一步提高测试的效率。
    本课程是最后一门课程,该课程主要是通过运用前面所学习的课程,指导学员完成一个项目的测试过程,从而巩固所学知识。在该课程中将完成分组分工、编写测试计划、写工作日志和开例会、设计测试用例、执行测试、填写和处理缺陷报告的过程。使用的项目通过三个版本来进行回归测试,通过分工与合作来完成测试工作,通过讲师和学员分别模拟测试组成员角色,锻炼学员实践的能力。该项目是一个百万行代码级别的类 Office 系统。
    职业导向训练
    职业导向训练,简称COT课程,即Career oriented Training,是对学员进行职业引导,包括就业指导和职前引导。通过就业指导以及就业专员、就业明星与学员的座谈会等日常辅助训练明确就业方向,进一步了解就业形式。详细介绍如何写简历,通过强化面试训练,以及模拟面试等方式,提升学员应对面试的能力,从而加强学员就业竞争力。
    华为软件测试工程师学习大纲
    一、软件测试的原理
    v 软件工程:软件的含义、软件开发过程的特性 、软件生命周期模型、软件管理过程软件质量和质量保证:软件质量就是客户的满意度 、质量的概念、软件质量的内涵、质量管理体系、SQA、SCM、SEPG
    v软件测试概念:软件危机、软件测试产生的背景,软件缺陷是什么、软件测试职业发展,软件测试人员应具备的素质和技能、软件测试基本概念、软件测试的目的、软件测试的重要性、软件测试的原则、软件开发与软件测试
    v软件测试依据和规范:软件质量标准、软件测试规范、界面规范、编码规范、CMM和ISO9001思想结构体系、CMM VS ISO
    二、软件测试的技术
    v软件测试技术概述:软件测试的基该方法,黑盒测试白盒测试静态测试动态测试、测试策略
    v软件测试流程:软件测试流程、通用测试文档模板 、软件测试的分类、软件包的质量特性
    v 单元测试和集成测试:什么是单元测试、单元测试的目标和任务、单元测试方法、调试与评估、什么是集成测试、集成测试目标和任务、集成测试的模式与方法
    v 系统测试和验收测试:什么是系统测试,系统测试的目标和任务,系统测试方法,系统测试中工具的应用、什么是验收测试、验收测试的目标、验收测试的过程和主要内容、产品规格说明书的验证
    v 特定类型的软件测试面向对象软件的测试、面向对象软件的特点、面向对象测试的层次与数据流、面向对象的单元测试、面向对象的集成测试 、基于应用服务器的测试、应用服务器的分类和特征、基于Web服务器应用的测试、基于数据库应用服务器的测试、基于J2EE平台的测试、软件本地化测试:什么是软件本地化、软件本地化的翻译问题、软件本地化测试的技术问题、本地化测试的重点
    三、软件测试的实践
    v测试环境的部署:测试环境的重要性、测试环境的各要素、建立测试实验室、测试环境的维护和管理
    v软件测试用例的设计:测试用例来源、测试需求提取、测试用例设计、白盒测试用例设计方法、逻辑覆盖法/基本路径测试法 、黑盒测试用例设计方法、等价类划分法/边界值分析法/因果图法/错误推测法 /功能图法、测试用例的组织和跟踪、使用实际项目实践
    v 报告所发现的软件缺陷:软件缺陷的描述 、软件缺陷相关的信息、软件缺陷的处理和跟踪
    v软件测试和质量分析报告:软件产品的质量度量 、评估系统测试的覆盖程度 、软件缺陷分析方法 、基于缺陷分析的产品质量评估 、软件质量的可靠性评估、软件可靠性模型、可靠性评估过程
    v软件测试自动化:测试自动化的内涵、测试工具的分类和选择、测试工具的主流产品介绍、IBM-Rational产品的整体解决方案、Mercury Interactive产品的整体解决方案,测试管理工具TD实操演示及指导、功能测试工具Robot实操演示及指导、脚本语言perl实操演示及指导、性能测试工具LR
    v 网络基础知识:协议概念、常见的网络协议及层次、TCP/IP协议、Arp协议等报文分析、常见的网元设备及工作原理、常用的网络操作相关命令、客户机服务器模型、抓包工具使用
    v 数据库简介及SQL语句:数据库系统概念、数据管理的发展阶段、数据库系统的特点、SQL概述、SQL数据定义功能、SQL数据查询功能、SQL数据修改功能、嵌入式SQL
    v Linux操作系统简介及常用命令:Linux系统介绍、Linux系统历史及发展、Linux系统特点、Linux系统安装与配置、Linux系统命令的使用方式、文件及目录操作命令、文件压缩命令、联机帮助命令、进程管理的命令
    v 组织和管理测试团队:基于ISO的测试管理体系构成、测试团队的地位和责任、测试团队的构成 、测试团队的管理和发展
    v软件测试项目管理:软件测试项目管理的概述、软件测试项目的组织 、软件测试项目的过程管理 、软件测试项目的资源管理 、测试项目的进度管理 、测试项目的风险管理 、测试项目的质量和配置管理、软件测试文档的管理
    v 理解CMM:KPA简介 、CMM的五个等级及关键过程域、CMM实例简介 、CMM的发展、CMMI2级详细讲解
    五、软件测试人员面临的机会和挑战
    v软件测试职位在IT行业的现状
    v软件测试职位到底是干什么?
    v软件测试行业的背景
    v软件测试人员需要具备的基本素质
    v软件测试工程师需掌握的技术技能大纲
    v软件测试人员后期的发展机会和挑战
    附录(基础技能版,本内容为华为公司指定培训内容):
    一、基础技能方面:
    Unix/Linux操作系统:
    ⒈熟悉UNⅨ环境
    ⒉掌握UNⅨ常用命令
    ⒊了解并掌握Vi的一些常用命令
    ⒋了解基本的shell
    Informix:
    ⒈熟悉并掌握informix常用命令
    ⒉掌握SQL相关的一些知识
    Oracle:
    ⒈掌握Oracle的基本操作
    ⒉掌握在unix/Linux系统下安装Oracle数据库
    二、网络基础知识
    ⒈熟悉TCP/IP、HTTP、UDP协议
    ⒉掌握常用的网络命令
    ⒊抓包工具的熟悉与学习
    三、测试理论
    ⒈软件及其开发过程
    软件测试的基本概念与方法
    ⒊质量保证与策略
    ⒋测试依据与规范
    ⒌单元测试
    ⒍集成测试与系统测试
    ⒏基于应用服务器的测试
    测试计划的制定、用例的设计与执行、缺陷的跟踪
    四、模拟项目练习
    ⒈理解需求,设计测试用例、测试用例评审
    ⒉测试执行
    ⒊提单规范
    有关模拟项目的需求、用例模板、测试版本。
    2、
    3.返回顶部
     
    4.返回顶部
     
    5.返回顶部
    1、
    2、
     
    6.返回顶部
     
    warn 作者:ylbtech
    出处:http://ylbtech.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    转载于:https://www.cnblogs.com/storebook/p/11512467.html

    展开全文
  • PAGE PAGE 1 软件测试工程师最新岗位职责 软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试对测试方案可能出现的问题进行分析和评估以下是小编为大家精心整理的软件测试工程师岗位职责欢迎大家...
  • 软件测试工程师面试指导软件测试工程师面试指导软件测试工程师面试指导
  • 中高级软件测试工程师的岗位职责精选 中高级软件测试工程师需要负责产品的集成测试与系统测试,并对产品功能、性能、用户体验及其他方面的测试负责。下面是小编整理的中高级软件测试工程师的岗位职责精选。 中高级...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,113
精华内容 4,045
关键字:

软件测试工程师