510 likes | 611 Vues
软 件 测 试. 东北大学软件学院. 教师简介. 姓名: 黄利萍 工作单位:东北大学软件学院 联系电话: 83680497 (办公室), 13889132972 邮件地址: huanglp98@163.com 办公室: 东北大学图书馆 3 楼 软件学院 007#. 东北大学软件学院. 参考书. 教材:
E N D
软 件 测 试 东北大学软件学院
教师简介 姓名: 黄利萍 工作单位:东北大学软件学院 联系电话:83680497(办公室),13889132972 邮件地址:huanglp98@163.com 办公室: 东北大学图书馆3楼 软件学院007# 东北大学软件学院
参考书 • 教材: • 软件测试(原书第2版) Software Testing A Craftsman's Approach(Second Edition) , [美]Paul C·Jorgensen著 韩柯等译 ,机械工业出版社 2003年7月,ISBN 7-111-12166-X/TP.2676 • 参考书: • 实用软件工程 , 郑人杰 殷人昆 陶永雷著,清华大学出版社 • 凌波微步—软件开发警戒案例集,王咏刚 周虹 著,清华大学出版社 东北大学软件学院
课程性质 • 专业课 • 必修课 东北大学软件学院
成绩 • 平时 20% • 实验 10% • 期末考试 70% 东北大学软件学院
序 言 东北大学软件学院
为什么开软件测试这门课程? • 软件规模的日益庞大和复杂; • 软件支撑各行各业的核心业务; • 软件质量要求日益提高; • 软件测试作为保证软件质量的最直接最重要的一种手段,在软件开发过程中日益重要; • 软件测试工程师的需求量日益增加; 东北大学软件学院
第一道概率题 知道“萨姆”、“霍克”、“爱国者”吗?它们是世界上最著名的地对空导弹。这里有一种“爱飞者”地对空导弹,它的单发命中率是70%,请计算一下“爱飞者”地对空导弹3发齐射的命中率是多少? 东北大学软件学院
第一道概率题解答 1发导弹脱靶的可能性是: 1 – 70% = 30% 3发导弹全部脱靶的可能性是: 30% X 30% X 30% = 2.7% 3发导弹中,至少有1发导弹命中目标的概率是: 1 - ( 1 – 70% )3 = 1 – 2.7% = 97.3% 东北大学软件学院
第二道概率题 世界著名的“飞吧飞吧”宇航工业公司生产的“飞吧747-400”大型宽体客机由100万个零部件组装而成,其中每个零部件的合格率都能达到99.9999%,请问这种客机的合格率是多少? 东北大学软件学院
第二道概率题解答 每个零部件的合格率是99.9999%,那整机合格率就是: (99.9999%)1000000 = 36.79% 如果每个零部件的合格率是99.999%,那整机合格率是: (99.999%)1000000 = 0.045% 东北大学软件学院
哪种概率模型更符合软件开发过程? 1.两道概率题有什么区别? 第一道概率题描述的问题模型是只要有一发导弹击中目标就算完成任务。 第二道概率题描述的问题模型是只有所有的零部件都合格了,整机才合格。 2.哪种概率模型更符合软件开发过程? 第二种模型更符合软件开发过程。 东北大学软件学院
软件合格率 假设一个优秀的程序员写出的“代码行”合格率可以达到99%,如果这个程序员开发的软件由1万行代码,那此软件的合格率是多少? (99%)10000 = 2.25 X 10 -44 东北大学软件学院
第二道概率题的解决方法 第二道概率题所描述的合格率低的问题不是在于零部件合格率的高低,而是在于工作步骤过于简单。先生产零件,然后把所有零件组装起来,在组装的过程中没有进行必要的质量控制。 因此几乎所有飞机和汽车等制造商都在整个生产过程中引入各种检验、测量、监控方法,从零件、部件、模块、子系统到完整的产品。 东北大学软件学院
软件开发过程中的质量保证 • 在软件开发过程中通常有两种手段来保证软件质量: • 过程保证--SQA; • 产品保证--软件测试; 东北大学软件学院
第一章 测试概述 … 东北大学软件学院
计划 瀑布模型 需求分析 设计 编码 测试 维护 东北大学软件学院
什么是软件测试? 软件测试是为了发现错误而执行程序的过程。 广义上讲,在软件开发过程中的所有评审、确认、检验等活动都是软件测试。 … 软件测试与软件使用是不一样的。 东北大学软件学院
为什么要进行测试? SELECT last_name, salary, 12*(salary+10) FROM employees; • 对质量或可接受性做出判断; • 发现问题; 测试不能表明软件中不存在错误。 … 东北大学软件学院
软件测试的重要性 软件开发成本分析: SELECT last_name, salary, 12*(salary+10) FROM employees; … 东北大学软件学院
术语解释 • 错误(error)-- 同义词是过错(mistake),人们在编写代码时会出现过错,这种过错叫做bug。 • 缺陷(fault)-- 缺陷是错误的结果。分为过错缺陷和遗漏缺陷。 • 失效(failure)-- 当缺陷执行时会发生失效。 • 事故(incident)-- 当出现失效时,可能会也可能不会呈现给用户(或客户或测试人员)。 • 测试(test)-- 测试显然要处理错误、缺陷、失效和事故。测试是采用测试用例执行软件的活动。测试有两个显著目标:找出失效,或演示正确的执行。 • 测试用例(test case)-- 测试用例有一个标识,并与程序行为有关。测试用例还有一组输入和一个预期输出表。 … … 东北大学软件学院
软件开发的主要环节 东北大学软件学院
分析员的设想 东北大学软件学院
分析员的描述 东北大学软件学院
完成的设计 东北大学软件学院
程序员做出的产品 东北大学软件学院
用户安装后的结果 东北大学软件学院
用户的原始需求 东北大学软件学院
需求的变迁 东北大学软件学院
测试生命周期模型 错误 错误 修复 需求规 格说明 缺陷解决 错误 缺陷 设计 缺陷隔离 错误 缺陷 编码 缺陷分类 引入程序错误阶段 清除程序错误阶段 缺陷 测试 找出程序错误阶段 东北大学软件学院
测试计划 测试用例开发 运行测试用例 评估测试结果 测试过程细分的步骤: 测试子过程 东北大学软件学院
测试用例 软件测试的本质是针对要测试的内容确定一组测试用例。 东北大学软件学院
测试用例的组成 标准: 输入: 前提和由某种测试方法所标识的实际输入; 预期输出:后果和实际输出; 测试结果:实际执行结果是否与预期结果一致。 附加: 操作过程:一个测试用例中的操作步骤; 验证过程: 验证测试用例是否通过的操作步骤; SELECT last_name AS name, commission_pct comm FROM employees; … … 东北大学软件学院
典型的测试用例信息 测试用例ID 目的 前提 输入 预期输出 后果 执行历史 日期 结果 版本 执行人 东北大学软件学院
通过维恩图理解测试 程序行为 S P 规格说明 (预期的) 程序 (观察的) 东北大学软件学院
通过维恩图理解测试 规格说明 (预期的) 程序 (观察的) S P 5 2 6 1 3 4 8 7 T 测试用例 (已检验) 东北大学软件学院
结论 • 因此测试最主要的是使S、P、T都相交的区域,即区域1尽可能的大。 SELECT last_name ||' is a '||job_id AS "Employee Details" FROM employees; … 东北大学软件学院
设计测试用例 • 功能性测试,又叫黑盒测试; • 结构性测试,又叫白盒测试; … 东北大学软件学院
什么是功能性测试? 功能性测试的基本观点是,任何程序都可以看作是将从输入定义域取值映射到输出值域的函数。 输入 输出 东北大学软件学院
功能性测试的依据 采用功能性测试方法设计测试用例的唯一依据是软件的规格说明。 两个优点: 1.功能性测试与软件实现没有关系,所以如果实现发生变化,测试用例仍然有用; 2. 测试用例开发可以与实现并行进行; 东北大学软件学院
功能性测试用例设计结果 规格说明 程序 规格说明 程序 S P S P T T 测试用例 (方法A) 测试用例 (方法B) 东北大学软件学院
功能性测试的主流方法 • 边界值分析; • 健壮性分析; • 最坏情况分析; • 特殊值测试; • 输入等价类; • 输出等价类; • 基于决策树的测试; 东北大学软件学院
什么是结构性测试? 结构性测试又叫做白盒测试,或透明盒测试。 输入 输出 A E D B F C 东北大学软件学院
结构性测试的依据? 结构性测试是根据程序实现来设计测试用例。 此方法把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。 通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。 东北大学软件学院
结构性测试用例设计结果 规格说明 程序 规格说明 程序 S P S P T T 测试用例 (方法A) 测试用例 (方法B) 东北大学软件学院
功能性测试和结构性测试的比较 功能性测试只利用规格说明来设计测试用例; 结构性测试使用程序源代码作为设计用例的基础; 因此: 1 如果所有已描述行为都没有被实现,则结构性测试永远也不会认识到这一点; 2 如果程序实现了没有被描述的行为,功能性测试永远不会揭示这一点; 东北大学软件学院
测试用例来源 程序行为 S P 功能性 (黑盒) 确定置信度 结构性 (白盒) 查找缺陷 东北大学软件学院
错误与缺陷分类 • 缺陷分类的方法: • 以出现相应错误的开发阶段来划分; • 以相应失效产生的后果来划分; • 以解决难度来划分; • 以不解决会产生的风险来划分; 东北大学软件学院
轻微 词语拼写错误 • 2. 中等 误导或重复信息 • 3. 使人不悦 被截断的名称 • 4. 影响使用 有些交易没有处理 • 5. 严重 丢失交易 • 6. 非常严重 不正确的交易处理 • 7. 极为严重 经常出现“非常严重”的错误 • 8. 无法忍受 数据库破坏 • 9. 灾难性 系统停机 • 10.容易传染 扩展到其它系统的系统停机 根据严重程度分类的缺陷 东北大学软件学院
测试级别 需求规 格说明 系统测试 概要设计 集成测试 详细设计 单元测试 编码 东北大学软件学院