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