软件测试课件第1章测试综述
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
▪ 针对结构 :在表中查找“名字 =Bill”,并打印
▪ 表中有Bill ▪ 表中没有Bill ▪ 表的大小 ▪ Bill在表中的位置 ▪ 表中的其他名字是否有关?
“不充分的测试是愚蠢的, 过度的测试也是一种罪孽”
原则二:测试工作具有创造性,需要经验 积累
测试是破坏性工作?重复性的工作? 测试需要有洞察力、广泛的知识、测试经验和正确的方法
▪ 软件测试技术
▪ 软件质量管理与控制
测试技术:如何做测试?
▪ 如何选择数据 ▪ 如何执行操作 ▪ 如何管理测试
数据
结果
专项测试技术
▪ Web应用测试 ▪ 用户界面测试 ▪ 性能测试 ▪ 自动化测试 ▪ 安全性测试
课程的目标
▪ 完成测试计划 ▪ 设计测试数据 ▪ 评估测试结果 ▪ 开发测试工具
S ▪ 没有测试的已描述的行为(2,5)
P
2
6
▪ 测试的已描述的行为(1,4) ▪ 未描述行为的测试用例(3,7)
Leabharlann Baidu
5
1
4
3
▪ 没有测试的程序行为(2,6)
7
T
▪ 经过测试的程序行为(1,3)
▪ 未经过实现的行为(4,7)
1.3 测试的起源与发展
测试的定义 – Glenford Myers (1979): “Testing is the process
测试的发展
▪ 经验阶段 ▪ 理论总结阶段 ▪ 测试技术与测试工
具发展阶段
1.4 测试的生命周期
在软件开发生命周期中,软件是通过迭代来 不断加以完善的。
在这种环境中,对于每个作为测试目标的工 作版本,测试的生命周期还都必须具有一种 迭代方法。
Rational 2001定义
测试的目的在于:
Finding and documenting defects in software quality.
0
Bugs Per Area
50
100
150
200
▪ 对于j的65536个可能的值中,只有六个可能 产生错误:-30001,-30000,-1,0,29999, 30000。
例3:测试x,y,z是否相等 if ((x+y+z)/3==x) print”x,y,z are equal in value” else print”x,y,z are unequal”
测试活动 5—评估阶段
测试结果的评估
错误数据统计 信息比较:将测试
结果与期望输出进 行比较
Bug Report Summary
SQA Bug Status
17%
16%
67%
Resolved Dev Resolved Unresolved
Bug Report Summary
600 500 400 300 200 100
Test Case1: x=1,y=2,z=3 Test Case2: x=y=z=2 Test Case3: x=2,y=1,z=3
4. 绝对局限性
▪ 程序测试可以表明缺陷的存在,但决不能证明没有缺 陷。
▪ 测试必须用需求作为参考点。如果需求是错误的或不 完全的,就会产生假的测试。
▪ 基于实现的测试并不能发现遗漏,正如缺少的代码不 能被测试一样。
▪ Sample1 ▪ Sample2
通过维恩图理解测试 ▪ 所描述的行为与所实现的程序行为
规格程说序明 程序 ((预观期察的的))(观察的)
▪ 测试就是确定既被描述又被实现的程序行为, 以及它们之间的差距
已描述、已实现和经过测试的行为
▪ S:规格说明描述的行为
▪ P:程序实现的行为
▪ T:测试用例检测到的行为
of executing a program or system with the intent of finding errors.” – Bill Hetzel (1983): “Testing is any activity aimed at evaluating an attribute of a program or system. Testing is the measurement of software quality.” – Craig & Jaskiel (2002): “Testing is a concurrent lifecycle process of engineering, using and maintaining testware in order to measure and improve the quality of the software being tested.”
0
Alpha1 Alpha2 Alpha3 Alpha4 Alpha5 Beta1 Beta2 Beta3 Beta4
Bug Found
Bug Resolved
View Settings Scanner Recognition Memory
Locate Install
Help Fmt Retn
File Edit Cross P
测试活动 1—计划阶段
安排进度 分配资源、人员 确定测试的起始
点和结束点
测试何时停止
1. 当时间用光时 2. 当继续测试没有产生新的失效时 3. 当继续测试没有发现新缺陷时 4. 当无法考虑新测试用例时 5. 当达到所要求的覆盖时 6. 当所有缺陷都已经清楚时
测试活动 2 —设计阶段
设计测试流程
int i=0; i<n; ++i
3. 故障敏感性和巧合正确性 代码对测试包隐藏故障的能力成为
故障敏感性。 错误的代码执行时,却产生了正确
的结果,得到了巧合性。
例1:x+x 是 X*X 的错误代码 当x=2 时,隐藏了错误
例2:int scale (int j) { j=j-1; //should be j=j+1 j=j/30000; return j; }
▪ 从来都不能确信一个正在测试的系统是正确的,测试 设计中的错误,可能产生假的测试结果。
▪ 得到一个预测是困难的,有的甚至是不可能的。
测试能完成什么
▪ 首要任务就是发现错 误
▪ 对于给定的测试包, 说明被测试系统是符 合规约所描述的需求。
1.2 基本定义
▪ 错误(Error):Bug ▪ 缺陷(Fault):是错误的表现 ▪ 失效(failure):当缺陷执行时会发生失效 ▪ 事故(incident):系统在制定范围内执行所需
Proving the validity of the assumptions made in design and requirement specifications through concrete demonstration.
Validating the software product functions as designed.
软件测试不充分造成的失败 ▪ 多数软件存在漏洞
▪ 病毒入侵
▪ 黑客攻击
软件测试不充分造成的失败 ▪ 大型系统的性能问题
软件测试不充分造成的失败 ▪ 系统的可靠性问题
测试的目标
软件可信性
正确性
可靠性
可用性
安全性
完整性
可控性
测试人员的职责
▪ 测试设计与管理 ▪ 测试工具开发 ▪ 测试执行者
课程主要内容
▪ 好的测试用例的3个特性: 1.检测软件质量的有效性,是否能发现缺 陷,或至少可能发现缺陷;
2.经济性,可仿效的测试用例可以测试很 多内容,测试用例的执行、分析和调试 是否经济
3.测试用例的可修改性,每次软件修改后 对测试用例的维护成本
Design Test Cases
▪ Test Case ID ▪ Test Description ▪ Revision History ▪ Function to be tested ▪ Environment ▪ Test Setup ▪ Test Execution (Test Procedure) ▪ Expected Results ▪ Actual Results
功能时表现的无能
▪ 测试脚本:一个用过程脚本语言编写 的程序,该程序用来执行一个测试包
▪ 测试包:测试实例的集合 ▪ 测试装置:由测试驱动器和其他支持
测试执行的工具组成的系统。
▪ 测试用例(Test Case):由输入数据和 预期结果组成 ▪ 输入数据:数据、文件或操作序列 ▪ 预期结果:后果和实际输出
第一章 软件测试综述
本章主要内容
▪ 测试的原则 ▪ 基本定义 ▪ 测试的发展 ▪ 测试的生命周期
1.1 测试的原则
原则一:穷尽测试是不可能的
▪ 针对输入 :如果有三个数作为输入。。。
每个数的取值个数:264 总的取值:264 x 264 x 264 =2192 如果每次运算之需要1ms,那么也需要。。。
原则三:测试旨在防止错误的发生
原则四:测试是有风险的
原则五:测试要有计划性
测试计划 测试设计
原则六:测试要有独立性
测试部门 测试经理 测试工程师
测试的局限
1. 输入/状态空间 2. 执行顺序
例:for (int i=0; i<n; ++i) { if ( a.get(i)==b.get(i)) x[i]=x[i]+100; else x[i]=x[i]/2; }
➢测试过程 ➢测试类型
设计测试用例
➢数据 ➢文件 ➢操作序列
给出预期结果
测试成本曲线
未发现的缺陷数
测试成本
最佳测试点
不足测试
过度测试
测试的程度
测试活动 3—开发阶段
准备测试脚本
测试数据自动生成 测试流程自动化
测试活动 4—执行阶段
执行测试用例 ➢ 对于手动测试:
按事先准备好的手工过程进行测试,测试 者输入数据、观察输出、记录发现的问题。 ➢ 对于自动测试: 启动测试工具,执行测试用例;
Validating that the requirements have been implemented appropriately.
测试的生命周期
计划
标志测试条件(确定测试什么)和测试的优先级
设计
设计测试用例(确定怎么测试)
开发
测试开发(设计脚本、数据等)
执行
执行测试用例
评估
将测试结果与期 望结果进行比较
软件测试 Software Testing
▪ 软件测试就像看病,需要丰富的经验
作业及考试
▪ 平时作业 50%
▪ 课堂测验:3次,5分/次 ▪ 撰写文档:1份,8分 ▪ 编写程序:3次,6+10+11=27分
文档和程序:分组提交,2~3人/组
▪ 期末考试 50%
引言:软件测试不充分造成的失败 ▪ 功能错误