发布新日志

  • 软件评测师05-06试题以及答案

    2008-05-10 15:11:01

        希望下面的试题,能够给准备软考认证的朋友们提供方便!

        不过,个人认为,我们应该更多的去关注过程,不要太在意结果,在准备的过程中,你回发现你的测试理论在提高,同时准备以后,这些知识对自己的测试工作也有指导性的帮助!

    2006年上半年软件评测师上午试题

      在计算机系统中,存取速度最快的是___(1)___
      (1)ACPU内部寄存器        B.计算机的高速缓存Cache
        C.计算机的主存        D.大容量磁盘

      模块的耦合度描述了___(2)___
      (2)A.模块内各种元素结合的程度  B.模块内多个功能之间的接口
        C.模块之间公共数据的数量   D.模块之间相互关联的程度

      若某计算机系统是由500个元器件构成的串联系统,且每个元器件的失效率均为10-7/H,在不考虑其它因素对可靠性的影响时,该计算机系统的平均故障间隔时间为___(3)___小时。
      (3)A2×1O4     B5×1O4    C2×1O5    D5×105

      内聚是一种指标,表示一个模块___(4)___
      (4)A.代码优化的程度         B.代码功能的集中程度
        C.完成任务时及时程度       D.为了与其他模块连接所要完成的工作量

      为了解决进程间的同步和互斥问题,通常来用一种称为___(5)___机制的方法。若系统中有5个进程共享若干个资源R,每个进程都需要4个资源R,那么使系统不发生死锁的资源R的最少数目是___(6)___ 
      (5)A.调度     B.信号量    C.分派     D.通讯
      (6)A20      B18      C16      D15

      UNIX操作系统中,把输入/输出设备看作是___(7)___
      (7)A.普通文件   B.目录文件   C.索引文件   D.特殊文件

      某磁盘盘组共有10个盘面,每个盘面上有100个磁道,每个磁道有16个扇区,假定分配以扇区为单位。若使用位示图管理磁盘空间,则位示图需要占用___(8)___字节空间。
      (8)A16000     B1000     C2000     D1600

      ●___(9)___描述数据的局部逻辑视图,是数据库用户的数据视图,它是与某一应用有关的数据逻辑表示。
      (9)A.模式     B.逻辑模式   C.外模式    D.内模式

      某数据库中有员工关系E、产品关系P、仓库关系W和库存关系I,其中:
      员工关系E(employeelDnamedepartment)中的属性为:员工编号,姓名,部门;
      产品关系P(productIDnamemodelsizecolor)中的属性为:产品编号,产品名称,型号,尺寸,颜色;
      仓库关系W(warehouselDnameaddressemployeeID)中的属性为:仓库编号,仓库名称,地址,员工编号;
      库存关系I(warehouseIDproductIDquantity)中的属性为仓库编号,产品编号和产品数量。
      a.若要求仓库关系的负责人引用员工关系的员工编号,员工关系E的员工编号、仓库关系W的仓库编号和产品关系P的产品编号不能为空且惟一标识一个记录,并且仓库的地址不能为空,则依次要满足的完整性约束是___(10)___
      b.可得到每种产品伪名称和该产品的总库存量的查询语句为;
       SELELCT nameSUM(quantity)
       FROM P,I
       WHERE___(11)___
      (10)A.实体完整性、参照完整性、用户定义完整性
        B.参照完整性、实体完整性、用户定义完整性
        C.用户定义完整性、实体完整性、参照完整性
        D.实体完整性、用户定义完整性、参照完整性
      (11)AP.productID=I.productlD
        BP.productID=I.product ID ORDER BY name
        CP.productID=Iproduct ID GROUP BY name
        DP.productID=Iproduct ID GROUP BY namequantity

      与多模光纤相比较,单模光纤具有___(12)___等特点。
      (12)A. 较高的传输率、较长的传输距离、较高的成本
        B. 较低的传输率、较短的传输距离、较高的成本
        C. 较高的传输率、较短的传输距离、较低的成本
        D. 较低的传输率、较长的传输距离、较低的成本

      ● “<title style="italic">science</title>”是一个XML 元素的定义,其中元素标记的属性值是___(13)___
      (13)Atitle     Bstyle    Citalic    Dscience

      某校园网用户无法访问外部站点210.102.58.74,管理人员在windows 操作系统下可以使用___(14)___判断故障发生在校园网内还是校园网外。
      (14)A. ping 210.102.58.74        B. tracert 210.102.58.74
        C. netstat 210.102.58.74      D. arp 210.102.58.74

      ● SNMP 所采用的传输层协议是___(15)___
      (15)A. UDP      B. ICMP      C. TCP      D. IP

      渐增式开发方法有利于___(16)___
      (16)A.获取软件需求 B.快速开发软件  C.大型团队开发 D.商业软件开发

      高级程序设计语言中用于描述程序中的运算步骤、控制结构及数据传输的是___(17)___
      (17)A.语句     B.语义      C.语用     D.语法

      ● ___(18)___是面向对象程序设计语言不同于其它语言的主要特点,是否建立了丰富的___(19)___是衡量一个面向对象程序设计语言成熟与否的重要标志之一。
      (18)A. 继承性    B. 消息传递   C. 多态性    D. 静态联编
      (19)A. 函数库    B. 类库     C. 类型库    D. 方法库

      某市标准化行政主管部门制定并发布的工业产品的安全、卫生要求的标准,在其行政区域内是___(20)___
      (20)A.强制性标准  B.推荐性标准  C.自愿性标准  D.指导性标准

      王某购买了一个海之久牌活动硬盘,而且该活动硬盘还包含有一项实用新型专利,那么,王某享有___21___
      (21)A海之久商标专用权      B.该盘的所有权
        C.该盘的实用新型专利权      D.前三项权利之全部

      甲企业委托软件公司程序员王某开发管理软件,并与王某签订了书面协议,但协议中未对软件著作权归属做出明确的约定,其软件著作权属于___(22)___
      (22)A.甲企业    B.软件公司    C.程序员王某  D.软件公司和甲企业

      依据著作权法,计算机软件著作权保护的对象是指___(23)___
      (23)A. 计算机硬件  B. 计算机软件  C. 计算机硬件和软件 D. 计算机文档

      相对于DES算法而言,RSA算法的___(24)___,因此,RSA___(25)___
      (24)A.加密密钥和解密密钥是不相同的  B.加密密钥和解密密钥是相同的
        C.加密速度比DES要高        D.解密速度比DES要高
      (25)A.更适用于对文件加密       B.保密性不如DES
        C.可用于对不同长度的消息生成消息摘要  D.可以用于数字签名

      C++语言中,已知3个类OPQ,类O中定义了一个私有方法F1、一个公有方法F2和一个受保护的方法F3:类P和类Q是类O的派生类,其继承方式如下所示:
       class P : protected O {…};
       class Q : public O {…};
      关于方法F1的描述中正确的是___(26)___;关于方法F2韵描述中正确的是___(27)___;关于方法F3的描述中正确的是___(28)___
      (26)A.方法F1无法被访问         B.只有在类O内才能访问方法F1
        C.只有在类P内才能访问方法F1     D.只有在类Q内才能访问方法F1
      (27)A.类OPQ的对象都可以访问方法F2  B.类PQ的对象都可以访问方法F2
        C.类0Q的对象都可以访问方法F2    D.只有在类P内才能访问方法F2
      (28)A.类0PQ的对象都可以访问方法F3  B.类0PQ的对象都不可以访问方法F3
        C.类0Q的对象都可以访问方法F3    D.类PQ的对象都可以访问方法F3

      正式的技术评审FTR(Formal Technical Review)是软件工程师组织的软件质量保证活动,下面关于FTR指导原则中不正确的是___(29)___
      (29)A.评审产品,而不是评审生产者的能力
        B.要有严格的评审计划,并遵守日程安排
        C.对评审中出现的问题要充分讨论,以求彻底解决
        D.限制参与者人数,并要求评审会之前做好准备

      在绘制数据流图时,要遵循的一个原则是父图与子图的平衡,所谓平衡是指___(30)___
      (30)A.父图和子图都不得改变数据流的性质
        B.子图不改变父图数据流的致性
        C.父图的输入/输出数据流与子图的输入/输出数据流一致
        D.子图的输出数据流完全由父图的输入数据流确定

      某系统的顶层DFD图如下,其中,加工1细化后的DFD图是___(31)___


      (31)

      下图中的程序由ABCDE 5个模块组成,下表中描述了这些模块之间的接口,每一个接口有一个编号。此外,模块ADE都要引用一个专用数据区。那么AE之间耦合关系是___(32)___

    编号

    参数

    返回值

    1

    数据项

    数据项

    2

    数据项

    数据项

    3

    功能码

    4

    列表

      (32)A.公共耦合    B.数据耦合    C.内容耦合    D.无耦合

      C++语言中,若类C中定义了一个方法int f(int aint b),那么方法___(33)___不能与该方法同时存在于类C中。
      (33)Aint f(int xint y)        Bint f(float aint b)
        Cfloat f(int xfloat y)      Dint f(int xfloat y)

      在面向对象软件开发过程中,采用设计模式___(34)___
      (34)A.允许在非面向对象程序设计语言中使用面向对象的概念
        B.以复用成功的设计和体系结构
        C.以减少设计过程创建的类的个数
        D.以保证程序的运行速度达到最优值

      两个小组独立地测试同一个程序,第一组发现25个错误,第二组发现30个错误,在两个小组发现的错误中有15个是共同的,那么可以估计程序中的错误总数是___(35)___个。
      (35)A25       B30      C50     D60

      对于软件的β测试,下列描述正确的是___(36)___
      (36)Aβ测试就是在软件公司内部展开的测试,由公司专业的测试人员执行的测试
        Bβ测试就是在软件公司内部展开的测试,由公司的非专业测试人员执行的测试
        Cβ测试就是在软件公司外部展开的测试,由专业的测试人员执行的测试
        Dβ测试就是在软件公司外部展开的测试,可以由非专业的测试人员执行的测试

      ●___(37)___可以作为软件测试结束的标志。
      (37)A.使用了特定的测试用例      B.错误强度曲线下降到预定的水平
        C.查出了预定数目的错误      D.按照测试计划中所规定的时间进行了测试

      下面--是关于软件评测师工作原则的描述,正确的判断是___(38)___
       
    对于开发人员提交的程序必须进行完全的测试,以确保程序的质量
       
    必须合理安排测试任务,做好周密的测试计划,平均分配软件各个模块的测试时间
       
    在测试之前需要与开发人员进行详细的交流,明确开发人员的程序设计思路,并以此为依据开展软件测试工作,最大程度地发现程序中与其设计思路不一致的错误
       
    要对自己发现的问题负责,确保每一个问题都能被开发人员理解和修改。
      (38)A
         B     C    D.无

      在软件生命周期的不同阶段,需要实施不同类型的测试工作,单元测试是对程序设计进行验证,其中___(39)___不是单元测试的主要内容。在进行单元测试过程中,通常测试工程师都需要借助___(40)___来代替所测模块调用的子模块:在单元测试的基础上,需要将所有模块按照概要设计和详细设计说明书的要求进行组装,模块组装成系统的方式有两种,分别是___(41)___
      (39)A.模块接口测试  B.有效性测试  C.路径测试    D.边界测试
      (40)A.桩模块     B.驱动模块   C.桩模块和驱动模块  D.存根模块和驱动模块
      (41)A.一次性组装和增殖性组装      B.自顶向下组装和启底向上组装
        C.单个模块组装和混合模块组装    D.接口组装和功能组装

      黑盒测试是通过软件的外部表现来发现软件缺陷和错误的测试方法,具体地说,黑盒测试用例设计技术包括___(42)___等。现有一个处理单价为1元的盒装饮料的自动售货机软件,若投入1元币,按下可乐雪碧红茶按钮,相应的饮料就送出来,若投入的是2元币,在送出饮料的同时退还1元币。下表是用因果图法设计的部分测试用例,l表示执行该动作,0表示不执行该动作,___(43)___的各位数据,从左到右分别填入空格表中的(1)—(8)是正确的。

    用例序号

    1

    2

    3

    4

    5


    投入1元币

    1

    1

    0

    0

    0

    投入2元币

    0

    0

    1

    0

    0

    可乐按钮

    1

    0

    0

    0

    0

    雪碧按钮

    0

    0

    0

    1

    0

    红茶按钮

    0

    0

    1

    0

    1


    退还1元币

    (1)

    0

    (5)

    (7)

    0

    送出可乐饮料

    (2)

    0

    0

    0

    0

    送出雪碧饮料

    (3)

    0

    0

    (8)

    0

    送出红茶饮料

    (4)

    0

    (6)

    0

    0

      (42)A.等价类划分法、因果图法、边界值分析法、错误推测法、判定表驱动法
        B.等价类划分法、因果图法、边界值分析法、正交试验法、符号法
        C.等价类划分法、因果图法、边界值分析法、功能图法、基本路径法
        D.等价类划分法、因果图法、边界值分析法、静态质量度量法、场景法
      (43)A01001100   B01101100   C01001010   D11001100

      多条件覆盖是一种逻辑覆盖,它的含义是设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次,满足多条件覆盖级别的测试用例也是满足___(44)___级别的:针对布尔表达式
    A&&(B||C)
    执行逻辑覆盖测试,测试用例至少需要___(45)___种组合才能满足多条件覆盖的要求。
      (44)A.语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖

  • 软件评测师考试大纲

    2008-04-15 21:02:15

    软件评测师考试大纲
    一、考试说明
      1. 考试要求:
      (1)熟悉计算机基础知识;
      (2)熟悉操作系统、数据库、中间件、程序设计语言基础知识;
      (3)熟悉计算机网络基础知识;
      (4)熟悉软件工程知识,理解软件开发方法及过程;
      (5)熟悉软件质量及软件质量管理基础知识;
      (6)熟悉软件测试标准;
      (7)掌握软件测试技术及方法;
      (8)掌握软件测试项目管理知识;
      (9)掌握C语言以及C++Java语言程序设计技术;
      (10)了解信息化及信息安全基础知识;
      (11)熟悉知识产权相关法律、法规;
      (12)正确阅读并理解相关领域的英文资料。
      2. 通过本考试的合格人员能在掌握软件工程与软件测试知识的基础上,运用软件测试管理方法、软件测试策略、软件测试技术,独立承担软件测试项目;具有工程师的实际工作能力和业务水平。
      3. 本考试设置的科目包括:
      (1)软件工程与软件测试基础知识,考试时间为150分钟,笔试,选择题;
      (2)软件测试应用技术,考试时间为150分钟,笔试,问答题。
    二、考试范围
      考试科目1:软件工程与软件测试基础知识
      1.计算机系统基础知识
       1.1 计算机系统构成及硬件基础知识
        计算机系统的构成
        处理机
        基本输入输出设备
        存储系统
       1.2 操作系统基础知识
        操作系统的中断控制、进程管理、线程管理
        处理机管理、存储管理、设备管理、文件管理、作业管理
        网络操作系统和嵌入式操作系统基础知识
        操作系统的配置
       1.3 数据库基础知识
        数据库基本原理
        数据库管理系统的功能和特征
        数据库语言与编程
       1.4 中间件基础知识
       1.5 计算机网络基础知识
        网络分类、体系结构与网络协议
        常用网络设备
        ●Internet基础知识及其应用
        网络管理
       1.6 程序设计语言知识
        汇编、编译、解释系统的基础知识
        程序设计语言的基本成分(数据、运算、控制和传输、过程(函数)调用)
        面向对象程序设计
        ●C语言以及C++(或Java)语言程序设计基础知识
      2.标准化基础知识
        标准化的概念(标准化的意义、标准化的发展、标准化机构)
        标准的层次(国际标准、国家标准、行业标准、企业标准)
        标准的类别及生命周期
      3.信息安全知识
        信息安全基本概念
        计算机病毒及防范
        网络入侵手段及防范
        加密与解密机制
      4.信息化基础知识
        信息化相关概念
        与知识产权相关的法律、法规
        信息网络系统、信息应用系统、信息资源系统基础知识
      5.软件工程知识
       5.1 软件工程基础
        软件工程概念
        需求分析
        软件系统设计
        软件组件设计
        软件编码
        软件测试
        软件维护
       5.2 软件开发方法及过程
        结构化开发方法
        面向对象开发方法
        瀑布模型
        快速原型模型
        螺旋模型
       5.3 软件质量管理
        软件质量及软件质量管理概念
        软件质量管理体系
        软件质量管理的目标、内容、方法和技术
       5.4 软件过程管理
        软件过程管理概念
        软件过程改进
        软件能力成熟度模型
       5.5 软件配置管理
        软件配置管理的意义
        软件配置管理的过程、方法和技术
       5.6 软件开发风险基础知识
        风险管理
        风险防范及应对
       5.7 软件工程有关的标准
        软件工程术语
        计算机软件开发规范
        计算机软件产品开发文件编制指南
        计算机软件需求规范说明编制指南
        计算机软件测试文件编制规范
        计算机软件配置管理计划规范
        计算机软件质量保证计划规范
        数据流图、程序流程图、系统流程图、程序网络图和系统资源图的文件编制符号及约定
      6.软件评测师职业素质要求
        软件评测师职业特点与岗位职责
        软件评测师行为准则与职业道德要求
        软件评测师的能力要求
      7.软件评测知识
       7.1 软件测试基本概念
        软件质量与软件测试
        软件测试定义
        软件测试目的
        软件测试原则
        软件测试对象
       7.2 软件测试过程模型
        ●V模型
        ●W模型
        ●H模型
        测试模型的使用
       7.3 软件测试类型
        单元测试、集成测试、系统测试
        确认测试、验收测试
        开发方测试、用户测试、第三方测试
        动态测试、静态测试
        白盒测试、黑盒测试、灰盒测试
       7.4 软件问题分类
        软件错误
        软件缺陷
        软件故障
        软件失效
       7.5 测试标准
        7.5.1 GB/T 16260.1—2003 软件工程 产品质量 第1部分:质量模型
        7.5.2 GB/T 18905.1—2002 软件工程 产品评价 第1部分:概述
        7.5.3 GB/T 18905.5—2002 软件工程 产品评价 第5部分:评价者用的过程
      8.软件评测现状与发展
        国内外现状
        软件评测发展趋势
      9.专业英语
        正确阅读并理解相关领域的英文资料
     考试科目2:软件测试应用技术
      1.软件生命周期测试策略
       1.1 设计阶段的评审
        需求评审
        设计评审
        测试计划与设计
       1.2 开发与运行阶段的测试
        单元测试
        集成测试
        系统(确认)测试
        验收测试
      2.测试用例设计方法
       2.1 白盒测试设计
        白盒测试基本技术
        白盒测试方法
       2.2 黑盒测试用例设计
        测试用例设计方法
        测试用例的编写
       2.3 面向对象测试用例设计
        测试方法选择的策略
        黑盒测试方法选择策略
        白盒测试方法选择策略
        面向对象软件的测试策略
      3.软件测试技术与应用
       3.1 软件自动化测试
        软件自动化测试基本概念
        选择自动化测试工具
        功能自动化测试
        负载压力自动化测试
       3.2 面向对象软件的测试
        面向对象测试模型
        面向对象分析的测试
        面向对象设计的测试
        面向对象编程的测试
        面向对象的单元测试
        面向对象的集成测试
        面向对象的系统测试
       3.3 负载压力测试
        负载压力测试基本概念
        负载压力测试解决方案
        负载压力测试指标分析
        负载压力测试实施
       3.4 Web应用测试
        ●Web应用的测试策略
        ●Web应用设计测试
        ●Web应用开发测试
        ●Web应用运行测试
       3.5 网络测试
        网络系统全生命周期测试策略
        网络仿真技术
        网络性能测试
        网络应用测试
       3.6 安全测试
        测试内容
        测试策略
        测试方法
       3.7 兼容性测试
        硬件兼容性测试
        软件兼容性测试
        数据兼容性测试
        新旧系统数据迁移测试
        平台软件测试
       3.8 易用性测试
        功能易用性测试
        用户界面测试
       3.9 文档测试
        文档测试的范围
        用户文档的内容
        用户文档测试的要点
        用户手册的测试
        在线帮助的测试
      4.测试项目管理
        测试过程的特性与要求
        软件测试与配置管理
        测试的组织与人员
        测试文档
        软件测试风险分析
        软件测试的成本管理
    三、题型举例
     (一)选择题
        下面的哪一项测试步骤中需要进行局部数据结构测试: (1)
        (1A.单元测试 B. 集成测试 C. 确认测试 D. 系统测试
        软件的六大质量特性包括: (2)
        (2A.功能性、可靠性、可用性、效率、可维护、可移植
           B.功能性、可靠性、可用性、效率、稳定性、可移植
           C.功能性、可靠性、可扩展性、效率、稳定性、可移植
           D.功能性、可靠性、兼容性、效率、稳定性、可移植
     (二)问答题
      1.白盒测试方法中的代码检查法需要重点考虑代码的执行效率,阅读以下两个循环,回答问题1和问题2
      循环1
      for (i=0;i<n;i++)
      {
       if(condition)
        DoSomething();
       else
        DoOtherthing();
      }
      循环2
      if(condition)
      {
       for (i=0;i<n;i++)
        DoSomething()
      }
      else
      {
       for (i=0;i<n;i++)
        DoOtherthing();
      }
      问题1:循环1的优点和缺点。
      问题2:循环2的优点和缺点。
      2.请简述软件系统负载压力测试的主要目的。

  • 测试工程师面试题(3)

    2008-03-19 20:00:01

    1.白箱测试和黑箱测试是什么?什么是回归测试?
    回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。回归测试包括两部分:函数本身的测试、其他代码的测试。

    2.单元测试、集成测试、系统测试的侧重点是什么?
        单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
    集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求,组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。
    系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。

    3.设计用例的方法、依据有那些?
        白盒测试:逻辑覆盖法,主要包括语句覆盖,判断覆盖,条件覆盖,判断-条件覆盖,路径覆盖
    黑盒测试:等价划分类,边界值分析,错误推测法。

    5.集成测试通常都有那些策略?
    1、在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;
    2、各个子功能组合起来,能否达到预期要求的父功能;
    3、一个模块的功能是否会对另一个模块的功能产生不利的影响;
    4、全局数据结构是否有问题;
    5、单个模块的误差积累起来,是否会放大,从而达到不可接受的程度。

    7.一个缺陷测试报告的组成
    缺陷的标题,缺陷的基本信息,复现缺陷的操作步骤,缺陷的实际结果描述,期望的正确结果描述,注释文字和截取的缺陷图象。

    8.基于WEB信息管理系统测试时应考虑的因素有哪些?

    9.软件本地化测试比功能测试都有哪些方面需要注意?
    软件本地化测试的目的:
    软件本地化测试的测试策略:1.本地化软件要在各种本地化操作系统上安装并测试。2.源语言软件安装在另一台相同源语言操作系统上,作为对比测试。3.重点测试因本地化引起的软件的功能和软件界面的错误。4.测试本地化软件的翻译质量。5.手工测试和自动测试相结合。

    11.需求测试注意事项有哪些?
    一个良好的需求应当具有一下特点:
    完整性:每一项需求都必须将所要实现的功能描述清楚,以使开发人员获得设计和实现这些功能所需的所有必要信息。
    正确性:每一项需求都必须准确地陈述其要开发的功能。
    一致性:一致性是指与其它软件需求或高层(系统,业务)需求不相矛盾。
    可行性:每一项需求都必须是在已知系统和环境的权能和限制范围内可以实施的。
    无二义性:对所有需求说明的读者都只能有一个明确统一的解释,由于自然语言极易导致二义性,所以尽量把每项需求用简洁明了的用户性的语言表达出来。
    健壮性:需求的说明中是否对可能出现的异常进行了分析,并且对这些异常进行了容错处理。
    必要性:“必要性”可以理解为每项需求都是用来授权你编写文档的“根源”。要使每项需求都能回溯至某项客户的输入,如Use Case或别的来源。
    可测试性:每项需求都能通过设计测试用例或其它的验证方法来进行测试。
    可修改性:每项需求只应在S R S 中出现一次。这样更改时易于保持一致性。另外,使用目录表、索引和相互参照列表方法将使软件需求规格说明书更容易修改。
    可跟踪性:应能在每项软件需求与它的根源和设计元素、源代码、测试用例之间建立起链接链,这种可跟踪性要求每项需求以一种结构化的,粒度好(f i n e - g r a i n e d )的方式编写并单独标明,而不是大段大段的叙述。

    13.测试分析测试用例注意(事项)?

  • 测试工程师面试题(2)

    2008-03-19 19:58:44

    2008-03-19

    1.输入正确的地址连接相关系统并进入登陆界面.
    2.在登陆界面中输入正确的信息(用户名密码)进入系统.
    3.如果输入错误系统给出相关提示(也不能进入系统)
    4.如果连续3次输入都有错误,退出系统登陆界面.

      请输入用户名:
      请输入密  码:
    请设计测试用例.

  • 测试工程师面试题(1)

    2008-03-19 19:57:28

    2008-03-19

       软件测试的目的?测试的目的是想以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患带来的商业风险。Beta 测试:在客户场地,由客户进行的对产品预发布版本的测试。软件验收测试合格通过准则:1软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。2所有测试项没有残余的一级二级三级的错误。3立项审批表、需求分析文档、设计文档和编码实现一致。4验收测试工件齐全(测试计划,测试用例,测试日志,测试通知单,测试分析报告)软件验收测试包括正式验收测试、alpha测试、beta测试三种测试。系统测试的策略:功能测试,性能测试,外部接口测试,界面测试,强度测试,冗余测试,可靠性测试,恢复测试等设计系统测试计划需要参考的项目文档有软件测试计划、软件需求工件、和迭代计划。利用因果图导出测试用例需要经过的一般步骤
    1.分析程序规格说明的描述中,哪些是原因,哪些是结果。
    2.分析程序规格说明的描述中语义的内容,并将其表示成连接各个原因与各个结果的因果图
    3.在因果图上使用若干个特殊的符号标明特定的约束条件
    4.把因果图转换成判定表
    5.把判定表中每一列表示的情况写成测试用例阶段评审与同行评审的区别同行评审目的:发现小规模工作产品的错误,只要是找错误;
    阶段评审目的:评审模块阶段作品的正确性可行性及完整性
    同行评审人数:3-7人人员必须经过同行评审会议的培训,由SQA指导
    阶段评审人数:5人左右评审人必须是专家具有系统评审资格
    同行评审内容:内容小一般文档 <   40页, 代码 < 500行
    阶段评审内容: 内容多,主要看重点
    同行评审时间:一小部分工作产品完成
    阶段评审时间: 通常是设置在关键路径的时间点上!什么是软件测试?使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试是为了发现错误而执行程序的过程。简述集成测试的过程根据IEEE标准 集成测试划分为4个阶段:计划阶段,设计阶段,实现阶段,执行阶段(实施阶段)
    计划阶段
    1)时间安排        概要设计完成评审后大约一个星期
    2)输入            需求规格说明书 概要设计文档   产品开发计划路标
    3)入口条件        概要设计文档已经通过评审
    4)活动步骤       1.定被测试对象和测试范围 2.评估集成测试被测试对象的数量及难度,即工作量 3.确定角色分工和作任务4.标识出测试各阶段的时间,任务,约束等条件5.考虑一定的风险分析及应急计划6.考虑和准备集成测试需要的测试工具,测试仪器,环境等资源7.考虑外部技术支援的力度和深度,以及相关培训安排8.定义测试完成标准
    5)输出            集成测试计划
    6)出口条件        集成测试计划通过概要设计阶段基线评审
    设计阶段
    1)时间安排 详细设计阶段开始
    2)输入   需求规格说明书   概要设计   集成测试计划
    3)入口条件   概要设计基线通过评审
    4)活动步骤   1.被测对象结构分析 2.集成测试模块分析3.集成测试接口分析4.集成测试策略分析
        5.集成测试工具分析6.集成测试环境分析7.集成测试工作量估计和安排。
    5)输出   集成测试设计(方案)
    6.出口条件   集成测试设计通过详细设计基线评审。
    实现阶段
    1)时间安排 在编码阶段开始后进行
    2)输入 需求规格说明书   概要设计   集成测试计划 集成测试设计
    3)入口条件 详细设计阶段
    4)活动步骤   集成测试用例设计 集成测试程设计 集成测试代码设计(如果需要)   集成测试脚本(如果需要)   集成测试工具(如果需要)
    5)输出   集成测试用例 集成测试规程 集成测试代码 集成测试脚本 集成测试工具
    6)出口条件   测试用例和测试规程通过编码阶段基线评审
    执行阶段
    1)时间安排 单元测试已经完成后就可以开始执行集成测试了
    2)输入      需求规格说明书 概要设计   集成测试计划   集成高度设计   集成测试例 集成测试规程   集成测试代码(如果有)   集成测试脚本 集成测试工具 详细设计   代码   单元测试报告 
    3)入口条件 单元测试阶段已经通过基线化评审
    4)活动步 骤 执行集成测试用例 回归集成测试用例   撰写集成测试报告 
    5)输出   集成测试报告
    6)出口条件   集成测试报告通过集成测试阶段基线评审文档测试?文档审核测试目前越来越引起人们的重视,软件质量不是检查出来的,而是融进软件开发中来。文档审核测试主要包括需求文档测试,设计文档测试,为前置软件测试测试中的一部分。
    需求文档测试:主要测试需求中是否存在逻辑矛盾以及需求在技术上是否可以实现;
    设计文档测试 :测试设计是否符合全部需求以及设计是否合理。白盒测试有哪几种方法?白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。

  • 华为软件测试工程师面试编程题

    2008-03-19 19:36:13

    华为测试工程师的面试题 
     

     1:请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图?
    OSI的七层网络结构图,和TCP/IP的五层结构图
    OSI
    OSI是Open System Interconnect的缩写,意为开放式系统互联。在OSI出现之前,计算机网络中存在众多的体系结构,其中以IBM公司的SNA(系统网络体系结构)和DEC公司的DNA(Digital Network Architecture)数字网络体系结构最为著名。为了解决不同体系结构的网络的互联问题,国际标准化组织ISO(注意不要与OSI搞混))于1981年制定了开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM)。这个模型把网络通信的工作分为7层,它们由低到高分别是物理层(Physical Layer),数据链路层(Data Link Layer),网络层(Network Layer),传输层(Transport Layer),会话层(Session Layer),表示层(Presen tation Layer)和应用层(Application Layer)。第一层到第三层属于OSI参考模型的低三层,负责创建网络通信连接的链路;第四层到第七层为OSI参考模型的高四层,具体负责端到端的数据通信。每层完成一定的功能,每层都直接为其上层提供服务,并且所有层次都互相支持,而网络通信则可以自上而下(在发送端)或者自下而上(在接收端)双向进行。当然并不是每一通信都需要经过OSI的全部七层,有的甚至只需要双方对应的某一层即可。物理接口之间的转接,以及中继器与中继器之间的连接就只需在物理层中进行即可;而路由器与路由器之间的连接则只需经过网络层以下的三层即可。总的来说,双方的通信是在对等层次上进行的,不能在不对称层次上进行通信。

    OSI参考模型的各个层次的划分遵循下列原则:

    1、同一层中的各网络节点都有相同的层次结构,具有同样的功能。

    2、同一节点内相邻层之间通过接口(可以是逻辑接口)进行通信。

    3、七层结构中的每一层使用下一层提供的服务,并且向其上层提供服务。

    4、不同节点的同等层按照协议实现对等层之间的通信。

    第一层:物理层(PhysicalLayer),规定通信设备的机械的、电气的、功能的和过程的特性,用以建立、维护和拆除物理链路连接。具体地讲,机械特性规定了网络连接时所需接插件的规格尺寸、引脚数量和排列情况等;电气特性规定了在物理连接上传输bit流时线路上信号电平的大小、阻抗匹配、传输速率距离限制等;功能特性是指对各个信号先分配确切的信号含义,即定义了DTE和DCE之间各个线路的功能;规程特性定义了利用信号线进行bit流传输的一组操作规程,是指在物理连接的建立、维护、交换信息是,DTE和DCE双放在各电路上的动作系列。

    在这一层,数据的单位称为比特(bit)。

    属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。

    第二层:数据链路层(DataLinkLayer):在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列。  

    数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。

    在这一层,数据的单位称为帧(frame)。

    数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。

    第三层是网络层

    在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。

    如果你在谈论一个IP地址,那么你是在处理第3层的问题,这是“数据包”问题,而不是第2层的“帧”。IP是第3层问题的一部分,此外还有一些路由协议和地址解析协议(ARP)。有关路由的一切事情都在第3层处理。地址解析和路由是3层的重要目的。网络层还可以实现拥塞控制、网际互连等功能。

    在这一层,数据的单位称为数据包(packet)。

    网络层协议的代表包括:IP、IPX、RIP、OSPF等。

    第四层是处理信息的传输层。第4层的数据单元也称作数据包(packets)。但是,当你谈论TCP等具体的协议时又有特殊的叫法,TCP的数据单元称为段(segments)而UDP协议的数据单元称为“数据报(datagrams)”。这个层负责获取全部信息,因此,它必须跟踪数据单元碎片、乱序到达的数据包和其它在传输过程中可能发生的危险。第4层为上层提供端到端(最终用户到最终用户)的透明的、可靠的数据传输服务。所为透明的传输是指在通信过程中传输层对上层屏蔽了通信传输系统的具体细节。

    传输层协议的代表包括:TCP、UDP、SPX等。

    第五层是会话层

    这一层也可以称为会晤层或对话层,在会话层及以上的高层次中,数据传送的单位不再另外命名,统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。

    第六层是表示层

    这一层主要解决拥护信息的语法表示问题。它将欲交换的数据从适合于某一用户的抽象语法,转换为适合于OSI系统内部使用的传送语法。即提供格式化的表示和转换数据服务。数据的压缩和解压缩, 加密和解密等工作都由表示层负责。

    第七层应用层,应用层为操作系统或网络应用程序提供访问网络服务的接口。

    应用层协议的代表包括:Telnet、FTP、HTTP、SNMP等。

      通过 OSI 层,信息可以从一台计算机的软件应用程序传输到另一台的应用程序上。例如,计算机 A 上的应用程序要将信息发送到计算机 B 的应用程序,则计算机 A 中的应用程序需要将信息先发送到其应用层(第七层),然后此层将信息发送到表示层(第六层),表示层将数据转送到会话层(第五层),如此继续,直至物理层(第一层)。在物理层,数据被放置在物理网络媒介中并被发送至计算机 B 。计算机 B 的物理层接收来自物理媒介的数据,然后将信息向上发送至数据链路层(第二层),数据链路层再转送给网络层,依次继续直到信息到达计算机 B 的应用层。最后,计算机 B 的应用层再将信息传送给应用程序接收端,从而完成通信过程。下面图示说明了这一过程。

      OSI 的七层运用各种各样的控制信息来和其他计算机系统的对应层进行通信。这些控制信息包含特殊的请求和说明,它们在对应的 OSI 层间进行交换。每一层数据的头和尾是两个携带控制信息的基本形式。

      对于从上一层传送下来的数据,附加在前面的控制信息称为头,附加在后面的控制信息称为尾。然而,在对来自上一层数据增加协议头和协议尾,对一个 OSI 层来说并不是必需的。

      当数据在各层间传送时,每一层都可以在数据上增加头和尾,而这些数据已经包含了上一层增加的头和尾。协议头包含了有关层与层间的通信信息。头、尾以及数据是相关联的概念,它们取决于分析信息单元的协议层。例如,传输层头包含了只有传输层可以看到的信息,传输层下面的其他层只将此头作为数据的一部分传递。对于网络层,一个信息单元由第三层的头和数据组成。对于数据链路层,经网络层向下传递的所有信息即第三层头和数据都被看作是数据。换句话说,在给定的某一 OSI 层,信息单元的数据部分包含来自于所有上层的头和尾以及数据,这称之为封装。

      例如,如果计算机 A 要将应用程序中的某数据发送至计算机 B ,数据首先传送至应用层。 计算机 A 的应用层通过在数据上添加协议头来和计算机 B 的应用层通信。所形成的信息单元包含协议头、数据、可能还有协议尾,被发送至表示层,表示层再添加为计算机 B 的表示层所理解的控制信息的协议头。信息单元的大小随着每一层协议头和协议尾的添加而增加,这些协议头和协议尾包含了计算机 B 的对应层要使用的控制信息。在物理层,整个信息单元通过网络介质传输。

      计算机 B 中的物理层收到信息单元并将其传送至数据链路层;然后 B 中的数据链路层读取计算机 A 的数据链路层添加的协议头中的控制信息;然后去除协议头和协议尾,剩余部分被传送至网络层。每一层执行相同的动作:从对应层读取协议头和协议尾,并去除,再将剩余信息发送至上一层。应用层执行完这些动作后,数据就被传送至计算机 B 中的应用程序,这些数据和计算机 A 的应用程序所发送的完全相同 。

      一个 OSI 层与另一层之间的通信是利用第二层提供的服务完成的。相邻层提供的服务帮助一 OSI 层与另一计算机系统的对应层进行通信。一个 OSI 模型的特定层通常是与另外三个 OSI 层联系:与之直接相邻的上一层和下一层,还有目标联网计算机系统的对应层。例如,计算机 A 的数据链路层应与其网络层,物理层以及计算机 B 的数据链路层进行通信
    
    2:请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用? TCP与UDP呢?
    
    3:请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实现的?
    
    4:请问C++的类和C里面的struct有什么区别?
    
    5:请讲一讲析构函数和虚函数的用法和作用?
    
    6:全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的?
    
    7:一些寄存器的题目,主要是寻址和内存管理等一些知识。
    
    8:8086是多少尉的系统?在数据总线上是怎么实现的?
    
    軟件測試的各階段!

    面试就是跟你聊聊工作,看经验了
    笔试,看看数据结构,二叉树,排序,什么的

    可能会考多线程

  • 测试人员的职业发展方向

    2007-12-04 19:32:06

    软件测试职业发展三步曲之一——软件测试职业发展方向       作者:天涯小楼    
    上一篇 下一篇
    发表时间:2006-10-08 16:46:18   

     

     

       天地玄黄,宇宙洪荒;所谓光阴似箭,因为一转眼滚滚的历史车轮就将人类文明推进了二十一世纪的信息时代!葛大爷有对白曰:“二十一世纪最宝贵的是什么?”对曰:“人才!”何为人才?sincky曰:“适应时代潮流,把握社会需求,并为我中华老大帝国创造社会价值的人!”哎哟,不诹了,其实今天笔者在这里要和大家探讨的,是软件测试的职业发展问题,重点要阐述的是软件测试从业者的职业发展方向,欢迎大家按enter键换行,继续浏览!

       一个人从大学毕业,即开始发生从学生时代向职业人士的过渡,这种过渡走的好,可以实现毕生宿愿,体现个人价值,不管你是否喜欢,功名、利禄尽收眼底;如果走的不好,则会误入歧途,纵有凌云壮志、万丈豪情,难免一生郁郁不得志,终归化作片片飞尘,无语对穹苍!那么如何才能顺利的完成这种过渡、踏上我们豪迈的职业旅程呢?答曰:认清自己,选择适途!战国的魏人荆轲具有“十步杀一人,千里不留行”的本领,曾向魏王献策曰:“国君,我是职业杀手,我杀人的技术很强!”魏王问:“那么你想杀谁呢?”对曰:“杀他个国君如何?”魏王大惊,慌然离去!后来荆轲离开魏国,与燕太子丹密谋,留下了“图穷匕首见”、“荆轲刺秦王”的千古佳话。荆轲,良禽也,择木而栖和太子丹合作,是他的高明之处;不过笔者认为他是一个典型的“低管理、高技能”的人才,当他紧握嬴政的脖领、持剑相逼时,他太得意忘性了,可见他没有领导的“统御力”和“决断力”,所以落了个刺杀失败、拔剑自刎的下场,虽然他的侠义与胆识流畅千古,但是终究是个“杀手”而已;当今社会下,如果“低管理、高技能”的人干工作干到丢了性命,那也真是一个笑谈了!

       目前我们国家高等学历大幅度扩招,造成社会的低端人才严重过剩,大学生毕业找不到工作、或者找不到合适的工作例子鳞次栉比;但是社会各行各业对高端人才的需求又求贤若渴;那么如何解决这种矛盾呢?从大环境来说,国家应该改革教育体制、提高教学质量、重视高端人才的培养,但是,一个问题一旦上升到国家的层次,就要等它个十年八年!我们没有办法改变世界,但是我们有能力改变自己;所以我们从个人的角度来讲,讲讲我们这些软件测试的从业者们,如何“认清自己、选择适途!”

       纵观当今社会各行各业,对于个人的职业发展方向,从宏观上都可以划分为四个群体,即:

       “低管理、低技能”
       “高管理、低技能”
       “低管理、高技能”
       “高管理、高技能”

       而在IT 行业这种划分方法更为合理,sincky为其命名为“一起点-三方向示意图”:

       告别了象牙塔,带着对校园生活里那段风花雪月的追忆,年轻的毕业生们走上了社会;这时候的年轻人,大多数是属于“低管理、低技能”的群体,我们没有工作经验,不知道企业的工作流程,不清楚各个职业的工作技能,更不具备任何行业的管理能力;然而值得庆幸的是,人类问明发展到现在所出现的众多行业,都已经有了众多可以参考的群体,这些群体就理所当然的成了我们可以借鉴的发展方向!虽然我们的起点都是一个,但是可以选择的发展方向却是丰富多样!

       高管理-低技能,即是我们通常所说的管理路线!在IT业,这个方向的成功者不乏项目经理、项目总监直至企业的最高管理层;但是走这个方向也要有技术方面的积累,因为管理者的影响力中,除了职位赋予的权力以外,还包括个人人格方面的能力和专业领域的专业能力,而后者就是技术水平!而计算机行业本身,也决定了技术底蕴对职业发展的重要影响,所以年轻的IT朋友们,如果想为自己的职业人生设计成这个路线,除了适当的技术积累外,更要有意识的锻炼自己的管理素质,下图可做参考:

       低管理-高技能,即通常所说的技术路线!IT业以技术为主导,对于喜欢钻研技术、探讨技术的人,可以选择该条路线,走的深入、走的彻底!只因中国对于技术与管理的认识不同,造成很多人认为做技术不赚钱、不被重视,自身误以为不过是个工程师而已,所做事情只是辅助企业的运作。实际上,在欧美发达国家,资深技术人员的薪资非常高,从业时间的周期也相当长,在Microsoft、IBM等巨头企业,不乏年龄在50岁以上的资深程序员或系统架构师,而其薪资也和高级管理者一样高!而另外一个不争的事实是,企业对于管理的职位是有限的,并且一些优秀的技术人员不愿做管理,或者不适合做管理,因此社会上出现的资深技术专家(或者类似职位),为喜好技术的从业人员提供向上的通道。

       高管理-高技能,即咨询方向是较为均衡、全面的路线,也是众多企业希望员工努力的方向。然而有调查结果显示,由于现实种种因素的制约,大约90%的个人是分别沿着管理方向或者专家方向发展的,真正实现在咨询方向达到一定的高度的人少之又少,而且在这为数不多的咨询方向达到又一定高度的人才,往往又会由于企业资源的限制无法将个人价值完全发挥而最终离开所在企业,成为专业培训师、咨询师;一些国际知名的咨询公司如麦肯锡、安达信乃至毕博或其他,可谓大家在个人职业生涯到达一定阶段,作为自己继续突破职业瓶颈的发展路线。

       那么,对于软件测试的从业者,我们的出路在哪里?我们的职业发展该如何设计?我们的发展方向又有哪些呢?这里笔者和大多数测试同行意识相同,笔者也曾在多篇文章里标明,中国的软件测试行业尚属起步阶段,其发展的步履上布满了荆棘与泥泞;然而其发展速度可谓惊人的,从笔者刚毕业时候对软件测试的“0”概念、从业同行者寥寥无几,到最近2年的各大媒体纷纷报道的中国软件测试人才缺口20万、软件测试工程师将成为未来10年最紧缺的人才之一、包括笔者所接触的众多国内外优秀企业对高端测试人才年薪10万、15万、20万的招聘需求……可见,选择软件测试这个朝阳行业的朋友,做了一个比较正确的选择!然而,如何任何事物总有它的两面性和矛盾性:2006年初在北京、上海、深圳举办的几次春季大型招聘会上,多家企业纷纷打出各类高薪招聘软件测试人员的海报,出人意料的是,收到的简历尚不足招聘岗位数的50%,而合格的竟不足30%……引起我们思考的是,我们的软件测试从业人员还有很大一部分不满足当今社会的需求;而另一层含义是,我们还有很大的提升空间!因此解决该矛盾的突破点是:每个人在这个行业里找到自己的发展方向,规划自己的职业蓝图,从而有针对性的锻炼自己的职业技能,增加个人的职业砝码!

       软件测试职业发展方向,大体上与上述的通用职业发展路线图相吻合,也可以分为管理路线、技术路线、管理+技术路线;只是针对该行业本身,有其特殊性和细致性。其图示如同两个重叠的”V”字样,我们为其命名为“双V模型”;该模型适用于大多数行业性软件测试从业人员,一些特殊领域如游戏测试、嵌入式测试、硬件测试,也可作为参考。本文是三部曲之一,只介绍职业发展方向定义,在下一曲会介绍各个职业方向应该具备的知识与技能体系!

       双V的底点是测试工程师,属于软件测试职业生涯的初级域,其适用范围是入行软件测试3年内的常规测试从业者,其主要工作内容是按照测试主管(即直接上司)分配的任务计划,编写测试用例、执行测试用例、提交软件缺陷,包括提交阶段性测试报告、参与阶段性评审等。初入测试行业,进入企业从事测试工作的人员,都要从该层次做起,虽然有时感觉乏味无趣,甚至迷茫困惑,但是我们可以根据个人的兴趣与特长,向上选择适合自己的路线,因为谁都不会甘心一辈子只做一个普通的测试工程师,那么大家看到这里,就可以摩拳擦掌,看看向上发展的通道中,哪一个适合自己,然后立刻从现在开始,确定自己未来5年、10年甚至一生的发展目标迈进,用笔者经常跟学员说的一句话来形容:把握现在,即刻做起,相信自己是最强的!

       首先是常规路线,即双V模型的重叠线,这条发展路线要求管理与技术并重,因为软件测试的行业特点决定了这个因素:测试工程师向上晋升到测试主管、测试经理、测试总监,直至咨询域的更高方向!

       测试主管是企业项目级主管,对于中小型软件公司也可以是企业级主管,属于中级发展域,适用范围是2到5年职业经验的测试从业者。其工作内容是根据项目经理或测试经理的计划安排,调配测试工程师执行模块级或项目级测试工作,并控制与监督软件缺陷的追踪,保证每个测试环节与阶段的顺利进行。严格来说,这个级别更多属于测试的设计者,因为企业的测试流程搭建是由更高级别的测试经理或相关管理者来做的,测试主管负责该流程的具体实施;而更多的工作,是思考如何对软件进行更加深入、全面的测试。因此笔者认为测试主管比较有创造性的工作内容就是测试设计,而恰恰很多公司忽略了或没有精力来执行此工作内容!应该说,在一个企业里做了3年左右测试工作的人员,很容易晋升到该职位,而之所以晋升,是与个人测试技术的过硬、测试方法的丰富,加上对测试流程的监控力与执行力的职业素质息息相关!

       测试经理是更高级别的测试管理者,属于高级测试方向域。对于大中型软件公司,该职位尤为重要,并且对其职业要求也比较高,一般适合4到8年的测试从业者,在管理与技术能力双双比较成熟的情况下,可以结合具体环境晋升到该级别。测试经理负责企业级或大型项目级总体测试工作的策划与实施。随着软件行业的发展,企业对软件工程里各个角色的定位逐渐明显,测试经理完全与开发经理(一些公司也成为项目经理)平齐,除了需要统筹整个企业级或项目级测试流程外,还要对于不同软件架构、不同开发技术下的测试方法进行研究与探索,为企业的测试团队成员提供指导与解决思路,同时还要合理调配不同专项测试的人力资源(如业务测试工程师、自动化测试工程师、白盒测试工程师、性能测试工程师),对软件进行全面的测试;另外,一些企业里,测试经理还需要与客户交流与沟通,负责部分的销售性或技术支持性工作。嘿嘿,看看那些高薪招聘测试经理的企业对该职位的要求里外语口语的描述,就可见一斑!

       测试总监,属于常规发展路线的最高域,如果再往上发展,那只能是咨询域了;不过笔者并没有将其在图中标记出来,因为该职位对于国内目前的大多数软件公司根本没有设立,也就没必要再在图中体现了。该职位一般在大型或跨国型软件企业,或者专向于测试服务型企业有所设立,由于其企业自身的职位定位不同,以及软件测试整体行情所处的阶段,这里不好归纳陈述;但是一般设立测试总监的企业,该职位都相当于CTO或副总的级别,是企业级或集团级测试工作的最高领导者,驾驭着企业全部的测试与测试相关资源,管理着企业的全部测试及质量类工作。而其职业要求,也是技术与管理双结合;基于目前软件测试行情看,这种高管理-高技能的发展目标,不会适合大多数人的选择,社会也不会提供如此众多的测试总监职位让我们去应征!

       应该说,大多数测试从业者都不是技术与管理双优的人,而如今一些到达测试经理或测试总监级别的优秀测试人才,已经领先一步开辟了这条发展路线的先河,希望这些朋友和大家多多分享经验,让更多的朋友弥补自己管理或技术上的不足,在这条路线上有所建树,共同提高,在实现个人人生价值的同时,也自然而然的推动了软件测试行业的发展;行业发展了,测试人员不再被忽视了,待遇自然也提高了,也就不会有很多朋友迷茫的跟我说“我的日常工作只是点击按钮和按键盘”了,因为我们相信行业的不断成熟,会逐渐将软件测试职业细化,我们的从业者就可以真正的在如下的管理路线和技术路线找到自己的位置,并潜心走向深入的!

       软件测试,是技术主导的职业;不管选择哪条发展路线,都是需要一定的技术沉淀,只是相对来说,管理路线对技术方面要求不高而已。那么我们就先挑重头的技术路线展开讨论。一般来说,一个普通的测试工程师刚入行,3个月左右熟悉企业的工作流程和模式,那么今后的工作内容趋于平稳。然而社会是残酷的!如果单单停留在测试工程师的阶段,若干年后,相信你再也竞争不过那个时候的应届毕业生,当你的工作技能和职业素质趋于与那些朝气蓬勃的年轻人相当时,企业会毫不留情的选择他们,而release你,因为你的成本消耗要比他们高,这是大实话!然而现实又是公平的!因为软件开发技术的不断日新月异,软件功能需求的不断丰富多样,决定软件开发这一系统工程的错综复杂,因此为了保证软件的质量,就要提高测试的水平,这也就为软件测试职业的细化起到先决因素,也是目前社会上出现招聘专项测试工程师的必然趋势!因此,这个趋势给了我们这些常规测试工程师一个空前的好机会!所谓“以毒攻毒”,软件开发靠的是技术,为了测试软件,也必须用技术;那么我们就来看一下从技术路线,软件测试职业发展有哪些方向。

       技术路线,笔者结合国内外软件测试行业现状,划分为三个半方向,分别是自动化测试工程师、白盒测试工程师、性能测试工程师和认证测试工程师,在“双V模型”中右侧体现;前三者适用于通用软件测试领域,认证测试工程师乃嵌入式测试领域职位,至少目前仅出现在嵌入式领域,因此以虚线标记,即“三个半”的“半”。前三条路线对技术的要求程度逐渐增加,三条曲线的斜率也依次递增(认证工程师不参与比较)。

       自动化测试工程师,笔者为其定义在功能测试范畴,指通常所说的依靠自动化测试工具进行软件黑盒测试的工程师。笔者接触的很多测试界朋友,尤其年轻的刚入行者,对测试工具充满了无限的兴趣,他们喜欢那种编写脚本、调试成功后的快感,喜欢看到自定义的日志里记录了本来手工测试烦琐的无聊头顶的工作、而采用自动化方式实现后如此清晰丰富的内容后的兴奋!可以理解,因为笔者也是从那段时光走过来的,现在也负责于我们学员的自动化测试教学工作。从大环境讲,自动化测试是软件测试执行阶段的必然趋势,社会对于软件测试的认可度以及对自动化测试人才的需求必将日益增加,从目前国内做自动化测试的从业者薪资情况看,也普遍高于常规测试工程师,最浅显的道理是“自动化测试比手工测试有了技术含量,^--^”虽然自动化测试在整个行业的普及不是一朝一夕,但是从个人角度讲,自动化测试可以作为个人的发展方向之一,因为如果你率先掌握了这种技术,等到社会需要时,你已成为这个职位的成熟操作者!而国内的51testing把握了时代前沿,与自动化测试工具巨头厂商Mercury(美科利)合作,在中国唯一推出Mercury自动化测试全套技能认证(CPE/SP/CPC),相比其它初等认证,它的实效性和价值性更具意义,也为测试从业者提供了一个进入自动化测试领域的快捷方式!

       白盒测试工程师,笔者定位于在软件测试周期的单元测试阶段对软件进行的代码级测试的人,包括代码走读、代码功能与逻辑测试、代码内存泄漏检查、代码运行效率检查、代码测试覆盖率分析等。如果说,自动化测试只是依靠脚本语言完成测试脚本编写与调试的过程(因为自动化测试工程师的工作重点不在编写脚本),对于自动化测试工程师的技术要求要相对偏低的话,那么白盒测试工程师就要对大型程序开发语言的完全掌握,因此其技术要求相对偏高!而另一方面,白盒测试在目前国内软件行情下,一些公司根本不做,其成本高、代价大的特点决定了这个现状,而一些对软件质量要求非常高(如军事类、电信类、财务金融类等)的企业,也会调动开发工程师来实施此事。但是,还是那句话,测试行业在发展,测试人员能力在提升,软件的开发技术在复杂化,要对软件进行尽可能全面的测试,白盒测试不可忽视!当下专门高薪招聘白盒测试工程师的企业也比比皆是,从中我们可以感知,白盒测试工程师会是很多有开发背景、意欲进入测试行业的良好突破口,白盒测试人员的需求也会逐渐增加。

       性能测试工程师,即在系统测试阶段、功能测试后对软件系统性能指标进行采集分析和运行效率检测的人。笔者认为,在一个尽量压缩的测试流程里,功能测试可以手工进行,白盒测试可以不做,但是性能测试必须要做,除非该软件非网络类软件即单机版软件!这里笔者再提一个观点供大家参考:软件测试,从宏观上可以划分为三个大方面:功能测试、性能测试、安全性测试,功能测试说明软件做对了,功能测试+性能测试说明软件做好了,三者结合起来说明软件做的非常好!安全测试暂且抛之不提,这是下一个发展域的内容,但是为了把软件做好,为了真正保证软件的质量,性能测试绝不容忽视;只因目前很多企业由于时间、成本、人力条件的限制,暂且不做性能测试。性能测试工程师相对来说,是三个技术路线里技术要求最高的,因为软件的性能瓶颈归根结底落实到代码的运行效率这个问题上,因此性能测试要做好,性能测试工程师起码要懂开发;而为了发现性能问题,要懂软件开发架构;为了定位性能问题,要懂操作系统、网络协议、应用服务器乃至数据库的原理与使用;为了最终解决性能问题,要根据定位的问题有针对性的对代码、操作系统、网络架构、服务器、数据库进行优化!当然性能测试是一个系统工程师,绝对不是一两个人的事情,对于常规性能测试工程师,具备定位性能问题的能力即可。正因为性能测试工程师技术要求的高超,该职位的待遇也是目前测试技术路线最高薪的一个,实为综合技术能力较强的测试人员的明智选择!

       上述四职业路线由于其技术程度的突出,一般在企业里由测试经理直接所属,与测试主管级别具有相同的待遇,并处于相同发展域。

       进入技术路线的高级域,根据中级域的四个路线,可以细分成五个路线,分别是资深自动化测试工程师、资深白盒测试工程师、资深性能测试工程师、安全性测试工程师、标准化工程师,这些高级技术类人才完全与常规测试经理平齐,属于软件测试职业发展高级域。

       资深自动化测试工程师由自动化测试工程师晋升而来。如果说常规自动化测试工程师只是负责自动化测试脚本本身的设计与开发,那么资深自动化测试工程师的工作内容就是自动化测试这项工作的实施!笔者早年在IBM公开讲座时候,讲过一篇《以RUP原则实施自动化测试》的主题,RUP里提倡自动化测试是一个庞大的系统工程,绝对不是有了技术、有了工具、有了掌握技术和使用工具的人就可以实施的,而是应该把自动化测试当成一个针对企业自身的项目来看待,需要经过引入、计划、设计、测试、执行、配置管理等环节(参加sincky的blog“天行健-君子以自强不息”),而这些自动化测试的流程搭建,就是资深自动化测试工程师的份内之事。另外,笔者要强调,按照国内外自动化测试领域的发展趋势,我们把自动化测试划分为四个发展阶段(我的blog里也有阐述);也就是说,录制脚本-添加验证点-回放脚本只是最初始的自动化阶段,要在企业实施自动化测试,要有资深自动化测试工程师来设计数据驱动,开发测试框架,甚至一些企业内部自主开发小型测试工具(而非商业工具)的先例,这些也都是建立在资深自动化测试工程师具有深厚的技术底蕴后,主导其他人员协调完成的事情。

       资深白盒测试工程师,其工作内容包含常规白盒测试工程师的内容,除此之外,要协助测试经理或测试总监攻关测试方法与技术性难题,因此其技术水平更加雄厚。如果常规白盒测试工程师是停留在某种程序设计语言类型的代码级测试,那么资深白盒测试工程师就要脱离程序设计语言本身,结合不同架构、多种开发技术交互的情况下,寻找代码测试方法,并具有对代码优化的能力。由于该路线在国内很少有实例参考,这里不再赘述。

       资深性能测试工程师,来源于常规性能测试工程师,按照常规性能测试工程师的技术要求,资深性能测试工程师应该具备性能测试整体方案的设计能力,以及软件系统性能问题定位和性能优化的能力!初此之外,也要对主流的软件开发模式下的应用系统具有敏锐的洞察意识和感知意识。软件开发的架构会日益复杂化,软件应用的各种软硬件平台、数据库类型、服务器类型、网络协议层出不穷,不得不说,都为性能测试的从业者们提出了严峻的考验!值得庆幸的是,各种同类产品的厂商在开发产品时都遵从业内统一标准,性能测试人员结合自身的丰富经验,加上对软件性能测试技术的研究,这样的考验我们欣然面对,这样的人才则会日益增多,在软件测试行业里充当佼佼者地位。

       安全性测试工程师,笔者将其从性能测试工程师衍生出来,因为只有具备性能测试经验的人,才对软件的开发模式、实现架构和技术本身充分了解,才会感知和预见软件系统存在的安全漏洞,加上其本人是测试出身,才知道如何通过系统漏洞尝试攻击软件系统,达到测试的目的。目前国内软件行业对于安全性测试的认识尚未清晰,该职业也更没有普及,一般只限于军事类、机密类、防病毒类或其他高安全性软件的测试工作中。

       再次强调,人类进入文明社会后,任何社会活动都不是独立的个体能够实现的;在高度讲究团队合作、协同办公的今天,软件测试工作更不是测试工程师几个人就能做完所有的事情的;上述各发展路线的技能要求,只是为了增强个人职业突破的砝码,你的砝码越多,“被利用”价值越大,为企业创造利润的程度越高,企业自然给予你更丰厚的回馈!达尔文伯伯的“优胜劣汰”自然规律不会变,“多劳多得、少劳少得”的市场规律也不会变!

       曾经有如此众多的测试职业发展路线放在我面前,结果我没有珍惜;等到软件测试行业发展到成熟阶段,我想入行却入不了行的时候,我才后悔莫及;尘世间干测试最大的不幸莫过于此;如果非要问sincky:再往上的发展通道是什么,那么sincky一定要告诉你,技术专家域!

       在技术路线,向上继续提升的方向,我们称之为“技术专家”;如果说前面描述的技术职位的所涉范围都定位在企业内部,即企业级资深性能测试工程师,那么技术专家,我们可以看作是领域级专项人才!随着软件测试行业的职位不断细化,每个人在自己擅长的领域走向深入,都可以成为该领域的技术专家,技术专家在自已经营的领域里,具有个人独到的见解和深厚的技术实力,而这类人才可以不再从事具体的测试工作,而是提供行业性测试技术咨询、培训等,为软件测试整体行业的发展,起到了鲜明的带头作用。在一些专业的咨询、培训公司,或者IBM、Microsoft等巨型公司,不乏这样的人才;然而目前在我国,这样的人才较少,但是却可以为我们大家提供努力方向,只要我们每个在技术路线供职的测试从业者,规划好自己的职业人生,并以坚韧的毅力和顽强的斗志,若干年后,你我皆可笑谈测试人生,把酒临风,其喜洋洋者矣!而目前在国内几个IT行业发达的省市,专项于软件测试服务或一些大型软件企业,也有这样的职位暂露头角,我们深信,社会对高端人才的需求趋势是越来越大的,更多的优秀企业也会为员工提供更多、更广的发展空间,值此大好形势,就看我们个人如何充分利用这些上升通道了。

       在我们的软件测试从业人员里,有这样一部分群体:他们非计算机相关专业毕业,不懂软件开发,由于国内种种对软件测试人才的偏激认识,认为测试人员不需要懂开发,只要会编写文档、执行用例即可;因此很多测试工程师并不具备开发背景,并且对软件技术掌握肤浅,而对于没有技术底蕴的人强迫其走技术路线,不能不说是一种折磨!因此,这个群体里的朋友,是不是认为自己只能做一辈子常规测试工程师呢?答案是否定的,因为在“双V模型”的左侧,是软件测试职业发展的管理路线。软件测试的管理路线,与通用职业发展示意图的“高管理-低技能”并不完全相同,只因软件测试独具的行业特点,我们认为软件测试行业的非技术路线发展方向,更多的是从软件测试行业衍生出来的职位,如质量保证、配置管理。如果说软件测试职业发展的技术路线更侧重于职业技能的提升,那么这条管理路线则更侧重于职业素质的积累(笔者强调是“侧重”,并不表示不需要);换句话说,技术路线更侧重人的智力因素,而管理路线更侧重人的非智力因素。

       从事了1到3年左右的常规测试工程师,在经过对个人性格特点剖析后,如果认为自己是一个倾向于“高管理-低技能”的类型,那么想要实现自己的职业提升,可以向中级发展域的配置管理工程师、质量保证工程师、业务测试工程师转型。

       配置管理(SCM)与质量保证(SQA)同是CMM中的关键过程域(KPA),也同是现代软件工程里的必要角色,与软件测试同属软件开发团队的重要组成部分。只因这两个角色在软件工程里的人员配比数量相对较少,还不如软件测试这样规模化乃至于形成行业,而最多是一个职业;另外一个社会现象是,企业很少直接从社会直接招聘配置管理工程师和质量保证工程师,而通常的做法是从企业内部的现有测试员工队伍里选拔,而转型后的测试工程师,就成为SCM或SQA。分析其原因,我们可以感知,SCM、SQA与软件测试工程师都是关注于软件质量的相似职位,社会对于配置管理、质量保证的定义和工作内容并未普及,与其直接从社会招聘“0”基础的人来培养,倒不如从软件测试人员里升华!一般来说,这两种职位的上报对象是项目经理或相同级别管理者。

       转型后的配置管理与质量保证工程师,一定要转变一个意识,那就是常规测试工程师的工作范围很大一部分(不是全部)只限于测试流程,而配置管理和质量保证的工作范围是面向整个软件开发流程,二者的职业要求都非常重视软件工程知识体系的建立和软件开发总体流程的实施能力。由于配置管理工程师除了企业配置管理流程的搭建与实施外,一般会涉及配置管理工具的管理与维护,而质量保证工程师更多的工作是软件开发流程的控制与维护,故而配置管理对技术的要求稍高于质量保证。随着我国软件行业水平的不断发展,众多软件公司纷纷通过CMM/CMMI,企业对于软件开发团队的角色配比制度也将逐渐健全,当前社会对配置管理与质量保证工程师的职位需求日益增加,种种现象表明,对于软件测试工程师出身的从业者,转型至SCM/SQA不失为突破个人职业生涯瓶颈的又一通道!

       业务测试工程师,笔者定义为面向行业类软件业务逻辑与工作流测试的人员。当前软件开发类型,很大一部分是行业类软件的应用,如ERP、SCM、CRM、OA、电信、金融、财务、嵌入式、通信、手机、游戏……这就要求从事行业类软件测试的人员具备行业背景、业务知识,熟练该行业工作流程。从社会上出现的很多对此类经验要求的测试工程师招聘信息中,我们更加肯定这种趋势;所谓存在即是道理,既然社会上有了需求,那么就可以作为个人发展的方向。而另外一个特点是,业务测试工程师的工作内容主要是黑盒测试,属于功能范畴,因此对技术要求不大,设置一些大型行业类软件公司的业务测试工程师薪资丰厚,但是完全可以不懂技术,因为它的工作性质决定了不需要懂很多的技术!他们甚至连软件的界面测试都不做——交给常规测试工程师实施,而完全关注软件的业务性和易用性,由于其深厚的行业背景,可以为软件的在正式发布前提出很多建设性的意见,而这些建议正是软件开发商提高产品易用性、增加用户满意度、开拓市场、创造利润的关键因素之一!

       当管理路线的中级域方向继续上升至高级域,就分别到达配置管理经理、质量保证经理、产品经理、业务专家,这类人才地位高、待遇厚,一般资深的软件工程领域专家都聚集于此。

       如果说配置管理工程师、质量保证工程师更加侧重于配置管理流程、质量保证流程的实施与日常管理维护,那么配置管理经理、质量保证经理就是更侧重于配置管理流程、质量保证流程的建立与改进。一般在中小软件企业,可能没有这两个角色,而全部的配置管理或质量保证工作都由工程师担当;但是大中型软件企业对资深配置管理经理、资深质保经理求贤若渴。软件系统越庞大,软件开发团队规模就越庞大,软件开发流程中出现问题的几率就越高,高效管理软件开发流程,不断改进软件质量,是每个软件公司在技术上没有顾虑后的下一个急需攻破的难关!

       业务专家,属于行业内咨询、顾问的角色,已经几乎脱离了测试工作本身,而更多为企业的产品需求分析、设计、开发、测试等各个环节提供指导工作,其目的也是提高软件的易用性和稳定性,减少后期不必要的需求变更。该职位也同样在目前热点行业的大中型软件企业有所设立。

       产品经理,这个职位在很多企业有所设立,笔者认为它是质保经理的派生,只是它更侧重于软件在产品化之前的质量监控工作,包括软件开发流程、软件测试等技术与管理的各个方面。由于该职位在业内没有明显定义,而根据不同企业的职位定位不同,这里无法统一陈述。

       管理路线的最高发展域是咨询域,与技术路线的专家域类似,在配置管理、质量保证、软件产品化、行业领域达到高深造诣的人才,他们有丰富的从业经验、深厚的管理底蕴,具有对软件工程高瞻远瞩的慧眼和胆识,往往供职在专业的咨询与培训公司,提供IT业管理类咨询与培训的服务,推动着软件行业的前进。国内外很多为软件企业进行CMM咨询和实施的公司里,就是这些人才的大本营之一!

       笔者认为,在“双V模型”的管理路线里,中低级发展域的人才对技术与管理的区分较为明显,而到了高级与更高级发展域,更多的是复合型人才,软件业以技术为主导,没有一定技术积累,还是很难达到高级境界;要在管理路线练出“上乘武功”,还是希望大家在主攻管理与流程类课题的同时,多丰富下自身的技术层面,嘿嘿!

    另外,笔者提倡管理与技术两条路线的平齐,而并非目前社会上认为的技术要比管理低一等,技术是靠吃青春饭,在这些人才到达最高发展域的“咨询”与“专家”层面,二者应该完全具有相同的地位和待遇,只是“称谓”不同罢了!

       “双V模型”是sincky结合当前国内外软件测试行业现状提出的职业发展流程图,仅供测试从业者参考,并非一个“死”的框架,大家不要拘泥于流程图本身;其实目前国内很多上升到高级域或最高域的资深人才,很多都是跳跃式、甚至跨越式的职业发展,因为命运掌握在自己手里,任何人都剥夺不了设计自身人生蓝图的权利;而另外一个角度是,任何人都不该不珍惜为自己规划职业生涯的机会!

       软件测试,一个日出东方的国际型行业,虽然偶尔会弥漫晨雾,甚或有暴雨来袭,但是我们都该坚持!有人说:“什么叫失败?”答曰:“放弃就是失败!”每一次当我们身处逆境时,决不能用软弱的眼泪作为走向明天的见证,更不能用脆弱的感情去拴住生命的航线;是雄鹰就该搏击长空,是蛟龙就该挽起狂澜;沧海横流,方显英雄本色,疆场搏斗,可露壮士肝胆!人生没有豁免权,每位从业者只有怀着不息的斗志,乘千里长风,破万里巨浪,才能支配命运走向辉煌的明天!

1679/9<123456789
Open Toolbar