1、1软件测试方法一般分为两种:白盒测试(White Box Testing)黑盒测试(Black-box Testing)软件测试方法软件测试方法 2黑盒测试黑盒测试黑盒软件测试方法 边界值测试等价类测试基于决策表的测试因果图3黑盒测试(Black-box Testing)软件输入输入输出输出w又叫功能测试功能测试,数据驱动测试或基于规格说明的测试。它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用。在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当
2、地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性,如图所示。黑盒测试不深入代码细节4黑盒测试过程黑盒测试过程需求需求 说明说明产生产生被测程序被测程序测试结果测试结果输出输出5黑盒测试的目标黑盒测试的目标w黒盒测试试图发现以下类型的错误:功能错误或遗漏;界面错误,不美观;外部信息访问错误;性能错误;初始化和终止错误 在接口上,能否正确地接受输入数据,能否产生正确地输出信息;6 黑盒测试有两种基本类型,即通过测试和失败测试。在进行通过测试时,实际上是确认软件能做什么,而不会去考验其能力如何。软件测试员只运用最简单,最直观的测试案例。在设计和执行测试案例时,总是先要进
3、行通过测试。在进行破坏性试验之前,看一看软件基本功能是否能够实现。这一点很重要,否则在正常使用软件时就会奇怪地发现,为什么会有那么多的软件缺陷出现?在确信了软件正确运行之后,就可以采取各种手段通过搞“垮”软件来找出缺陷。纯粹为了破坏软件而设计和执行的测试案例,被称为失败测试或迫使出错测试。黑盒测试的类型黑盒测试的类型7彻底的黑盒测试彻底的黑盒测试w例:输入三角形的三条边长 黑盒测试可采用的测试用例数(设字长16位)例:测试计算器的功能例:测试计算器的功能8黑盒测试的难点黑盒测试的难点w黒盒测试的难点在于如何构造有效的输入如何构造有效的输入。由于输入空间通常是无限的,穷举测试显然行不通。寻找最小
4、最重要的用例集合以精简测试复杂性。黑盒测试的优点有黑盒测试的优点有:1)比较简单,不需要了解程序内部的代码及实现;2)与软件的内部实现无关;3)从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;4)基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;5)在做软件自动化测试时较为方便。黑盒测试的缺点有:黑盒测试的缺点有:1)不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的30%;2)自动化测试的复用性较低。9黑盒测试方法黑盒测试方法w黑盒测试的测试用例设计方法 边界值分析等价类划分因果图错误推测基于决策表的测试 功能图分析方法10边界值测试w边界值分析 w健壮性测试
5、 w最坏情况测试 w特殊值测试 w随机测试 111.边界值分析边界值分析w边界值分析的原理 w边界值分析的思想w边界值分析测试用例设计方法12(1)边界值分析的基本原理边界值分析的基本原理w边界值分析(Boundary Value Analysis)w基本原理 错误更可能出现在输入变量的极值附近。w边界值分析关注输入空间输入空间的边界,并从中标识测试用例。13常见的边界值举例 对16-bit 的整数而言 32767 和-32768 是边界 屏幕上光标在最左上、最右下位置 报表的第一行和最后一行 数组元素的第一个和最后一个 C+语言中,int A10:A0A9 循环的第 0 次、第 1 次和倒数
6、第 2 次、最后一次14边界值分析的基本思想边界值分析的基本思想w在最小值、略高于最小值、正常值、略低于最大值和最大值处取输入变量值 w表示方法min、min+、nom、max-、和max w例如:涉及两个变量的函数x1,x2 X1的取值x1min,x1min+,x1nom,x1max-,x1max X2的取值x2min,x2min+,x2nom,x2max-,x2max15边界值分析的取值边界值分析的取值16“单缺陷单缺陷”假设假设w“单缺陷”假设 失效极少是由两个或多个缺陷的同时发生引起的 w“单缺陷”假设是边界值分析的关键假设17(3)边界值分析测试用例边界值分析测试用例w边界值分析获得
7、测试用例的方法:使所有变量取正常值,只使一个变量取极值;对于一个n变量函数,边界值分析会产生4n+1个测试用例。18wX1取值:x1min,x1min+,x1nom,x1max-,x1max wX2取值:x2min,x2min+,x2nom,x2max-,x2max w两个变量函数的边界值分析测试用例 ,两个变量函数边界值分析测试用例19X2两个变量函数边界值分析测试用例20举例:三角形问题举例:三角形问题w三角形问题描述 三条边a,b,c取整数值,且各边的取值范围是:1,200 w边界值分析设计测试用例 每条边的取值:1,2,100,199,200 测试用例数目:4n+1 三角形问题(n=3
8、):用例数为1321练习:练习:NextDate函数函数w输入条件 1月份12 1日期31 1812 年2012 w请用边界值分析设计测试用例22(4)边界值分析优缺点边界值分析优缺点w边界值测试分析采用了可靠性理论的单缺单缺陷假设陷假设。w优点:简便易行;生成测试数据的成本很低;w局限性:测试用例不充分;不能发现测试变量之间的依赖关系;不考虑含义和性质;w结论:只能作为初步测试用例使用232.健壮性测试健壮性测试w健壮性是指在异常情况下,软件还能正常运行的能力。w健壮性有两层含义:容错能力 恢复能力 w 24健壮性测试的基本思想健壮性测试的基本思想w健壮性测试是边界值分析的一种简单扩展,除了
9、使用五个边界值分析取值,还要过采用:一个略超过最大值略超过最大值(max+)的取值 一个略小于最小值略小于最小值(min-)的取值 w 25X2两个变量函数的健壮性测试用例26健壮性测试的讨论健壮性测试的讨论w健壮性测试最有意思的部分不是输入而是预期的输出 w健壮性测试的主要价值是观察异常情况的处理 软件质量要素的衡量标准:软件的容错性 软件容错性的度量:从非法输入中恢复 27健壮性测试的测试用例个数健壮性测试的测试用例个数 一个变量个数为n的函数的健壮性测试会产生多少个测试用例?思考:思考:283.最坏情况测试最坏情况测试w最坏情况测试的基本思想 边界值测试分析采用了可靠性理论的单缺陷假设
10、最坏情况测试拒绝这种假设,关心当多个变量取极值时会出现什么情况?29最坏情况测试用例设计方法最坏情况测试用例设计方法w对每一个变量首先进行包含最小值、略高于最小值、正常值、略低于最大值、最大值五个元素集合五个元素集合的测试,然后对这些集合进行笛卡尔积计算,以生成测试用例。w一个变量个数为n的函数的最坏情况测试会产生5n个测试用例。w 30两变量函数的最坏情况测试用例两变量函数的最坏情况测试用例X231最坏情况与边界值分析的比较最坏情况与边界值分析的比较w基本边界值分析测试用例是最坏情况测试用例的真子集。真子集。w最坏情况测试显然更彻底 w最坏情况测试工作量大得多 n变量函数的最坏情况测试会产生
11、5 5的的n n次方次方个测试用例,边界值分析只产生4n+14n+1个测试用例32最坏情况测试举例最坏情况测试举例(1)w三角形问题 三条边a,b,c取整数值,且各边的取值范围是:1,200 w最坏情况测试用例 每条边的取值:1,2,100,199,200 测试用例数目:5n 三角形问题(n=3):用例数为125 测试用例:见教材76页33wNextDate的测试用例 输入条件 1月份12 1日期31 1812 年2012 最坏情况测试用例设计 月份取值:1,2,6,11,12 日期取值:1,2,15,30,31 年取值:1812,1813,1912,2011,2012最坏情况测试举例最坏情况
12、测试举例(2)34wNextDate的测试用例 测试用例数目 n=3,5n=125 测试用例见教材79-82页 错误的测试用例 第41号:1812年2月30日 遗漏重要的测试用例 日期取28或29 闰年:2000年最坏情况测试举例最坏情况测试举例(2)35健壮最坏情况测试健壮最坏情况测试w对每一个变量,首先进行包含最小值、略高于最小值、正常值、略低于最大值、最大值五个元素集合的测试,还要采用一个略超过最大值的取值,以及一个略小于最小值的取值。然后对这些集合进行笛卡尔笛卡尔积计算积计算以生成测试用例。36两变量函数的健壮最坏情况测试用例374.特殊值测试特殊值测试w边界值分析假定n个变量是相互独
13、立的,没有考虑这些变量之间的相互依赖关系;w特殊值测试使用领域知识、使用类似程序的经验开发测试用例的特殊值。38特殊值测试特殊值测试w特点:最直观、最不一致、具有高度主观性。w特殊值测试特别依赖测试人员的能力 w虽然特殊值测试是高度主观性的,但是能更有效地发现缺陷395.随机测试随机测试w随机测试的基本思想随机测试的基本思想 不是永远选取有界变量的最小值、略高于最小值、正常值、略低于最大值和最大值,而是使用随机数生成器选出测试用例值。40w随机测试的一种实现方法随机测试的一种实现方法 有界变量a xb值的一个Visual Basic应用程序生成的x,满足下式:x=Int(b-a+1)*Rnd+
14、a 函数Int返回浮点数的整数部分 函数Rnd生成区间0,1内的随机数 41选择测试用例原则选择测试用例原则 1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。例如,如果程序的规格说明中规定:重量在10公斤至50公斤范围内的邮件,其邮费计算公式为。作为测试用例,我们应取10及50,还应取10.01,49.99,9.99及50.01等。42选择测试用例原则选择测试用例原则 2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。比如,一个输入文件应包括1255个记录,则测试用例可取1和25
15、5,还应取0及256等。43选择测试用例原则选择测试用例原则3)将规则1)和2)应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。例如,某程序的规格说明要求计算出每月保险金扣除额为0至1165.25元,其测试用例可取0.00及1165.24、还可取一0.01及116526等。再如一程序属于情报检索系统,要求每次最少显示1条、最多显示4条情报摘要,这时我们应考虑的测试用例包括1和4,还应包括0和5等。44选择测试用例原则选择测试用例原则 4)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。5)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。6)分析规格说明,找出其它可能的边界条件。