软件工程 第八章 软件测试 制作者 程丽
本章介绍以下内容 软件测试概述 测试方法 测试用例的设计 测试过程 调试
课程的任务、目的和基本要求 掌握软件测试的基本概念 会用逻辑覆盖、基本路径等白盒测试方法设计测试用例 掌握等价类划分、边界值分析等黑盒测试方法的基本原理 掌握单元测试、集成测试、确认测试、系统测试等测试策略 了解面向对象测试的基本内容 了解测试完成标准及基本的调试方法
接下来介绍 软件测试概述 测试方法 测试用例的设计 测试过程 调试
软件测试概述 为什么要进行软件测试 软件中存在错误是不可避免的 软件是一种高密集度的智力产品 客观系统的复杂性 人主观认识的局限性 信息通信不一致 协调管理不完善
软件测试概述 对“软件错误”的认识 在定量分析时,可以将错误分等级,以便于管理 微软的一些开发小组将错误分成四个等级 上述分类是非常技术性的,并不是普适的
软件测试概述 软件错误的分类 一级严重 错误导致软件崩溃。 二级严重 错误导致一个特性不能运行并且没有替代方案。 三级严重 错误导致一个特性不能运行但有替代方案。 四级严重 错误是表面化的或是微小的。
软件测试概述 上述分类是非常技术性的,并不是普适的 假设某个财务软件有两个错误:错误A使该软件死掉,错误B导致工资计算错误 按表分类,错误A属一级严重,错误B属二级严重 但事实上B要比A严重。工资算多了或者算少了,将会使老板或员工遭受经济损失。而错误A只使操作员感到厌烦,并没有造成经济损失。 另一个示例是操作手册写错,按表分类则属四级严重,但这种错误可能导致机毁人亡。
软件测试概述 软件错误的比例 据美国一家公司统计,软件错误中,属于需求分析和软件设计的错误约占 64% 属于程序编写的错误仅占 36% 程序编写的许多错误是“先天的”
软件测试概述 避免软件错误的有效措施 软件开发过程必须伴有质量保证活动 软件测试是软件质量保证的关键元素,代表了规约、设计和编码的最终检查
软件测试概述 什么是软件测试 软件测试是对软件计划、软件设计、软件编码进行查错和纠错的活动(包括代码执行活动与人工活动)
软件测试概述 软件测试和程序测试的区别 软件测试不等于程序测试 程序测试是对编码阶段的语法错、语义错、运行错进行查找的编码执行活动 软件测试应贯穿于软件定义与开发的整个阶段
软件测试概述 从成本的角度认识“软件测试” 检测错误、修正错误在软件产品成本中占有很大比例。在整个软件开发中,测试工作量一般占30%~40%,甚至≥50% 人命关天的软件(如飞机控制、核反应堆等)测试的费用会更高 例如:APPOLLO登月计划,80%的经费用于软件测试
软件测试概述 软件测试的目的 软件测试的目的是发现程序中的错误,是为了证明软件有错,而不是证明软件无错
软件测试概述 软件测试效果 “程序测试的目的是为了发现错误而执行程序的过程” “一个好的测试用例能够发现至今尚未发现的错误” “一个成功的测试是发现了至今尚未发现的错误的测试” —G.J.Myers《软件测试技巧》
软件测试概述 原则一 软件测试要设法使软件发生故障,暴露软件错误,能够发现错误的测试是成功的测试
软件测试概述 原则二 穷举测试是不可能的 例:程序P有两个整型输入量 X、Y,输出量为Z,在32位机上运行。所有的测试数据组(Xi,Yi)的数目为: 假设1毫秒执行1次,进行完全测试共需5亿年
软件测试概述 测试不是无止境的,要考虑到测试目标,人力,资源的限制,权衡量力。
软件测试概述 原则三 尽量避免测试自己编写的程序 心理状态对测试自己的程序形成障碍。软件开发人员会有意无意地在测试过程中去证明自己的程序是正确的 程序员很难跳出已固化在自己大脑中对需求分析的理解,由此造成的错误更难发现 建议:分别建立开发队伍和测试队伍
软件测试概述 原则四 测试要以软件需求规格说明书为标准 由于最严重的错误是那些导致软件无法满足需求的错误,而这些错误往往发生在开发前期的一些阶段,因此,解决、纠正错误也必须追溯到前期工作 但是,切忌程序功能超出用户需求。
软件测试概述 原则五 注意测试中的群集现象 群集现象是指 — 在测试过程中,发现错误比较集中的程序段,往往可能残留的错误数较多 因此必须注意这种群集现象,对错误群集的程序段进行重点测试,以提高测试投资的效率 原则六 测试用例应由输入数据和预期的输出结果两部分组成
软件测试概述 原则七 兼顾合理的输入和不合理的输入数据 原则八 程序修改后要回归测试 原则九 应长期保留测试用例以供以后反复测试使用,直至系统废弃 原则十 用最少的测试数据,检查出尽可能多的错误。
软件测试概述 介绍几个概念 测试用例就是测试时选用的例子 测试用例={测试数据+期望结果} 测试结果={测试数据+期望结果+实际结果}
接下来介绍 软件测试概述 测试方法 测试用例的设计 测试过程 调试
测试方法 程序中存在各种不同的错误 有些适宜在机器测试中发现 另一些宜于在人工测试中揭露
人工测试方法 静态测 试方法 计算机辅助静 态分析方法 软件测试的 策略和方法 白盒测试方法 动态测 试方法 黑盒测试方法 测试方法 软件测试的方法 人工测试方法 静态测 试方法 计算机辅助静 态分析方法 软件测试的 策略和方法 白盒测试方法 动态测 试方法 黑盒测试方法
测试方法 静态测试与动态测试 静态测试:对软件进行分析、检查和审阅,不实际运行被测试的软件 动态测试:通过运行软件来检验软件的动态行为和运行结果的正确性
测试方法 黑盒测试与白盒测试 黑盒测试:基于规格说明书测试程序功能,又称为功能测试、数据驱动测试 白盒测试:测试程序结构,包括逻辑路径、内部控制结构、内部数据结构的测试
测试方法 黑盒测试与白盒测试的比较 A -只能用黑盒测试发现的错误 B -只能用白盒测试发现的错误 C -两种方法都能发现的错误 D -两种方法都不能发现的错误
接下来介绍 软件测试概述 测试方法 测试用例的设计 测试过程 调试
测试用例的设计 动态测试的过程分四步 (1)选取定义域有效值,或定义域外无效值 (2)对已选取值决定预期的结果 (3)用选取值执行程序 (4)执行结果与预期的结果相比,不吻合程序有错
黑盒技术 黑盒技术测试用例设计方法 等价类划分法 边界值分析法 错误推测法 因果图 综合测试
黑盒技术——等价类划分法 为什么使用等价类划分法 穷尽测试法不现实,选择有代表性的数据进行测试 等价类划分法的思想 把所有可能的输入数据(有效的和无效的)划分成若干个等价的子集(称为等价类别或等价区间),使得每个子集中的一个典型值在测试中的作用与这一子集中所有其它值的作用相同 从每个子集中选取一组数据来测试程序
黑盒技术——等价类划分法 如何划分等价类 根据实际问题划分为 有效等价类(合理等价类) 无效等价类(不合理等价类) 划分等价类的标准 覆盖 不相交 代表性
黑盒技术——等价类划分法 划分等价类的规则 (1)如果输入条件规定了取值范围,可定义一个有效等价类和两个无效等价类 例:输入值是学生成绩,范围是0~100
黑盒技术——等价类划分法 划分等价类的规则 (2)如果规定输入元素个数,则可定义一个有效等价类和两个无效等价类 (3)如规定了输入数据的一组值,且程序对不同输入值做不同处理,则每个允许的输入值是一个有效等价类,并有一个无效等价类(所有不允许的输入值的集合)。 例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类
黑盒技术——等价类划分法 划分等价类的规则 (4)如果规定了输入数据必须遵循的规则,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则) (5)如已划分的等价类各元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类。
黑盒技术——等价类划分法 用等价类划分法设计测试用例的步骤 (1)形成等价类表,每一个等价类规定一个唯一的编号 (2)设计一个测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步骤,直到所有有效等价类均被测试用例所覆盖 (3)设计一个新的测试用例,使其只覆盖一个无效等价类,重复这一步骤直到所有无效等价类均被覆盖
黑盒技术——等价类划分法 例如 某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理 如日期不在此范围内,则显示输入错误信息 系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。 如何用等价类划分法设计测试用例,来测试程序的日期检查功能?
黑盒技术——等价类划分法 第一步:划分等价类,形成等价类表 输入等价类 有效等价类 无效等价类 报表日期的类型及长度 6位数字字符(1) 年份范围 在2003~2008之间(2) 月份范围 在1~12之间(3) 有非数字字符(4) 少于6个数字字符(5) 多于6个数字字符(6) 小于2003(7) 大于2008(8) 小于1(9) 大于12(10)
黑盒技术——等价类划分法 第二步:为有效等价类设计测试用例 对表中编号为1,2,3的3个有效等价类用一个测试用例覆盖: 测试数据 期望结果 覆盖范围 200306 输入有效 等价类(1)(2)(3)
黑盒技术——等价类划分法 第三步:为每一个无效等价类至少设计一个测试用例
黑盒技术——等价类划分法 例:为招干考试系统“输入学生成绩”子模块设计测试用例 招干考试分三个专业,准考证号为6位数字,第一位是专业代号,如: 1-行政专业, 2-法律专业, 3-财经专业. 行政专业准考证号码为:110001~111215 法律专业准考证号码为:210001~212006 财经专业准考证号码为:310001~314015
黑盒技术——等价类划分法 输入等价类 有效等价类 无效等价类 准考证号码的类型及长度 6位数字字符(1) 有非数字字符(5) 少于6位数字字符(6) 多于6位数字字符(7) 行政专业准考证号码范围 110001 ~ 111215(2) ~ 110000(8) 111216 ~ 210000(9) 法律专业准考证号码范围 210001 ~ 212006(3) 212007 ~ 310000(10) 财经专业准考证号码范围 310001 ~ 314015(4) 314016 ~ + (11)
黑盒技术——边界值分析法 为什么要进行边界值分析 数据的边界区域最容易发生错误,故针对边界设计测试用例进行测试 分析步骤 (1)先划分等价类,划分等价类的方法与等价分类法基本相同,不同的是在划分等价类时,不仅要考虑输入条件,还要考虑输出条件。 (2)选择测试用例,测试等价类边界。往往对同一边界需要选择一个或者多个测试用例。
黑盒技术——边界值分析法 边界选择原则 A、按照输入值范围的边界。 例如:输入值的范围是-1.0至1.0,则可选择用例 –1.0、1.0、-1.001、1.001。 B、按照输入/输出值个数的边界。 例如:输入文件可有1-255个记录,则设计用例:文件的记录数为 0个、1个、255个、256个。
黑盒技术——边界值分析法 边界选择原则 C、输出值域的边界。 例如:检索文献摘要,最多4篇。设计用例:可检索0篇、1篇、4篇,和5篇(错误)。 D、输入/输出有序集(如顺序文件、线性表)的边界。 应选择第一个元素和最后一个元素。
黑盒技术——边界值分析法
黑盒技术——错误推测法 根据经验、直觉和预感来进行测试,可考虑建立处理下列等价类: 缺省值 空白 空值 零值 无输入条件 错误推测法是一种简单易行的黑盒法,但由于该方法有较大的随意性,主要依赖于测试者的经验,因此通常作为一种辅助的黑盒测试方法
黑盒技术——因果图法 为什么要使用因果图法 前面介绍的等价分类法和边值分析法都没有考虑这样一个问题:输入条件之间的联系(各种组合情况),对输出结果的影响。而因果图法解决了这个问题。
黑盒技术——因果图法 什么是因果图法 因果图法是一种形式化语言,是一种组合逻辑网络图。 是把输入条件视为“因”,把输出条件视为“果”,将黑盒看成是从因到果的网络图,采用逻辑图的形式来表达功能说明书中输入条件的各种组合与输出的关系。 根据这种关系可选择高效的测试用例。
黑盒技术——因果图法 因果图法适用情况 由于因果图法最终生成的是判断表,所以它适合于设计检查程序输入条件的各种组合情况的测试用例。
黑盒技术——综合测试法 使用白盒法设计测试用例时,只需要选择一个覆盖标准 使用黑盒法进行测试,则应该同时使用多种黑盒测试方法,才能得到较好的测试效果
白盒技术 逻辑覆盖测试 早期的白盒测试把注意力放在流程图的各个判定框,使用不同的逻辑覆盖标准来表达对程序进行测试的详尽程度,我们称之为逻辑覆盖测试 路径测试 随着测试技术发展,人们越来越重视对程序执行路径的考察,用程序图代替流程图来设计测试用例,这种新的技术称之为路径测试。
白盒技术 逻辑覆盖法 (1)语句覆盖 (2)判定覆盖 (3)条件覆盖 (4)判定/条件覆盖 (5)条件组合覆盖 (6)路径覆盖
白盒技术——语句覆盖
白盒技术——判定覆盖 使每个判定的真假分支都至少执行一次 A=3,B=0 ,X=3 可覆盖c、d分支 A=2,B=1 ,X=1 可覆盖b、e分支 开始 (A>1) AND (B=0) (A=2) OR (X>1) 返回 X=X/A X=X+1 F T a b d c e a (假) (真) b c (假) (真) (假) (真) d e d e
使每个判定的每个条件的可能取值至少执行一次 第一个判定表达式可能取值 A>1(T1) A≤1(F1) B=0(T2) B ≠ 0(F2) 白盒技术——条件覆盖 使每个判定的每个条件的可能取值至少执行一次 第一个判定表达式可能取值 A>1(T1) A≤1(F1) B=0(T2) B ≠ 0(F2) 第二判定表达式 A=2(T3) A≠2(F3) X>1(T4) X≤1(F4) (A>1) AND (B=0) (A=2) OR (X>1)
白盒技术——条件覆盖 第一判定表达式: 条件 A>1 取A=2 条件 A≤1 取A=1 条件 B=0 取B=0 条件 B≠0 取B=1 第二判定表达式: 条件 A=2 取A=2 条件 A≠2 取A=1 条件 X>1 取X=4 条件 X≤1 取X=0 (A>1) AND (B=0) (A=2) OR (X>1)
白盒技术——条件覆盖 测试用例 A B X 满足的条件 2 0 4 1 1 0 A>1 B=0 X>1 A≤1 B≠0 X≤1 2 0 0 1 1 4 A>1 B=0 X≤1 A≤1 B≠0 X>1 2 1 4 1 0 0 A>1 B≠0 X>1 A≤1 B=0 X≤1 2 1 0 1 0 4 A>1 B≠0 X≤1 A≤1 B=0 X>1
白盒技术——条件覆盖 判定覆盖和条件覆盖的比较 当判定只含一个条件时:判定覆盖就是条件覆盖。 当判定是复合条件时:条件覆盖不一定包含判定覆盖,判定覆盖也不一定包含条件覆盖
白盒技术——条件覆盖 如图,条件包含A真,A假,B真,B假 条件覆盖的测试用例可能是 {A真,B真}和{A假,B假} {A真,B假}和{A假,B真} 判定覆盖的测试用例可能是 结论:条件覆盖不一定包含判定覆盖
白盒技术——条件覆盖 如图所示,若取值 A=3,B=0 ,X=3 可覆盖c、d分支 A=2,B=1 ,X=1 可覆盖b、e分支 则,满足判定覆盖, 但,不满足条件覆盖 结论:判定覆盖也不一定包含条件覆盖 开始 (A>1) AND (B=0) (A=2) OR (X>1) 返回 X=X/A X=X+1 F T a b d c e
白盒技术——判定/条件覆盖 什么是判定/条件覆盖 能同时满足判定、条件两种覆盖标准的取值 选取足够多的测试用例,使判断中的每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次.
白盒技术——条件组合覆盖 所有可能的条件取值组合至少执行一次 A > 1, B=0 A > 1, B≠0 A ≤ 1, B=0 A = 2, X>1 A = 2, X ≤ 1 A ≠2, X>1 A ≠2, X ≤ 1 (A>1) AND (B=0) (A=2) OR (X>1)
白盒技术——条件组合覆盖 测试用例 A B X 满足的条件 2 0 4 1 1 0 A>1 B=0 X>1 A≤1 B≠0 X≤1 2 0 0 1 1 4 A>1 B=0 X≤1 A≤1 B≠0 X>1 2 1 4 1 0 0 A>1 B≠0 X>1 A≤1 B=0 X≤1 2 1 0 1 0 4 A>1 B≠0 X≤1 A≤1 B=0 X>1
设计测试用例满足组合条件 测试 用例 A B X 通过 路径 满足的 条件 覆盖 分支 2 0 4 ace T1,T2,T3,T4 c,e 1 1 0 abd F1,F2,F3,F4 b,d 2 1 0 abe T1,F2,T3,F4 b,e 1 0 4 F1,T2,F3,T4
白盒技术——条件组合覆盖 条件组合覆盖是5种覆盖中发现错误的能力最强的 凡是满足条件组合覆盖的测试数据必然满足其它4种覆盖标准.
白盒技术——路径覆盖 覆盖每一个可能的路径(路径覆盖+条件组合) 测试 用例 A B X 通过 路径 满足的 条件 覆盖 分支 1 1 1 abd F1,F2,F3,F4 b,d 1 1 2 abe F1,F2,F3,T4 b,e 3 0 1 acd T1,T2,F3,F4 c,d 2 0 4 ace T1,T2,T3,T4 c,e
不同的标准对测试情况具有不同的覆盖程度,使用时只需确定一种覆盖标准,再按照选定的覆盖标准来设计测试用例。 白盒技术 白盒逻辑测试总结 用于单元测试 不同的标准对测试情况具有不同的覆盖程度,使用时只需确定一种覆盖标准,再按照选定的覆盖标准来设计测试用例。 覆 盖 能 力 语 句 覆 盖 判 定 覆 盖 条 件 覆 盖 判定 / 条件 覆 盖 条件 组 合 覆 盖 路 径 覆 盖 弱 强
白盒技术——路径测试 步骤一:程序流程图转换成程序图 程序图是连通的有向图,程序图中每个节点相当于程序流程图的一个框(内部可能包括多条执行语句),用有箭头的连线(称为边或路径)连接。
白盒技术——路径测试 程序流程图→程序图
白盒技术——路径测试 步骤二:计算程序图G的环路复杂度V(G) 环路复杂度=边和结点圈定的最小封闭区域的个数+1,或 环路复杂度=判定结点数+1
白盒技术——路径测试 步骤三:确定只包含独立路径的基本路径集 独立路径是指包括一组以前没有处理的语句或条件的一条路径 Path1: 1-11 Path2: 1-2-3-4-5-10-1-11 Path3: 1-2-3-6-8-9-10-1-11 Path4: 1-2-3-6-7-9-10-1-11
白盒技术——路径测试 步骤四:设计测试用例 测试用例能够执行基本路径集中的基本路径
黑盒测试 白盒测试 黑盒测试与白盒测试优缺点比较 优 点 缺 性 质 ①适用于各阶段测试 ②从产品功能角度测试 ③容易生成测试数据 黑盒测试 白盒测试 优 点 缺 ①适用于各阶段测试 ②从产品功能角度测试 ③容易生成测试数据 ①某些代码得不到测试 ②无法发现规格说明错误 ③不易进行充分性测试 ①不易生成测试数据(通常) ②无法测试未实现规格说明的部分 ③工作量大,用于单元测试,有应用局限 ①可构成测试数据使特定程序部分得到测试 ②有一定的充分性度量手段 ③较多工具支持 性 质 是一种确认技术,回答 “我们在构造一个正确的系统吗?”结果的正确性 是一种验证技术,回答 “我们在正确地构造一个系 统吗?”过程的正确性
接下来介绍 软件测试概述 测试方法 测试用例的设计 测试过程 调试
软件测试过程中的信息
软件测试的步骤及与各开发阶段的关系 所有测试过程都应采用综合测试策略,即 应先作静态分析 再作动态测试 并应事先制订测试计划。
软件测试的步骤及与各开发阶段的关系 单元测试 测试的层次 集成测试 确认测试 高级测试 系统测试
软件测试的步骤及与各开发阶段的关系
单元测试 什么是单元测试 单元测试指对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中的错误 该阶段涉及编码和详细设计的文档
单元测试 单元测试的目的及方法 一般以模块或子程序为单位,故又称模块测试(Module Testing) 测试目的是检查模块内部的错误。因此,以白盒测试法为主 在编码阶段由作者自己测试完成,后续部分由独立的第三方来构造测试。单元测试发现的错误约占程序总错误的2/3
单元测试 单元测试步骤 考虑到被测模块与其它模块的联系,需要对模块进行独立测试,才能够提高测试效率,因此测试时需要使用两类辅助模块来模拟其它模块 驱动模块 桩模块
驱动模块(driver)—模拟主程序或者调用模块的功能,用于向被测模块传递数据,接收、打印从被测模块返回的数据.一般只设计一个驱动模块。 桩模块(stub)—又称为假模块,用于模拟那些由被测模块调用的下属模块的功能。可以设计一个或者多个桩模块,才能更好地对下属模块进行模拟。
集成测试 什么是集成测试 在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统而进行的测试 检查与设计相关的软件体系结构的有关问题 集成测试的任务 确定模块组装方案,将经过测试的模块组装为一个完整的系统 按照组装方案设计测试用例进行测试。
集成测试 集成测试的方法 非渐增式测试 将经过单元测试的所有的模块一次连接为一个可运行的系统,称为非渐增式 渐增式测试 将经过单元测试的所有的模块一个一个的连入系统,每连入一个模块,都要对新系统进行测试,这种组装方式称为渐增式。
集成测试 渐增式集成测试 按组装次序,渐增式又常有多种方案: 自顶而下结合 自底而上结合 无论采用哪种方案,都需要设计驱动模块或桩模块 对每一个新组装的子系统进行测试主要采用黑盒法 对发现问题较多的子系统或模块应该用白盒法作回归测试
自顶而下结合 第一步,测试主控模块M1,设 计桩模块S1、S2、S3,模拟被 M1调用的模块M2、M3、M4。 第二步,依次用M2、M3、 每替代一次进行一次测试。 第三步,对由主控模块M1和模 块M2、M3、M4构成的子系统 进行测试,设计桩模块S4、S5。 第四步,依次用模块M5和M6 替代桩模块S4、S5,并同时进 行新的测试。组装测试完毕。
自底而上结合 第一步,对最底层的模块M3、M5、 M6进行测试,设计驱动模块D1、D2 、D3来模拟调用。 第二步,用实际模块M2、 第三步,把已测试的 子系统按程序结构连 接起来,构成系统。 第四步,设计驱动模块 D4,模拟对系统调用, 完成程序的组装测试。
集成测试 深度优先与宽度优先 无论是自顶而下结合还是自底而上结合,还可选择深度优先或者宽度优先结合。
深度优先: A、B、E、J、K、C、F、L、G、D、H、M、N、I 宽度优先: A、B、C、D、E、F、G、H、I、J、K、L、M、N
集成测试 自顶而下结合 优点:能够尽早发现系统主控方面的问题。 缺点:无法验证桩模块是否完全模拟了下属模块的功能 自底而上结合 优点:驱动模块较容易编写,能够尽早查出底层涉及较复杂的算法和实际的I/O模块中的错误 缺点:最后才能发现系统主控方面的问题
集成测试 集成过程的原则 尽早测试关键模块 关键模块实现了系统的主要功能,尽早测试有利于提高系统的测试效率。 尽早测试包含I/O的模块 为以后的测试提供方便。
确认测试 什么是确认测试 用于检查已实现的软件是否满足需求规格说明书中确定了的各种需求,在测试阶段完成 确认测试的步骤 (1)进行有效性测试 有效性测试是在模拟的环境(或就是开发环境下)下运用黑盒法,验证软件特性是否与需求符合。需要制定测试计划,确定测试步骤,设计测试用例
确认测试 确认测试的步骤 (2)进行软件配置审查 软件配置—指软件工程过程中所产生的所有信息项:文档、报告、程序、表格、数据等。随着软件工程过程的进展,软件配置项快速增加和变化 软件配置审查,应审查软件配置项是否齐全,检查文档资料的完整性和正确性 (3)经过有效性测试得到测试报告,通过软件配置审查得到软件配置情况。两种测试结果都要经管理机构裁决后,再通过专家鉴定会评审
软件测试 测试过程总结 单元测试 通常应该先进行“人工走查”,再以白盒法为主,辅以黑盒法进行动态测试。使用白盒法时,只需要选择一种覆盖标准,而使用黑盒法时,应该采用多种方法 集成测试 关键是要按照一定的原则,选择组装模块的方案(次序)然后再使用黑盒法进行测试。在测试过程中,如果发现问题较多的模块,再采用白盒法进行回归测试
软件测试 测试过程总结 确认测试 应该以黑盒法为主。确认测试中进行软件配置审查,主要是静态测试 系统测试 把已确定的软件与其他系统元素(如硬件、其他支持软件、数据和人工等)结合在一起进行测试
接下来介绍 软件测试概述 测试方法 测试用例的设计 测试过程 调试
调试 什么是调试 调试又称纠错,不是测试 调试的目的 定位和纠正错误; 调试的任务 消除软件故障,保证程序可靠运行
调试 调试的原则 (1)注意错误的“群集现象” (2)不能只修改错误的征兆、表象,还应该修改错误的本质 (3)注意在修改一个错误的同时,避免引入新的错误
调试技术 调试的方法 简单调试法 归纳调试法 演绎调试法 回溯调试法
调试技术 简单调试法 由于简单,是目前使用较多,但效率较低的方法,如: 关键部分设置打印语句:在出错源程序的各个关键变量改变位置、重要的分支、子程序的调用等位置,设置打印语句,跟踪程序执行和变量的改变 运行部分程序:运行怀疑的程序段,屏蔽不需要执行的语句段 使用自动调试工具:使用由某些语言提供的调试工具查错
调试技术 归纳调试法 从测试结果发现的错误入手,分析它们之间的联系查找错误。是一种从特殊推断一般的系统化思考方法。下图描述了归纳排错法的步骤。
调试技术 演绎调试法 演绎法是一种从一般原理出发,经过排除和精化的过程,推导出结论的方法 下图描述了演绎法排错的步骤,在“排除不适当的原因”时,如果所有的可能出错的原因都被排除完了,则说明数据不够,还要重新收集。如果无法“证明假设”,也要重新收集数据,再列出可能出错的原因。
调试技术 回溯调试法 适用于小程序,发现错误时,首先确定发现错误“症状”的位置,人工沿控制流追踪源代码程序,直到找出错误根源或确定错误范围为止。
作业 请画出右面伪码程序的程序流程图,设计语句覆盖和路径覆盖测试用例 START INPUT(A,B,C) IF A>5 THEN X=10 ELSE X=1 END IF IF B>10 THEN Y=20 ELSE Y=2 接左面 IF C>15 THEN Z=30 ELSE Z=3 END IF PRINT(X,Y,Z) STOP 请画出右面伪码程序的程序流程图,设计语句覆盖和路径覆盖测试用例
Thank You !