第一章-软件测试详解资料
2020/9/18
12
测试工程师
◦ 职能包括:设计测试用例、运行测试用例、分析测试用例 执行结果、向开发人员或项目主管提交测试报告
测试主管
◦ 职能包括:指导测试工程师的工作、制定测试策略和测试 流程、与项目主管沟通
2020/9/18
13
软件测试及其定位
全景图
开发流程
业务 分析
需求 定义
◦ 通用软件:操作系统(如Windows、Linux、Macintosh 等)、数据库(如Oracle、MySQL等)、编程语言(如 C++、Java、C#、Python等)
◦ 特定软件:银行系统、嵌入式系统(如Android)、RFID 系统、Web服务、物联网、云计算等
2020/9/18
5
规格设计说明书 软件产品模型
软件测试是为了发现错误而执行一个程序或者系统 的过程。[1979年]
◦ 强调软件测试的目的是为了发现缺陷,而不是为了证明软 件没有缺陷
2020/9/18
9
只强调寻找错误,容易使测试人员忽视用户的基本 需求
容易造成测试人员和开发人员的对立
忽视了静态测试的重要性,如软件需求评审、软件 设计评审和软件代码静态检查
2020/9/18
ห้องสมุดไป่ตู้
10
软件测试是由验证和确认活动构成的整体
◦ 验证(Verification)是检验软件是否已正确的实现了产 品规格书所定义的系统功能和特性。相当于以软件产品设 计规格说明书为标准进行软件测试的活动
◦ 确认(Validation)是确认所开发的软件是否满足用户真 正需求的活动。主要通过各种软件评审活动来实现,包括 让用户参加评审和测试活动
由于软件是人脑的高度智力化的体现,不同于其他科技和生产领域,因此软件 与生俱来就是存在缺陷和故障的。
如何防止和减少这些存在的缺陷和故障,答案是进行软件测试。测试是最有效 的排除和防止软件缺陷和故障的手段,并由此促使了软件测试理论与技术实践的快 速发展,新的测试理论、测试方法、测试工具不断涌现。与此同时,软件测试技术 也同步完善和发展起来。
软件研发队伍中主要有开发人员和测试人员,而项 目经理、软件配置等方面人员很少
QA:DEV
2:1 1:1 1:2 1 : 10
开发人员
其他
测试人员
1979年,Glenford Myers的《软件测试艺术》的定义:测 试是为发现错误而执行的一个程序或者系统的过程 。
1983年,Bill Hetzel在《软件测试完全指南》中指出:测 试是以评价一个程序或者系统属性为目标的任何一种活动 ,测试是对软件质量的度量。
测试流程
需求可测 试性评审
用户沟通
测试分析 和设计
测试策略
架构 设计
详细 设计
编程和单 元测试
系统 测试
发布/ 部署
覆盖软件开发全过程 单元测试
部署验证 计划
集成测试
功能测试计划、设 计及其评审
测试脚本 开发
非功能测 测试环境 测试具体
试计划
搭建
脚本
缺陷跟踪
测试执行
测试结果 分析
产品质量 评估
测试报告
2020/9/18
7
软件测试可以为程序能够按照预期设想行为运行而 建立足够的信心 [1973年]
软件测试是一系列活动,这些活动是为了评估一个 程序或软件系统的特性或能力,并确定是否达到了 预期结果 [1983年]
2020/9/18
8
与B. Hetzel博士的观点不同, G.J. Myers采用逆 向思维提出了自己的观点
本章主要介绍以下内容:
软件测试的背景 软件测试的定义 软件测试的目的 软件测试的分类 软件测试的对象 软件测试的原则 软件测试的模型 软件测试的流程
随着计算机技术的迅速发展,软件系统的规模与复杂性与日俱增,软件的成本、 软件中存在的缺陷和故障造成的各类损失也大大增加,甚至带来灾难性的后果。软 件质量问题已成为所有使用软件和开发软件的人们的关注的焦点。
Rick和 Stefan在《系统的软件测试》一书中对软件测试的 定义: 测试是为了度量和提高被测软件的质量,对测试软件进 行工程设计、实施和维护的整个生命周期过程。
狭义观点
G.J.Myers所给出了测试定义——“程序测试是 为了发现错误而执行程序的过程” 。
瀑布模型
广义观点
将测试延伸到需求评审、设计审查活动中去。
由静态测试和动态测试构成一个全过程的
、完整的软件测试
验证软件是“工作的”,以正向思维,针对
软件系统的所有功能点,逐个验证其正确性。
证明软件是“不工作的”,以反向思维方式
,不断思考开发人员理解的误区、不良的习惯、程 序代码的边界、无效数据的输入以及系统的弱点, 试图破坏系统、摧毁系统,目标就是发现系统中各 种各样的问题。
2020/9/18
11
从风险和经济的角度
◦ 软件测试对风险不断评估,引导软件开发工作,进而将最 终发布的软件所存在的风险降到最低。
◦ 根据Pareto原则,将用户常用的功能进行完全充分的测试 ◦ 参考Boehm著作 《软件工程经济》
又叫二八原则,由意大利经济学 家Pareto提出,原因和结果、
投入和产出、努力和报酬之间本 来存在着无法解释的不平衡。
◦ 如UML模型:包括类图、活动图等
软件产品源代码
2020/9/18
6
早期软件开发等同于软件编码, 不存在软件工程概念,也不存在 明确的人员分工
1972年,Bill Hetzel博士(代表 作《The Complete Guide to Software Testing》)组织了第
一次关于软件测试的正式会议, 标志着该学科的诞生
今天,在软件比较发达的国家,软件测试已经成为一个独立的产业,软件公司纷
纷建立独立的测试队伍研究测试技术并开展测试工作。中国的软件测试起步较晚, 但随着我国软件产业的蓬勃发展以及人们对软件质量的重视,软件测试正在成为一 个新兴的产业。
近些年来逐渐受到产业界、教育界和学术界的关注
◦ 产业界:软件企业逐渐重视软件测试工作,测试人员地位 和待遇逐渐提高,测试工作复杂度日益提高
◦ 教育界:大学陆续开设软件测试课程、软件测试相关专业 书籍逐渐增多、培训机构逐渐开设与软件测试相关的培训 课程、软件水平考试开设了软件评测师级别(中级资格)
◦ 学术界:软件测试是目前软件工程研究领域中的研究热点
2020/9/18
4
程序+文档的集合 [维基百科定义]
软件在我们日常生活中无处不在