软件测试工程师培训




1
内容提要

    一 、软件测试的慨念
    二 、软件测试的必要性
    三 、软件测试现状与要求
    四 、软件测试基础与标准
    五 、软件测试过程与管理
2
    六 、软件测试技术与工具
一 、软件测试的慨念(1)
    定义:软件测试是在规定的条件下对程序进行操作,以发
    现错误,对软件质量进行评估。
    软件的组成:软件是又文档、数据以及程序组成的,所以
    软件测试应该是对软件形成的文档、数据及程序进行测试,
    目前很多人认为软件测试就是对程序的测试。
    软件质量:ISO9126中定义的软件质量是:软件满足规定
    和潜在用户需求特性的总和;而2001年的软件国际标准
    中,把软件质量分成了:“内部质量” 、“外部质量” 、‘使用
    质量‘三个部分。也就是说:软件满足规定和潜在用户需
    求的能力,要从软件在内部、外部和使用中的表现来衡量。
    软件测试与质量保证的区别:质量保证(QA)是通过预防、
    检查和改进来保证软件质量,即全面的质量管理与过程改
    进来开展质量保证工作;软件测试是执行软件,对开发文
    档和源代码进行走查,以找出问题,报告质量

3
一 、软件测试的慨念(2)
    软件测试的目的:是想以最少的人力、物力和时间找出软
    件中潜在的各种错误与缺陷,通过修正各种错误与缺陷提
    高软件的质量,回避软件发布后由于软件缺陷和错误造成
    的隐患所带来的风险。
    软件测试原则:
     1)所有的软件测试应该蒴源到用户的需求
     2)尽早的将软件测试贯穿到软件开发的全过程中
     3)冲完全测试是不可能,测试需要中止
     4)测试无法保证软件中完全没有缺陷
     5)充分注意测试中错误集群现象
     6)应避免自己检测自己的程序
     7)应避免测试的随意性
4
一 、软件测试的慨念(3)
    软件测试的分类:
     软件开发阶段:
      单元测试:又称模块测试,对程序模块进行检验
      集成测试:又称组装测试,检验程序单元的接口关系
      确认测试:通过检验和提供客观证据,证实软件是否
    满足特定的预期的用途要求
      系统测试:确认系统是否达到目标要求,对集成的硬
    件,软件系统进行测试
      验收测试:按照项目任务书或合同。供需双方约定的
    验收依据文档进行的整个系统的测试与评审,决定是否接
    受或拒绝系统


5
一 、软件测试的慨念(4)
    软件测试的分类:
     测试的实施组织:
      开发方测试:又称验证测试,或α测试
      用户测试:又称β测试
      第三方测试:又称独立测试
    测试技术划分:
      白盒测试:对内部结构进行分析,检测寻找问题
      黑盒测试:通过软件的外部表现来发现缺陷和错误
      灰盒测试:介于白盒与黑盒之间,关注输出对输入的
           正确性;同时也关注内部表现,只通过一
           些表征性的现象、事件、标志来判断内部
           的运行状态

6
一 、软件测试的慨念(5)
    软件测试与软件开发




7
一 、软件测试的慨念(6)

     软件开发中产生的文档
     用户需求说明书
     软件需求规格说明书
     概要设计说明书
     数据库设计说明书
     软件详细设计说明书
     软件测试及分析报告
     测试缺陷跟踪表
     产品评审缺陷跟踪表
     系统管理手册
     安装手册
     用户手册
     操作手册。
8
一 、软件测试的慨念(7)

    软件工程开发的框架
           软件工程


     目标     活动    原则


     可用性   需求调查   开发范型
     正确性   需求分析   设计方法
     合算性   概要设计   管理过程
     效率性   详细设计   支持过程
           编码实现
           软件测试
9          维护支持
二 、软件测试的必要性(1)
      软件质量对软件的生产成本、上市时间和售后服务都有
     一定的影响,质量问题已成为影响软件产品流通的重要因
     素,而软件测试是软件开发过程中一个必不可少的质量检
     验手段。软件测试就是为了发现被测对象中的错误,避免
     产品使用中出现重大问题,造成不必要的损失。近些年,
     由于电子商务的普及应用,软件的复杂程度和交易规模急
     剧增加,很多软件产品没有经过专业的测试和评估就匆忙
     发布,从而导致软件产品存在大量问题,对企业造成很多
     不良的影响,如:
      软件存在大量的错误,以至影响软件的正常运行;
      软件的开发效率迅速降低,软件需要不断地修改、升级;
      产品发布或部署后,质量缺陷的修改成本急剧上升,导
     致利润下降、甚至亏损;
      企业用户在应用存在着大量质量缺陷的软件产品之后,
     对企业的信息工程失去信心等。



10
二、测试的必要性(3)

 尽早测试能进行成本的控制
      缺陷阶段   潜在缺陷    剩余缺陷     排除率(%)    成本
      需求分析    0.2    0.046      77     0.1-0.2
      软件设计    0.25   0.0375     85      0.5
      软件编码    0.35   0.0175     95       1
      软件测试    0.12   0.024      80       3
      维护支持    0.08   0.024      70       20
       合计      1     0.149     85.1

      1994年对软件缺陷的研究表明:剩余缺陷中,需求分析的
     缺陷最多占30.87%(0.046/0.149),需求错误是软件质量中
     的最大隐患.
       从成本上看,把编码阶段的成本定量为1,如在需求阶段
     留下的错误,到了维护支持阶段去修复,其成本将是100-
     200倍的增加.
11
三 、软件测试现状与要求(1)
     国外的现状: 美国国家标准和技术研究院的调查报告称,
     美国软件工程项目的成功率仅占16%左右,美国大型专用
     软件开发的失败率高达70%,目前软件的质量问题仍然十
     分突出。国外软件开发企业把40%的资源花在软件测试上,
     软件测试费用占开发费用的30%至50%,一些要求高可靠、
     高安全的软件,测试费更高,是开发费用的3至5倍,在国
     际上软件业较发达的国家,绝大多数的软件产品的认定,
     都有第三方测试的介入,软件测试行业产值几乎占了软件
     行业总产值的1/3。 国外的软件测试已发展成了一门独立
     的产业,体现在:
     1)软件测试在软件企业中占有重要的地位;项目中测试
     工程师比编码工程师多得多,测试的投入也占项目总投入
     的2/3左右
     2)软件测试理论研究的发展迅速
     3)软件测试市场的繁荣。软件测试标准与测试工具的日
     益成熟
12
三 、软件测试现状与要求(2)
     国内的现状:与国外形成鲜明对比的是,国内的企业对软
     件测试环节的重视程度明显不足,国内在测试服务方面,
     软件测试服务还处于起步和摸索阶段。不过,近两年国内
     出现了一个好的苗头,上海、北京、各省以及军队纷纷组
     建了软件测试公共服务平台,各地政府都加大了软件测试
     的投资力度。
     1)大型的软件企业已开始建立自己独立的软件测试队伍,
     虽测试人员规模与国外的不能相比,但已有独立测试的意
     识
     2)2003年人事部与信息产业部职业资格认证中具有“软件
     评测师”的称号,国家对软件测试足以重视
     3)企业的计算机系统集成资质以及信息系统工程监理资
     质认证中,企业的软件测试能力被定为企业技术能力的重
     要指标
     4)2001年信息产业部5号令规定,凡在国内销售的软件
13   必须进行软件登记测试,在信息产业部登记备案
三 、软件测试现状与要求(3)
     国内的现状:
     5)项目验收时,原则上不能以评代测,项目评优时原则
     上需要第三方公正的测试报告
     6)各级省政府授权成立了第三方公正的、非盈利的公益
     性软件评测机构
     7)软件测试正在成为软件学院的一门独立课程




14
四、软件测试基础与标准(1)

 软件测试质量控制的标准规范
     序号         标准号                           标准名称            对应国际标准




     1    GB/T 16260-1996     软件产品评价质量特性及其使用指南           ISO/IEC9126:1991
     2    GB/T 8566-2001      信息技术软件生存周期过程               ISO/IEC12207:1995

     3    GB/T 8567-1988      计算机软件产品开发文件编制指南            FIPS3864:
     4    GB/T 9385-1988      计算机软件需求说明编制指南              ANSI/IEEE830:1984
     5    GB/T 9386-1988      计算机软件测试文件编制规范              ANSI/IEEE829:1983
     6    GB/T 12504-1990     计算机软件质量保证计划规范              IEEE730:
     7    GB/T 12505-1990     计算机软件配置管理计划规范              IEEE828:
     8    GB/T 13502-1992     信息处理程序构造及其表示的约定            ISO8631:1989
     9    GB/T 17544-1998     信息技术 软件包质量要求和测试            ISO/IEC12119:1994
     10   GB/T 18234-2000     信息技术 CASE工具的评价与选择指南        ISO/IEC14102:1995
     11   GB/T 18491.1-2001   信息技术 软件测量功能规模测量第1部分:概念定义   ISO/IEC14143-1:1998
     12   GB/T 18492-2001     信息技术 系统及软件完整性级别            ISO/IEC15026:1998
     13   GB/T 18493-2001     信息技术 软件生存周期过程指南            ISO/IEC15271:1998
     14   GB/T 14079-1993     计算机软件维护指南
     15   GB/T 14394-1993     计算机软件可靠性和维护性管理

15   16   GB/T 15532-1995     计算机软件单元测试
四、软件测试基础与标准(2)
     软件测试质量控制的参数
     序号   控制参数             含义              应确认的问题
     1    正确性    程序满足规格说明和完成用户需求程度        该做的做了吗?
     2    可靠性    按要求的精确度实现其规定的功能程度        总能准确地工作吗?
     3    高效率    程序实现其功能所需的计算资源量与快速程度     在目前硬件上快速吗?
     4    完整性    软件及数据不受未授权人的控制程度         软件及数据安全吗?
     5    易用性    学习,操作,准备输入数据,解释输入的工作量    很容易使用吗?
     6    维护性    找到错误及排除错误所需的工作量          容易维护吗?
     7    测试性    各测试阶段的用例投入力度与测试覆盖率BUG率   测试完善吗?
     8    灵活性    对程序所做修改的工作量              容易修改与扩充吗?
     9    移植性    在不同的环境下运行所需的修改量          在其他环境下能执行?
     10   复用性    程序能被其他软件开发的利用程度          能重复使用吗?
     11   功能性    完成用户需求,设置功能的完整程度         功能齐全吗?
     12   安全性    抗网络攻击程度,抗病毒的特性程度         自我保护与自我恢复?


16
五 、软件测试过程与管理(1)
     软件测试过程:
      开发过程中的质量决定了软件的质量,测试过程的质量
     决定了软件测试的质量和有效性,软件测试过程的管理是
     保证测试过程的质量,控制测试风险的重要活动。
     软件评价过程的特性:
       1)可重复性:同一评价人按同一评测标准对同一产品
     的评价是同一可以接受的结果
      2)可再现性:有不同评价人按同一评测标准对同一产
     品的评价是同一可以接受的结果
      3)公正性:评价不偏向任何特殊的结果
      4)客观性:依据客观的事实,不带感情色彩和主观意
     见

17
测试生命周期




     确立测试需求   测试规格说明     测试设计




                  测试执行
18   测试评估
五 、软件测试过程与管理(3)

测试需求-内容
  目的
  测试项(对象)
  测试类型
  测试范围
  测试过程
  资源需求(硬件、软件、人力)

19
五 、软件测试过程与管理(4)

测试需求-内容
  文档的检验
  进度安排
  测试开始、结束准则
  测试记彔
  回归测试的方法
  测试的评估       应有规确保所有
               的测试结果都得
   缺陷跟踪       到记彔
20
五 、软件测试过程与管理(5)

测试需求-具体功能
      业务功能
       业务流程
       数据库事务
       域值合法性

      用户界面
       对象状态
       窗口模式
       菜单

21     标准尺寸的控件/文字
五 、软件测试过程与管理(6)

测试需求-具体功能
      性能
       在少于3秒的情况下增加一个新顾客帐户

      强度
       当内存很低的情况下运行应用程序
       为设计规定是    1,000,000 条记彔的系统增加
       1,000,001条记彔



22
五 、软件测试过程与管理(7)

测试需求-具体功能
      配置
       显示驱动的兼容性
       网络连接

      安装
       新安装(典型安装、定制安装)
       升级安装
       网络下载


23
五 、软件测试过程与管理(8)

测试需求形成




24
五 、软件测试过程与管理(9)

测试规格说明
      定义测试的范围与使用测试标准
      开发文档的测试验收
      软件功能列表
      功能测试结果记彔
      性能参数的设定
      性能参数结果记彔
      缺陷记彔及处理
25
五 、软件测试过程与管理(10)

测试设计

      确定测试方案
       测试依据:相关标准和文档
       测试方法:白盒、黑盒、文档审查
       测试工具:确定测试工具的使用
       测试结果:问题属性、测试结论约定




26
五 、软件测试过程与管理(11)




27
五 、软件测试过程与管理(12)

测试执行
      目标
       执行测试
       查看测试结果
       研究并组织对测试结果进行评估
       记彔问题
      输入
       测试过程和测试用例
      输出
       测试日志

28     问题报告
五 、软件测试过程与管理(13)

测试执行-记录测试结果

  测试日志信息
  执行测试过程
  评估意外的结果
  记彔问题




29
五 、软件测试过程与管理(13)

测试执行-缺陷跟踪
      记彔测试事件或用户问题
      分析原因,定位错误
      进行软件修改
      修改结果的跟踪




30
五 、软件测试过程与管理(14)

测试执行-问题分析
  问题分类
      类型:根据问题自然属性划分的缺陷种类
      严重程度:指因问题引起的故障对软件产品的影
       响程度
      优先级:问题必须被修复的紧急程度
      状态:跟踪问题修复过程的进展情况
      起源:问题引起的故障或事件第一次被检测到的
       阶段
      来源:引起问题的起因
      根源:发生问题的根本因素
31
五 、软件测试过程与管理(14)

测试执行-问题分析
  问题类型
      功能
      用户界面
      边界值
      初始化
      计算
      内存相关
      硬件相关
      文档
32
五 、软件测试过程与管理(14)

测试执行-问题分析
  问题严重程度
      5级:灾难性的-系统崩溃、数据被破坏
      4级:很严重的-数据被破坏
      3级:严重的-特性不能运行,无法替代
      2级:中等的-特性不能运行,可替代
      1级:烦恼的-提示不正确,报警不确切
      0级:轻微的-表面化的错误,拼写错等



33
五 、软件测试过程与管理(14)

测试执行-问题分析

  问题修改优先级
      必需立即修改
      排队等候修改
      可在方便时修改




34
五 、软件测试过程与管理(14)

测试执行-问题分析
  问题状态
      已提交
      确认,等待处理
      拒绝,不需要修复或不是错误
      被修复
      确认被修复,将其关闭




35
五 、软件测试过程与管理(14)

测试执行-问题分析
  问题根源
      目标,如:错误的范围,误解了目标,超越能力
     的目标等
      过程、工具和方法,如:无效的需求收集过程,
     过时的风险管理过程,不适用的项目管理方法,
     没有估算规程,无效的变更控制过程等
      人员,如:项目团队职责交叉,缺乏培训。没有
     经验的项目团队,缺乏士气和动机不纯等
      缺乏组织和通讯,如:缺乏用户参与,职责不明
36   确,管理失败等
五 、软件测试过程与管理(14)

测试执行-回归测试的范围

  回归测试的范围
      测试全部用例
      问题修改后的检验
      测试高风险模块/系统
      基于操作剖面选择测试




37
五 、软件测试过程与管理(14)

测试评估-概述
      目标
       提交测试过程的衡量标准
       产生缺陷报告和测试覆盖的总结报告

      输入
       测试日志
       问题报告

      输出
       测试覆盖程度
38     问题分析报告
五 、软件测试过程与管理(14)

测试评估-测试覆盖率
  基于覆盖策略的系统测试
      验证所有需求的完成情况
      验证每行代码的执行情况

  基于测试需求的测试过程
      覆盖功能和设计的需求
      验证一个测试需求对应的测试过程




39
五 、软件测试过程与管理(14)

测试评估-缺陷分析
  软件质量
      问题分析是提供验证软件质量的手段之一
      测试需求的覆盖程度决定了软件测试的质量如何

  实例报告
      问题分配
      问题趋向
      问题状态
      遗留问题对软件的影响

40
五 、软件测试过程与管理(14)

测试评估-报告




41
五 、软件测试过程与管理(14)

测试资料进入配置管理系统




42
六 、软件测试技术与工具(1)
 软件自动化测试工具
 一、单元测试
  代码走查工具Logiscope
 Logiscope 是一组嵌入式软件测试工具集。它贯穿于软件开发、
 代码评审、单元/集成测试、系统测试、以及软件维护阶段。它
 面向源代码进行工作。Logiscope针对编码、测试和维护。因
 此,Logiscope的重点是帮助代码评审(Review )。
 Logiscope对软件的分析,采用基于国际间使用的度量方法
 (Halstead、McCabe等)的质量模型,以及从多家公司收集
 的编程规则集,可以从软件的编程规则,静态特征等多个方面,
 量化地定义质量模型,并检查、评估软件质量。
 2、功能测试工具C++Test
 C++Test是一个C/C++单元测试工具,自动测试任何C/C++类、
 函数或部件。C++Test能够自动测试代码构造(白盒测试)、
 测试代码的功能性(黑盒测试)和维护代码的完整性(回归测
 试)。通过将C++Test集成到开发过程中,能够有效地防止软
 件错误,提高代码的稳定性。

43
六 、软件测试技术与工具(2)
  软件自动化测试工具
  性能测试工具Insure++
  检测众多不同类型的难以捉摸的错误,如内存破坏、内存泄露、
  内存分配错误、变量初始化错误、变量定义冲突、指针错误、
  库错误、逻辑错误和算法错误等等
  精确定位引起内存泄露的代码位置,不仅是泄露的内存位置
  支持所有流行的编译器,如cc、gcc和acc等等
  能够检查第三方库和函数以及非C语言所写的模块接口
  允许您在快速有选择的检查和完全插装检查之间进行切换
  发现大量的C++错误
  二、系统测试
  1、功能测试工具WinRunner
  WinRunner是一种企业级的用于检验应用程序是否如期运行的
  功能性测试工具。通过自动捕获,检测,和重复用户交互的操
  作, WinRunner 能够辨认缺陷并且确保那些跨越多个应用程
  序和数据库的业务流程在初次发布就能避免出现故障,并且保
  持长期可靠运行。
  2、性能测试工具SilkPerformer增强版
  SilkPerformer V™是一种在工业领域最高级的企业级负载测试
44工具。它可以模仿成千上万的用户在多协议和多计算的环境下
  工作。不管企业电子商务应用的规模大小及其复杂性,通过
六 、软件测试技术与工具(3)
      什么是自动化压力测试?
              使用虚拟用户替代测试人员
              在单一计算机上运行多个虚拟用户
              从集中的一台控制机控制虚拟用户

     Vuser   Vuser

 Vuser       Vuser




45
六 、软件测试技术与工具(4)


     优秀的性能测试只有工具能做到…
      • 提供丰富的产生压力的手段
      • 可以对后台系统进行实时监控
      • 可以对压力数据分析,快速定位系统瓶颈



                      LoadRunner 性能监控




46    集中控制   虚拟用户   Internet   Web 服务器   应用服务器   数据库服务器
六 、软件测试技术与工具(5)

 用户关心的性能测试 --- 时间及易用性

      上线前最后时刻进行,时间紧、压
     力大
           工作内容     工作量   所需时间

           彔制脚本     20个   一个小时

           修改脚本     20个   一个小时

           运行测试     5轮    一天半
          分析结果,提交
                          一天
47           报告
六 、软件测试技术与工具(5)

 用户关心的性能测试 --- 分析优化能力
      性能测试的终极目标并非压垮系统!

      自动关联分析    Root Cause
      瓶颈分析建议




48
49

Qa engineer training

  • 1.
  • 2.
    内容提要 一 、软件测试的慨念 二 、软件测试的必要性 三 、软件测试现状与要求 四 、软件测试基础与标准 五 、软件测试过程与管理 2 六 、软件测试技术与工具
  • 3.
    一 、软件测试的慨念(1) 定义:软件测试是在规定的条件下对程序进行操作,以发 现错误,对软件质量进行评估。 软件的组成:软件是又文档、数据以及程序组成的,所以 软件测试应该是对软件形成的文档、数据及程序进行测试, 目前很多人认为软件测试就是对程序的测试。 软件质量:ISO9126中定义的软件质量是:软件满足规定 和潜在用户需求特性的总和;而2001年的软件国际标准 中,把软件质量分成了:“内部质量” 、“外部质量” 、‘使用 质量‘三个部分。也就是说:软件满足规定和潜在用户需 求的能力,要从软件在内部、外部和使用中的表现来衡量。 软件测试与质量保证的区别:质量保证(QA)是通过预防、 检查和改进来保证软件质量,即全面的质量管理与过程改 进来开展质量保证工作;软件测试是执行软件,对开发文 档和源代码进行走查,以找出问题,报告质量 3
  • 4.
    一 、软件测试的慨念(2) 软件测试的目的:是想以最少的人力、物力和时间找出软 件中潜在的各种错误与缺陷,通过修正各种错误与缺陷提 高软件的质量,回避软件发布后由于软件缺陷和错误造成 的隐患所带来的风险。 软件测试原则: 1)所有的软件测试应该蒴源到用户的需求 2)尽早的将软件测试贯穿到软件开发的全过程中 3)冲完全测试是不可能,测试需要中止 4)测试无法保证软件中完全没有缺陷 5)充分注意测试中错误集群现象 6)应避免自己检测自己的程序 7)应避免测试的随意性 4
  • 5.
    一 、软件测试的慨念(3) 软件测试的分类: 软件开发阶段: 单元测试:又称模块测试,对程序模块进行检验 集成测试:又称组装测试,检验程序单元的接口关系 确认测试:通过检验和提供客观证据,证实软件是否 满足特定的预期的用途要求 系统测试:确认系统是否达到目标要求,对集成的硬 件,软件系统进行测试 验收测试:按照项目任务书或合同。供需双方约定的 验收依据文档进行的整个系统的测试与评审,决定是否接 受或拒绝系统 5
  • 6.
    一 、软件测试的慨念(4) 软件测试的分类: 测试的实施组织: 开发方测试:又称验证测试,或α测试 用户测试:又称β测试 第三方测试:又称独立测试 测试技术划分: 白盒测试:对内部结构进行分析,检测寻找问题 黑盒测试:通过软件的外部表现来发现缺陷和错误 灰盒测试:介于白盒与黑盒之间,关注输出对输入的 正确性;同时也关注内部表现,只通过一 些表征性的现象、事件、标志来判断内部 的运行状态 6
  • 7.
    一 、软件测试的慨念(5) 软件测试与软件开发 7
  • 8.
    一 、软件测试的慨念(6) 软件开发中产生的文档 用户需求说明书 软件需求规格说明书 概要设计说明书 数据库设计说明书 软件详细设计说明书 软件测试及分析报告 测试缺陷跟踪表 产品评审缺陷跟踪表 系统管理手册 安装手册 用户手册 操作手册。 8
  • 9.
    一 、软件测试的慨念(7) 软件工程开发的框架 软件工程 目标 活动 原则 可用性 需求调查 开发范型 正确性 需求分析 设计方法 合算性 概要设计 管理过程 效率性 详细设计 支持过程 编码实现 软件测试 9 维护支持
  • 10.
    二 、软件测试的必要性(1) 软件质量对软件的生产成本、上市时间和售后服务都有 一定的影响,质量问题已成为影响软件产品流通的重要因 素,而软件测试是软件开发过程中一个必不可少的质量检 验手段。软件测试就是为了发现被测对象中的错误,避免 产品使用中出现重大问题,造成不必要的损失。近些年, 由于电子商务的普及应用,软件的复杂程度和交易规模急 剧增加,很多软件产品没有经过专业的测试和评估就匆忙 发布,从而导致软件产品存在大量问题,对企业造成很多 不良的影响,如: 软件存在大量的错误,以至影响软件的正常运行; 软件的开发效率迅速降低,软件需要不断地修改、升级; 产品发布或部署后,质量缺陷的修改成本急剧上升,导 致利润下降、甚至亏损; 企业用户在应用存在着大量质量缺陷的软件产品之后, 对企业的信息工程失去信心等。 10
  • 11.
    二、测试的必要性(3) 尽早测试能进行成本的控制 缺陷阶段 潜在缺陷 剩余缺陷 排除率(%) 成本 需求分析 0.2 0.046 77 0.1-0.2 软件设计 0.25 0.0375 85 0.5 软件编码 0.35 0.0175 95 1 软件测试 0.12 0.024 80 3 维护支持 0.08 0.024 70 20 合计 1 0.149 85.1 1994年对软件缺陷的研究表明:剩余缺陷中,需求分析的 缺陷最多占30.87%(0.046/0.149),需求错误是软件质量中 的最大隐患. 从成本上看,把编码阶段的成本定量为1,如在需求阶段 留下的错误,到了维护支持阶段去修复,其成本将是100- 200倍的增加. 11
  • 12.
    三 、软件测试现状与要求(1) 国外的现状: 美国国家标准和技术研究院的调查报告称, 美国软件工程项目的成功率仅占16%左右,美国大型专用 软件开发的失败率高达70%,目前软件的质量问题仍然十 分突出。国外软件开发企业把40%的资源花在软件测试上, 软件测试费用占开发费用的30%至50%,一些要求高可靠、 高安全的软件,测试费更高,是开发费用的3至5倍,在国 际上软件业较发达的国家,绝大多数的软件产品的认定, 都有第三方测试的介入,软件测试行业产值几乎占了软件 行业总产值的1/3。 国外的软件测试已发展成了一门独立 的产业,体现在: 1)软件测试在软件企业中占有重要的地位;项目中测试 工程师比编码工程师多得多,测试的投入也占项目总投入 的2/3左右 2)软件测试理论研究的发展迅速 3)软件测试市场的繁荣。软件测试标准与测试工具的日 益成熟 12
  • 13.
    三 、软件测试现状与要求(2) 国内的现状:与国外形成鲜明对比的是,国内的企业对软 件测试环节的重视程度明显不足,国内在测试服务方面, 软件测试服务还处于起步和摸索阶段。不过,近两年国内 出现了一个好的苗头,上海、北京、各省以及军队纷纷组 建了软件测试公共服务平台,各地政府都加大了软件测试 的投资力度。 1)大型的软件企业已开始建立自己独立的软件测试队伍, 虽测试人员规模与国外的不能相比,但已有独立测试的意 识 2)2003年人事部与信息产业部职业资格认证中具有“软件 评测师”的称号,国家对软件测试足以重视 3)企业的计算机系统集成资质以及信息系统工程监理资 质认证中,企业的软件测试能力被定为企业技术能力的重 要指标 4)2001年信息产业部5号令规定,凡在国内销售的软件 13 必须进行软件登记测试,在信息产业部登记备案
  • 14.
    三 、软件测试现状与要求(3) 国内的现状: 5)项目验收时,原则上不能以评代测,项目评优时原则 上需要第三方公正的测试报告 6)各级省政府授权成立了第三方公正的、非盈利的公益 性软件评测机构 7)软件测试正在成为软件学院的一门独立课程 14
  • 15.
    四、软件测试基础与标准(1) 软件测试质量控制的标准规范 序号 标准号 标准名称 对应国际标准 1 GB/T 16260-1996 软件产品评价质量特性及其使用指南 ISO/IEC9126:1991 2 GB/T 8566-2001 信息技术软件生存周期过程 ISO/IEC12207:1995 3 GB/T 8567-1988 计算机软件产品开发文件编制指南 FIPS3864: 4 GB/T 9385-1988 计算机软件需求说明编制指南 ANSI/IEEE830:1984 5 GB/T 9386-1988 计算机软件测试文件编制规范 ANSI/IEEE829:1983 6 GB/T 12504-1990 计算机软件质量保证计划规范 IEEE730: 7 GB/T 12505-1990 计算机软件配置管理计划规范 IEEE828: 8 GB/T 13502-1992 信息处理程序构造及其表示的约定 ISO8631:1989 9 GB/T 17544-1998 信息技术 软件包质量要求和测试 ISO/IEC12119:1994 10 GB/T 18234-2000 信息技术 CASE工具的评价与选择指南 ISO/IEC14102:1995 11 GB/T 18491.1-2001 信息技术 软件测量功能规模测量第1部分:概念定义 ISO/IEC14143-1:1998 12 GB/T 18492-2001 信息技术 系统及软件完整性级别 ISO/IEC15026:1998 13 GB/T 18493-2001 信息技术 软件生存周期过程指南 ISO/IEC15271:1998 14 GB/T 14079-1993 计算机软件维护指南 15 GB/T 14394-1993 计算机软件可靠性和维护性管理 15 16 GB/T 15532-1995 计算机软件单元测试
  • 16.
    四、软件测试基础与标准(2) 软件测试质量控制的参数 序号 控制参数 含义 应确认的问题 1 正确性 程序满足规格说明和完成用户需求程度 该做的做了吗? 2 可靠性 按要求的精确度实现其规定的功能程度 总能准确地工作吗? 3 高效率 程序实现其功能所需的计算资源量与快速程度 在目前硬件上快速吗? 4 完整性 软件及数据不受未授权人的控制程度 软件及数据安全吗? 5 易用性 学习,操作,准备输入数据,解释输入的工作量 很容易使用吗? 6 维护性 找到错误及排除错误所需的工作量 容易维护吗? 7 测试性 各测试阶段的用例投入力度与测试覆盖率BUG率 测试完善吗? 8 灵活性 对程序所做修改的工作量 容易修改与扩充吗? 9 移植性 在不同的环境下运行所需的修改量 在其他环境下能执行? 10 复用性 程序能被其他软件开发的利用程度 能重复使用吗? 11 功能性 完成用户需求,设置功能的完整程度 功能齐全吗? 12 安全性 抗网络攻击程度,抗病毒的特性程度 自我保护与自我恢复? 16
  • 17.
    五 、软件测试过程与管理(1) 软件测试过程: 开发过程中的质量决定了软件的质量,测试过程的质量 决定了软件测试的质量和有效性,软件测试过程的管理是 保证测试过程的质量,控制测试风险的重要活动。 软件评价过程的特性: 1)可重复性:同一评价人按同一评测标准对同一产品 的评价是同一可以接受的结果 2)可再现性:有不同评价人按同一评测标准对同一产 品的评价是同一可以接受的结果 3)公正性:评价不偏向任何特殊的结果 4)客观性:依据客观的事实,不带感情色彩和主观意 见 17
  • 18.
    测试生命周期 确立测试需求 测试规格说明 测试设计 测试执行 18 测试评估
  • 19.
    五 、软件测试过程与管理(3) 测试需求-内容 目的  测试项(对象)  测试类型  测试范围  测试过程  资源需求(硬件、软件、人力) 19
  • 20.
    五 、软件测试过程与管理(4) 测试需求-内容 文档的检验  进度安排  测试开始、结束准则  测试记彔  回归测试的方法  测试的评估 应有规确保所有 的测试结果都得  缺陷跟踪 到记彔 20
  • 21.
    五 、软件测试过程与管理(5) 测试需求-具体功能  业务功能  业务流程  数据库事务  域值合法性  用户界面  对象状态  窗口模式  菜单 21  标准尺寸的控件/文字
  • 22.
    五 、软件测试过程与管理(6) 测试需求-具体功能  性能  在少于3秒的情况下增加一个新顾客帐户  强度  当内存很低的情况下运行应用程序  为设计规定是 1,000,000 条记彔的系统增加 1,000,001条记彔 22
  • 23.
    五 、软件测试过程与管理(7) 测试需求-具体功能  配置  显示驱动的兼容性  网络连接  安装  新安装(典型安装、定制安装)  升级安装  网络下载 23
  • 24.
  • 25.
    五 、软件测试过程与管理(9) 测试规格说明  定义测试的范围与使用测试标准  开发文档的测试验收  软件功能列表  功能测试结果记彔  性能参数的设定  性能参数结果记彔  缺陷记彔及处理 25
  • 26.
    五 、软件测试过程与管理(10) 测试设计  确定测试方案  测试依据:相关标准和文档  测试方法:白盒、黑盒、文档审查  测试工具:确定测试工具的使用  测试结果:问题属性、测试结论约定 26
  • 27.
  • 28.
    五 、软件测试过程与管理(12) 测试执行  目标  执行测试  查看测试结果  研究并组织对测试结果进行评估  记彔问题  输入  测试过程和测试用例  输出  测试日志 28  问题报告
  • 29.
    五 、软件测试过程与管理(13) 测试执行-记录测试结果 测试日志信息  执行测试过程  评估意外的结果  记彔问题 29
  • 30.
    五 、软件测试过程与管理(13) 测试执行-缺陷跟踪  记彔测试事件或用户问题  分析原因,定位错误  进行软件修改  修改结果的跟踪 30
  • 31.
    五 、软件测试过程与管理(14) 测试执行-问题分析 问题分类  类型:根据问题自然属性划分的缺陷种类  严重程度:指因问题引起的故障对软件产品的影 响程度  优先级:问题必须被修复的紧急程度  状态:跟踪问题修复过程的进展情况  起源:问题引起的故障或事件第一次被检测到的 阶段  来源:引起问题的起因  根源:发生问题的根本因素 31
  • 32.
    五 、软件测试过程与管理(14) 测试执行-问题分析 问题类型  功能  用户界面  边界值  初始化  计算  内存相关  硬件相关  文档 32
  • 33.
    五 、软件测试过程与管理(14) 测试执行-问题分析 问题严重程度  5级:灾难性的-系统崩溃、数据被破坏  4级:很严重的-数据被破坏  3级:严重的-特性不能运行,无法替代  2级:中等的-特性不能运行,可替代  1级:烦恼的-提示不正确,报警不确切  0级:轻微的-表面化的错误,拼写错等 33
  • 34.
    五 、软件测试过程与管理(14) 测试执行-问题分析 问题修改优先级  必需立即修改  排队等候修改  可在方便时修改 34
  • 35.
    五 、软件测试过程与管理(14) 测试执行-问题分析 问题状态  已提交  确认,等待处理  拒绝,不需要修复或不是错误  被修复  确认被修复,将其关闭 35
  • 36.
    五 、软件测试过程与管理(14) 测试执行-问题分析 问题根源  目标,如:错误的范围,误解了目标,超越能力 的目标等  过程、工具和方法,如:无效的需求收集过程, 过时的风险管理过程,不适用的项目管理方法, 没有估算规程,无效的变更控制过程等  人员,如:项目团队职责交叉,缺乏培训。没有 经验的项目团队,缺乏士气和动机不纯等  缺乏组织和通讯,如:缺乏用户参与,职责不明 36 确,管理失败等
  • 37.
    五 、软件测试过程与管理(14) 测试执行-回归测试的范围 回归测试的范围  测试全部用例  问题修改后的检验  测试高风险模块/系统  基于操作剖面选择测试 37
  • 38.
    五 、软件测试过程与管理(14) 测试评估-概述  目标  提交测试过程的衡量标准  产生缺陷报告和测试覆盖的总结报告  输入  测试日志  问题报告  输出  测试覆盖程度 38  问题分析报告
  • 39.
    五 、软件测试过程与管理(14) 测试评估-测试覆盖率 基于覆盖策略的系统测试  验证所有需求的完成情况  验证每行代码的执行情况  基于测试需求的测试过程  覆盖功能和设计的需求  验证一个测试需求对应的测试过程 39
  • 40.
    五 、软件测试过程与管理(14) 测试评估-缺陷分析 软件质量  问题分析是提供验证软件质量的手段之一  测试需求的覆盖程度决定了软件测试的质量如何  实例报告  问题分配  问题趋向  问题状态  遗留问题对软件的影响 40
  • 41.
  • 42.
  • 43.
    六 、软件测试技术与工具(1) 软件自动化测试工具 一、单元测试 代码走查工具Logiscope Logiscope 是一组嵌入式软件测试工具集。它贯穿于软件开发、 代码评审、单元/集成测试、系统测试、以及软件维护阶段。它 面向源代码进行工作。Logiscope针对编码、测试和维护。因 此,Logiscope的重点是帮助代码评审(Review )。 Logiscope对软件的分析,采用基于国际间使用的度量方法 (Halstead、McCabe等)的质量模型,以及从多家公司收集 的编程规则集,可以从软件的编程规则,静态特征等多个方面, 量化地定义质量模型,并检查、评估软件质量。 2、功能测试工具C++Test C++Test是一个C/C++单元测试工具,自动测试任何C/C++类、 函数或部件。C++Test能够自动测试代码构造(白盒测试)、 测试代码的功能性(黑盒测试)和维护代码的完整性(回归测 试)。通过将C++Test集成到开发过程中,能够有效地防止软 件错误,提高代码的稳定性。 43
  • 44.
    六 、软件测试技术与工具(2) 软件自动化测试工具 性能测试工具Insure++ 检测众多不同类型的难以捉摸的错误,如内存破坏、内存泄露、 内存分配错误、变量初始化错误、变量定义冲突、指针错误、 库错误、逻辑错误和算法错误等等 精确定位引起内存泄露的代码位置,不仅是泄露的内存位置 支持所有流行的编译器,如cc、gcc和acc等等 能够检查第三方库和函数以及非C语言所写的模块接口 允许您在快速有选择的检查和完全插装检查之间进行切换 发现大量的C++错误 二、系统测试 1、功能测试工具WinRunner WinRunner是一种企业级的用于检验应用程序是否如期运行的 功能性测试工具。通过自动捕获,检测,和重复用户交互的操 作, WinRunner 能够辨认缺陷并且确保那些跨越多个应用程 序和数据库的业务流程在初次发布就能避免出现故障,并且保 持长期可靠运行。 2、性能测试工具SilkPerformer增强版 SilkPerformer V™是一种在工业领域最高级的企业级负载测试 44工具。它可以模仿成千上万的用户在多协议和多计算的环境下 工作。不管企业电子商务应用的规模大小及其复杂性,通过
  • 45.
    六 、软件测试技术与工具(3) 什么是自动化压力测试?  使用虚拟用户替代测试人员  在单一计算机上运行多个虚拟用户  从集中的一台控制机控制虚拟用户 Vuser Vuser Vuser Vuser 45
  • 46.
    六 、软件测试技术与工具(4) 优秀的性能测试只有工具能做到… • 提供丰富的产生压力的手段 • 可以对后台系统进行实时监控 • 可以对压力数据分析,快速定位系统瓶颈 LoadRunner 性能监控 46 集中控制 虚拟用户 Internet Web 服务器 应用服务器 数据库服务器
  • 47.
    六 、软件测试技术与工具(5) 用户关心的性能测试--- 时间及易用性  上线前最后时刻进行,时间紧、压 力大 工作内容 工作量 所需时间 彔制脚本 20个 一个小时 修改脚本 20个 一个小时 运行测试 5轮 一天半 分析结果,提交 一天 47 报告
  • 48.
    六 、软件测试技术与工具(5) 用户关心的性能测试--- 分析优化能力  性能测试的终极目标并非压垮系统!  自动关联分析  Root Cause  瓶颈分析建议 48
  • 49.