资源描述
软件测试
课程教学内容:
l 软件测试基本知识
l 静态测试技术
l 动态测试技术:这一章我们将学习白盒测试和黑盒测试方法
l 单元测试 l 集成测试 l 系统测试 l 验收测试
l 面向对象软件测试:这一章我们将学习到面向对象测试的基本方法和策略
l 专用应用系统测试:将主要学习 GUI 测试,WEB 应用系统测试以及数据库测试;
l 测试管理
第一章 软件测试基础知识
教学内容:
l 软件测试的必要性
l 软件测试和软件质量的基本概念
l 软件测试现状与发展
l 软件测试的目的和原则
l 软件测试分类 l 测试完成标准 l 软件测试过程
课型:新授课
教时:4 课时
教学重点:
1. 软件测试的定义
2. 软件测试的原则 3. 软件测试的分类 4. 黑盒测试的定义 5. 白盒测试的定义
第一节 软件测试的必要性
1 案例说明:
1.1 迪斯尼的软件问题
1.2 1994 年 Intel 芯片的浮点除法问题
1.3 1999 年发生的火星探测飞船的坠毁
1.4 Therac-25(特瓦克-25)事件
1.5 爱国者导弹防御系统软件故障
2 导致软件缺陷的原因
2.1 有许多因素会导致软件缺陷,主观原因是人类在从事软件开发过程中容易犯错误
2.2 开发过程管理规范性、开发技术、软件的复杂性、开发的周期长短及个人能力等
因素也会导致软件缺陷的产生
说明:软件测试是发现并纠正软件缺陷极其重要的活动,作为一名软件工程专业的学
生,非常有必要掌握基本的测试理论和技术。
3 软件测试在软件开发、维护和使用中的角色
1/7
软件测试
3.1 在软件开发过程中,
软件测试是质量保证的一个环节, 有助于发现各阶段的缺陷,
避免缺陷进入下一阶段,对软件的质量起到关键作用
3.2
3.3
在维护阶段,软件测试主要发现由于修改或功能增强而导致的软件缺陷
在使用过程中,可能由于硬件升级、运行环境变化及软件退役等原因出现各种问 题,软件测试主要用于找到这些问题所在,或者通过软件测试模拟或再现可能出
现的问题
第二节 软件测试和软件质量的基本概念
1. 软件测试的定义
1.1 在规定条件下对软件进行操作,以发现错误,对软件质量进行评估
1.2 软件测试有两个基本职责,即验证和确认。
2 软件质量的定义
2.1 在规定条件下使用时,软件产品满足明确或隐含要求的能力,分为内部质量、外
部质量和使用质量
2.2 内部质量指软件产品本身的质量
2.3 外部质量指软件产品作为计算机系统的一个组成部分,使得系统的行为能满足明
确和隐含需要的能力
2.4 使用质量(quality in use)是基于用户观点的软件产品用于指定的环境和使用周
境(context)时的质量
3 错误 error,缺陷 defect,故障 fault,失效 failure ,bug
3.1 错误、缺陷、故障:计算机程序中不正确的步骤、过程或数据定义
3.2 失效:产品执行所要求功能的能力的终止或它在先前规定的限度内无力执行所要
求的功能
3.3 错误和缺陷是客观存在的东西,故障是执行错误和缺陷的结果,故障的出现将导
致失效,Bug 是错误的口语化表示
3.4 BUG:(小错误,缺陷,不足,过失 ¼) 一个计算机 bug 指在计算机程序中存在
的一个错误(error) 、缺陷(flaw) 疏忽(mistake)或者故障(fault)
、 ,这些 bug
使程序无法正确的运行。Bug 产生于程序的源代码或者程序设计阶段的疏忽或者
错误。
4 确认与验证
4.1 确认 validation:
通过检查和提供客观证据来证实针对某一特定预期用途的需求已经得到满足
——在设计和开发中,确认涉及到检查某个产品以确定是否符合用户需要的过程
确认:我们在构造正确的产品吗?
Validation:Are we building the right product?
4.2 验证 verification:
通过检查和提供客观证据来证实规定需求已经得到满足
——在设计和开发中,验证是指对某项规定活动的结果进行检查的过程,以确定
该活动对规定需求的符合情况
验证:我们在正确地构造产品吗?
Verification:Are we building the product right?
5 软件测试和软件质量保证的区别
5.1 软件测试只是软件质量保证工作中的一个环节
5.2 软件质量保证和软件测试是软件质量工程的两个不同层面的工作
2/7
5.3
5.4
软件测试
软件质量保证主要着眼于软件开发活动中的过程、步骤和产物(工作产品) ,而不
是对软件本身进行剖析、找出缺陷和评估
例如:食品的质量保证是构建食品安全体系,从食品原料到企业内部生产、产品 流通到最终消费者所有环节都要建立严格的质量控制体系,严把质量关,才能确
保食品安全,关注的是食品从原材料生产到最终销售的一个过程。
软件测试虽然也与开发过程紧密相关,但关心的不是过程的活动,而是对过程的
产物或开发出的软件工作产品进行剖析
例如:在食品的质量保证中,软件测试类似企业内部对每个生产批次的食品的抽
查检验,关注的是食品本身的质量问题。
第三节 软件测试现状与发展
1.
2
现状:
1.1 20 世纪 50 年代,软件测试与调试加以区分,成为发现软件缺陷的重要活动
1.2 20 世纪 80 年代初期,"软件质量"被广大业者重视,软件测试不单纯是发现错误
的过程,而且包含对软件质量的评价
1.3 20 世纪 90 年代,由于软件的复杂性提高、对软件质量的要求越来越严格、软件
测试技术的发展,出现各种测试工具
1.4 近 20 年来,测试专家总结出了一些测试模型,例如,V 模型、W 模型等,在测
试过程改进方面提出了 TMM(Testing Maturity Model 测试成熟度模型)的概念
发展趋势
2.1 软件测试不仅是软件开发的一个活动,而且应贯穿整个软件开发的全过程
2.2 在软件开发过程中软件架构师、开发工程师、QA 人员、测试工程师将进行更好
的融合,测试与软件的分析、设计、编码等工作的集成度越来越高
2.3 软件测试工程师在软件开发过程中的地位越来越重要,测试职业得到了充分的尊
重
2.4 软件测试工具在软件测试中起到重要的作用,测试工具能与其他开发工具做到很
好的集成,达到不同工具间的信息数据共享
2.5 软件测试外包服务将快速增长,将成为全球化的一种趋势
第四节 软件测试的目的和原则
1. 目的
1.1 软件测试的目的是通过软件测试而发现软件缺陷,并通过软件测试来确保软件产
品的质量
1.2 测试并不仅仅是为了要找出缺陷,还可用于对软件质量进行评估
1.3 通过分析缺陷产生的原因和缺陷的分布特征,可以帮助项目管理者或测试人员改
进其工作
1.4 服务于测试目标的规则
1.4.1 软件测试是为了发现错误而执行程序的过程
1.4.2 测试是为了证明程序有错,而不是证明程序无错
1.4.3 一个好的测试用例在于它能发现至今未发现的错误 1.4.4 一个成功的测试是发现了至今未发现的错误的测试
2 原则
2.1 所有的软件测试都应追溯到用户需求
3/7
展开阅读全文