软件工程白盒测试文档

软件工程白盒测试文档
软件工程白盒测试文档

实验二白盒测试

一、实验目的

通过对于实例程序的测试,熟悉结构性测试的基本方法。

二、实验要求

(1)综合运用结构性测试方法(如逻辑覆盖、基本路径测试等方法)对被测程序进行测试,找出whiteBox.exe程序中存在的缺陷。

三、测试用例的设计

1.对于Triangle Program的测试

Private Sub triangle(a As Long, b As Long, c As Long, progOutput As String) Dim IsATriangle As Boolean

'Are a, b, and c sides of a Triangle?

Node (0)

If (a < b + c) And (b < a + c) Then

Node (1)

IsATriangle = True

Else

Node (2)

IsATriangle = False

progOutput = "Not a Triangle"

End If

' Determine Triangle Type

Node (3)

If IsATriangle Then

Node (4)

If (a = b) And (b = c) Then

Node (5)

progOutput = "Equilateral"

Else

Node (6)

If (a = b) Or (a = c) Then

Node (7)

progOutput = "Isosceles"

Else

Node (8)

If (a * a = b * b + c * c) Or (b * b = a * a + c * c) Or (c * c = a * a + b * b) Then

Node (9)

progOutput = "Right Triangle"

Else

Node (10)

progOutput = "Scalene"

End If

Node (11)

End If

Node (12)

End If

Node (13)

End If

Node (14)

End Sub

(1)程序段的控制流图如下:

(2)程序段的环形复杂度V(G)=19条边-15个结点+2=6 (3)程序段中的基本路径集中有6条独立路径。

路径1:0→1→3→14

在实际程序下,找不到此路径的例子。

路径2:0→2→3→14

路径3:0→1→3→4→5→13→14

路径4:0→1→3→4→6→7→12→13→14

路径5:0→1→3→4→6→8→9→11→12→13→14

路径6:0→1→3→4→6→8→10→11→12→13→14

(4)设计的测试用例如下:

输入数据预期输出

测试用例1 找不到实际例子无

测试用例2 4,2,1 Not a Triangle

测试用例3 3,3,3 Equilateral

测试用例4 4,4,5 Isosceles

测试用例5 3,4,5 Right a triangle

测试用例6 4,5,6 scalence

2.对于NextDate Program的测试

Private Sub NextDatePJ(InMonth As String, InDay As Integer, InYear As Integer, newDate As String)

Dim OutDay As Integer, OutYear As Integer, OutMonth As String

OutYear = InYear

Node (0)

Select Case InMonth

Case "January", "March", "May", "July", "August", "October", "December" Node (1)

If InDay < 31 Then

Node (2)

OutDay = InDay + 1

OutMonth = InMonth

Else

Node (3)

OutDay = 1

OutMonth = NextMonth(InMonth)

End If

Node (4)

Case "April", "June", "September", "November":

Node (5)

If InDay < 30 Then

Node (6)

OutDay = InDay + 1

OutMonth = InMonth

Else

Node (7)

OutDay = 1

OutMonth = NextMonth(InMonth)

End If

Node (8)

Case "February"

Node (0)

If InDay < 28 Then

Node (9)

OutDay = InDay + 1

OutMonth = InMonth

ElseIf InDay = 28 Then

Node (10)

Node (11)

If ((InYear Mod 4) = 0) And ((InYear Mod 400) <> 0) Then Node (12)

OutDay = 29 'leap year

OutMonth = InMonth

Else 'not a leap year

Node (13)

OutDay = 1

OutMonth = NextMonth(InMonth)

End If

Node (14)

Else

Node (15)

OutDay = 1

OutMonth = NextMonth(InMonth)

End If

Node (16)

End Select

Node (17)

newDate = OutMonth - Str(OutDay) "," & Str(OutYear) End Sub

(1)程序段的控制流图如下:

(2)程序段的环形复杂度V(G)=24条边-18个结点+2=8 (3)程序段中的基本路径集中有8条独立路径。

路径1:0→1→2→4→17

白盒测试方法

一、白盒测试概念 1、定义 白盒测试又称结构测试、透明盒测试、逻辑驱动测试、基于代码的测试。盒子指被测试的软件,白盒指盒子是可视的。白盒测试是一种测试用例设计方法,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例。白盒测试主要针对被测程序的源代码,主要用于软件验证,不考虑软件的功能实现,只验证内部动作是否按照设计说明书的规定进行。 2、目的 我们一方面注重软件功能需求的实现,另一方面还要注重程序逻辑细节,主要是因为软件自身的缺陷,具体如下: 1)逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。日常处理往往被很好地了解,而“特殊情况”的处理则难于发现。 2)我们经常相信某逻辑路径不可能被执行,而事实上,它可能在正常的基础上被执行。程序的逻辑流有时是违反直觉的,只有路径测试才能发现这些错误。 3)代码中的笔误是随机且无法杜绝的。笔误出现在主流上和不明显的逻辑路径上的机率是一样的。很多被语法检查机制发现,但是其他的会在测试开始时才会被发现。 4)功能测试本身的局限性。如果程序实现了没有被描述的行为,功能测试是无法发现的,例如病毒,而白盒测试很容易发现它。 3、目标 采用白盒测试必须遵循以下几条原则,才能达到测试的目标: 1)保证一个模块中的所有独立路径至少被测试一次。 2)所有逻辑值均需测试真(true) 和假(false)两种情况。 3)检查程序的内部数据结构,保证其结构的有效性。 4)在上下边界及可操作范围内运行所有循环。 4、黑白灰区别 黑盒测试技术:也称功能测试或数据驱动测试,只关注规格说明中的功能,测试者在程序接口对软件界面和软件功能进行测试,它只检查实现了的功能是否按照“用户需求说明书”的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。主要用于软件确认测试,结合兼容、性能测试等方面,但黑盒测试不能保证已经实现的各个部分都被测试到。黑盒测试适用于各阶段测试。 白盒测试技术:只关注软件产品的测试,深入到代码一级的测试,它是知道产品内部结构,通过测试来检测产品内部动作是否按照“设计规格说明书”的规定正常进行,按照程

软件工程期末试题(含答案)解析

一、填空题(每空1分,共25分) 1.软件生存周期一般可以划分为,问题定义、可行性研究、需求分析、设计、编码、测试和运行 和维护。 2.基于软件的功能划分,软件可以划分成___系统软件_、支撑软件、应用软件__三种。 3.可行性研究,应从经济可行性、技术可行性、运行可行性、法律可行性和开放方 案可行性等方面研究。 4.系统流程图是描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子 形式描绘系统里面的每个部件 5.数据流图的基本四种成分:数据输入的源点和数据输出汇点、加工、数据流和数据存储文 件。 6.结构化分析方法是面向_数据流_进行需求分析的方法。结构化分析方法使用_数据流图DFD_与_ 数据字典_来描述。 7.继承性是自动地共享类、子类和对象中的方法和数据的机制。 8.软件详细设计工具可分为3类,即_图示工具_、_设计语言_和_表格工具_。 9.为了在软件开发过程中保证软件的质量,主要采取下述措施:_审查__、复查和管理复审、___ 测试_。 10.大型软件测试包括单元测试、集成测试、确认测试和系统测试四个步骤。 二、单项选择题(每小题2分,共20分) 1.软件设计中划分模块的一个准则是(C )。 A、低内聚低耦合 B.低内聚高耦合C.高内聚低耦合 D.高内聚高耦合 2.Jackson设计方法是由英国的M. Jackson提出的,它是一种面向( C )的软件设计方法。 A、对象 B.数据流 C.数据结构 D.控制结构 3.试判断下列叙述中,哪个(些)是正确的( C )。 a、软件系统中所有的信息流都可以认为是事务流 b、软件系统中所有的信息流都可以认为是变换流 c、事务分析和变换分析的设计步骤是基本相似的 A、a B、b C、c D、b和c 4.( A )是用户和设计交换最频繁的方法。 A、原型化方法 B、瀑布模型方法 C. 螺旋模型方法D、构件组装模型 5.软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证 是( C )。 A、硬件环境 B、软件开发的环境 C.软件开发工具和软件开发的环境 D、开发人员的素质 6.20世纪50年代以来,出现了许多不同的程序设计语言,下列语言中哪个语言是低级语言 ( D )。 A、PASCAL B、 VISUAL BASIC C. C++ D、汇编语言 7.软件测试的目的是?( D ) A、证明软件的正确性 B.找出软件系统中存在的所有错误 C.证明软件系统中存在错误 D.尽可能多的发现软件系统中的错误 8.使用白盒测试方法时,确定测试数据应根据( A )和指定的覆盖标准。 A、程序的内部逻辑 B、程序的复杂程度 C、该软件的编辑人员 D、程序的功能 9.软件维护工作的最主要部分是( C )。 A、校正性维护 B、适应性维护 C.完善性维护 D、预防性维护

黑盒测试实验报告

实验报告书 课程名称:软件测试 实验题目:黑盒测试报告 专业:教育技术学 班级:教技142 学生姓名:安卓 指导老师:郭小雪 所属学期:2017-2018学年第二学期

一、引言 1.1目的 测试报告为三角形问题和找零钱最佳组合问题项目的黑盒测试报告,目的在于总结测试阶段的测试以及分析测试结果。 实验环境 在Windows 2000(SP2) 或Windows XP 操作系统上,使用C++语言,工具作为开发环境(IDE) 实验要求 1.根据给出的程序分别使用等价类划分法、边界值分析法、判定表 方法、因果图法、正交试验法、功能图法、错误推测法来设计相应的测试用例。 2.输入数据进行测试,填写测试用例。 二、实验原理 黑盒测试原理:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看作一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试。 从理论上讲,黑盒测试只有采用穷举输入测试,把所有可能的输入都

作为测试情况考虑,才能查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但可能的输入进行测试。这样看来,完全测试是不可能的,所以我们要进行有针对性的测试,通过制定测试案例指导测试的实施,保证软件测试有组织、按步骤,以及有计划地进行。黑盒测试行为必须能够加以量化,才能真正保证软件质量,而测试用例就是将测试行为具体量化的方法之一。具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法等。 等价类划分的办法是把程序的输入域划分成若干部分(子集),然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值。该方法是一种重要的,常用的黑盒测试用例设计方法。 1 划分等价类 划分等价类:等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试。因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据。取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。 有效等价类:是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中

软件工程考试试卷答案

一.选择题 1、TURBO C是(D)软件· A、系统软件 B、人工智能 C、事务软件 D、应用软件. 2、计算机辅助软件工程,简称(D) A、SA B、SD C、SC D、CASE' 3、在数据流图中,O(椭圆)代表(C) A、源点 B、终点 C、处理 D、模块、 4、模块聚度越高,说明模块各成分彼此结合的程度越(B) A、松散 B、紧密 C、无法判断 D、相等、 5、软件维护是软件生命周期中的固有阶段,一般认为,各种不同的软件维护中以( C)维护所占维护量最小。 A、纠错性维护 B、代码维护 C、预防性维护 D、文档维护、 6、软件需求分析是保证软件质量的重要步骤,它的实施应该是在(C) A、编码阶段 B、软件开发全过程 C、软件定义阶段 D、软件设计阶段. 7、软件测试方法,黑盒、白盒测试法是常用的方法,其中白盒测试主要用于测试(D) A、结构合理性 B、软件外部功能 C、程序正确性 D、程序部逻輯. 8、软件的结构化设计(SD)方法中,一般分为概要设计和详细设计两阶段,其中详细设计主要是要(D) A、软件结构 B、软件过程 C、软件模型 D、软件模块、 9、软件文档不仅是软件开发各阶段的重要依据,而且与影响软件的(B) A、可理解性 B、可维护性 C、可扩展性 D、可移植性. 10、在瀑布模型中,将软件划分为若干个时期,软件项目的可行性研究一般归属于(B) A、维护时期 B、计划时期 C、运行时期 D、开发时期, 11、系统定义明确之后,应对系统的可行性进行研究。可行性研究应包括(A) A. 软件环境可行性、技术可行性、经济可行性、社会可行性 B. 经济可行性、技术可行性、操作可行性 C. 经济可行性、社会可行性、系统可行性 D. 经济可行性、实用性、社会可行性 12、(C),则说明模块的独立性越强 A、耦合越强 B、扇入数越高 C、耦合越弱 D、扇入数越低 13、面向数据结构的设计方法(JACKSON方法)是进行(B )的形式化的方法 A.系统设计B、详细设计C、软件设计D、编码 14、模块聚度越高,说明模块各成分彼此结合的程度越(B)。 A、松散 B、紧密 C、无法判断 D、相等. 15、软件测试的目的是(C) A.评价软件的质量 B.发现软件的错误. C.找出软件的所有错误 D.证明软件是正确的. 16、结构化设计方法是面向(A )的设计。 A.数据流 B.数据编码 C.数据库 D.数据结构 17、在编程安全方面,一般来说无法做到(B) A、避开错误 B、完美无缺,绝无错误 C、冗余 D、涉及防错程序, 18、数据耦合、公共耦合、标记耦合、控制耦合的耦合性从低到高的序是(B) A.数据、公共、标记、控制 B.数据、标记、控制、公共 C.控制、数据、标记、公共 D.控制、数据、公共、标记.。 19、需求分析最终结果是产生(B) A.项目开发计划B需求规格说明书 C.设计说明书 D.可行性分析报告

白盒测试方法详细说明

白盒测试方法 一、静态结构分析法 程序的结构形式是白盒测试的主要依据。研究表明程序员38%的时间花费在理解软件系统上,因为代码以文本格式被写入多重文件中,这是很难阅读理解的,需要其它一些东西来帮助人们阅读理解,如各种图表等,而静态结构分析满足了这样的需求。 在静态结构分析中,测试者通过使用测试工具分析程序源代码的系统结构、数据结构、数据结构、内部控制逻辑等内部结构,生成函数调用关系图、模块控制流图、内部文件调用关系图、子程序表、宏和函数参数表等各类图形图标,可以清晰地标识整个软件系统的组成结构,使其便于阅读和理解,然后可以通过分析这些图标,检查软件有没有存在缺陷或错误。 其中函数调用关系图通过应用程序中各函数之间的调用关系展示了系统的结构。通过查看函数调用关系图,可以检查函数之间的调用关系是否符合要求,是否存在递归调用,函数的调用曾是是否过深,有没有存在独立的没有被调用的函数。从而可以发现系统是否存在结构缺陷,发现哪些函数是重要的,哪些是次要的,需要使用什么级别的覆盖要求...... 模块控制流图是与程序流程图相类似的由许多节点和连接节点的边组成的一种图形,其中一个节点代表一条语句或数条语句,边代表节点间控制流向,它显示了一个函数的内部逻辑结构。模块控制流图可以直观地反映出一个函数的内部逻辑结构,通过检查这些模块控制流图,能够很快发现软件的错误与缺陷 二、代码检查 代码检查包括桌面检查、代码审查和走查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码逻辑表达的正确性,代码结构的合理性等方面;发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的内容,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。 代码检查方法 1、代码检查法 (1)桌面检查:这是一种传统的检查方法,由程序员检查自己编写的程序。程序员在程序通过编译之后,对源程序代码进行分析、检验,并补充相关文档,目的是发现程序中的错误。由于程序员熟悉自己的程序及其程序设计风格,桌面检查由程序员自己进行可以节省很多的检查时间,但应避免主观片面性 (2)代码审查 由若干程序员和测试员组成一个审查小组,通过阅读、讨论和争议,对程序进行静态分析的过程。代码审查分两步:第一步,小组负责人提前把设计规格说明书、控制流程图、程序文本及有关要求、规范等分发给小组成员,作为审查的依据。小组成员在充分阅读这些材料后,进入审查的第二步,召开程序审查会。在会上,首先由程序员逐句简介程序的逻辑。

软件工程复习题及答案

软件工程复习题(一) 一、选择题 1、瀑布模型本质上是一种() A、线性顺序模型 B、顺序迭代模型 C、线性迭代模型 D、及早见产品模型 2、使用程序设计的控制结构导出测试用例的测试方法是() A、黑盒测试 B、白盒测试 C、边界测试 D、系统测试 3、软件结构图的形态特征能反映程序重用率的是() A、深度 B、宽度 C、扇入 D、扇出 4、软件结构图中,模块框之间若有直线连接,表示它们之间存在() A、调用关系 B、组成关系 C、链接关系 D、顺序执行关系 5、需求分析最终结果是产生() A、项目开发计划 B、需求规格说明书 C、设计说明书 D、可行性分析报告 6、快速原型模型的主要特点之一是( ) A、开发完毕才见到产品 B、及早提供全部完整的软件产品 C、开发完毕后才见到工作软件 D、及早提供工作软件 7、若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:-1.001,-1.0,1.0,1.001。设计这组测试用例的方法是( ) A、条件覆盖法 B、等价分类法 C、边界值分析法 D、错误推测法 8、软件详细设计主要采用的方法是( ) A、模块设计 B、结构化设计 C、PDL语言 D、结构化程序设计 9、开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做( ) A、.软件工程 B、软件周期 C、软件危机 D、软件产生 10、按软件生命周期方法设计软件的过程中,画数据流图属于下面哪个阶段的工作() A、需求分析 B、概要设计 C、详细设计 D、软件维护 11、在快速原型模型的开发过程中,仅作为需求说明的补充形式的原型是() A、探索型模型 B、演化型模型 C、实验型模型 D、提交型模型 12、程序设计语言的工程特性之一为( ) A、软件的可重用性 B、数据结构的描述性 C、抽象类型的描述性 D、数据库的易操作性 13、软件按照设计的要求,在规定时间和条件下达到不出故障,持续运行的要求的质量特性称为( ) A、可用性 B、可靠性 C、正确性 D、完整性 14、模块设计中,最不希望的内聚是() A、功能内聚 B、通信内聚 C、过程内聚 D、偶然内聚 15、实施快速原型模型方法开发软件的关键在于() A、CASE工具的支持 B、如何开发演化型模型 C、项目主管的支持 D、开发人员的素质 16、程序流程图(框图)中的箭头代表( )。 A、数据流 B、控制流 C、调用关系 D、组成关系 17、一个只有顺序结构的程序,其环形复杂度是( )。 A、0 B、1 C、3 D、不确定的

游戏软件测试内容

游戏测试作为软件测试的一部分,它具备了软件测试所有的一切共同的特性:测试的目的是发现软件中存在的缺陷。测试都是需要测试人员按照产品行为描述来实施。产品行为描述可以是书面的规格说明书,需求文档,产品文件,或是用户手册,源代码,或是工作的可执行程序。 总而言之,测试就是发现问题并进行改进,从而提升软件产品的质量。游戏测试也具备了以上的所有特性,不过由于游戏的特殊性,所以游戏测试则主要分为两部分组成,一是传统的软件测试,二游戏本身的测试,由于游戏特别是网络游戏,它相当于网上的虚拟世界,是人类社会的另一种方式的体现,所以也包含了人类社会的一部分特性,同时它又是游戏所以还涉及到娱乐性,可玩性等独有特性,所以测试的面相当的广。称之为游戏世界测试,主要有以下几个特性: 游戏情节的测试:主要指游戏世界中的任务系统的组成。 游戏世界的平衡测试:主要表现在经济平衡,能力平衡(包含技能,属性等等),保证游戏世界竞争公平。 游戏文化的测试:比如整个游戏世界的风格,是中国文化主导,还是日韩风格等等,大到游戏整体,小到NPC(游戏世界人物)对话,比如一个书生,他的对话就必需斯文,不可以用江湖语言。 要了解如何测试游戏必需了解如何做游戏,了解它的开发过程,才能真正的测好游戏。游戏要成功,其基本的必要条件有三。分别为Vision(设计)、technology(技术)和Process(过程)。 游戏策划与测试计划:测试过程不可能在真空中进行。如果测试人员不了解游戏是由那几个部分组成的,那么执行测试就非常的困难,同时测试计划可以明确测试的目标,需要什么资源,进度的安排,通过测试计划,既可以让测试人员了解此次游戏测试中那些是测试重点,又可以与产品开发小组进行交流。在企业开发中,测试计划书来源于需求说明文档,同样在游戏开发过程中,测试计划的来源则是策划书。策划书包含了游戏定位,风格,故事情节,要求的配制等等。从里面了解到游戏的组成,可玩性,平衡(经济与能力),与形式(单机版还是网络游戏),而我们测试在这一阶段主要的事情就是通过策划书来制定详细的测试计划,主要分两个方面一是游戏程序本身的测试计划,比如任务系统,聊天,组队,地图等等由程序来实现的功能测试计划,二是游戏可玩性有测试计划,比如经济平衡标准是否达到要求,各个门派技能平衡测试参数与方法,游戏风格的测试,三是关于性能测试的计划,比如客户端的要求,网络版的对服务器的性能要求。同时测试计划书中还写明了基本的测试方法,要设计的自动化工具的需求,为后期的测试打下良好的基础。同时由于测试人员参与到策划评审,对游戏也有很深入的了解,会对策划提出自己的看法,包含可玩性,用户群,性能要求等等并形成对产品的风险评估分析报告,但这份报告不同于策划部门自己的风险分析报告,主要从旁观者的角度对游戏本身的品质作充分的论证,从而更有效的对策划起到控制

黑盒测试心得

“黑盒”测“外”不测“内” “黑盒”测的是功能 黑盒测试也称功能测试或数据驱动测试。它在已知产品应具有的功能的条件下,通过测试来检测每个功能是否都能正常使用。在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。 “黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。 “黑盒”的两种基本方法 黑盒测试有两种基本方法,即通过测试和失败测试。 在进行通过测试时,实际上是确认软件能做什么,而不会去考验其能力如何。软件测试员只运用最简单,最直观的测试案例。 在设计和执行测试案例时,总是先要进行通过测试。在进行破坏性试验之前,看一看软件基本功能是否能够实现。这一点很重要,否则在正常使用软件时就会奇怪地发现,为什么会有那么多的软件缺陷出现? 在确信了软件正确运行之后,就可以采取各种手段通过搞“垮”软件来找出缺陷。纯粹为了破坏软件而设计和执行的测试案例,被称为失败测试或迫使出错测试。 黑盒测试的设计方法 黑盒测试是以用户的观点,从输入数据与输出数据的对应关系出发进行测试的,它不涉及到程序的内部结构。很明显,如果外部特性本身有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。黑盒测试法注重于测试软件的功能需求,主要试图发现几类错误:功能不对或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止错误。 具体的黑盒测试方法包括等价类划分、因果图、正交实验设计法、边值分析、判定表驱动法、功能测试等。在使用时,自然要针对开发项目的特点对方法加以适当的选择。 ◆等价类划分 等价类划分是一种典型的黑盒测试方法,用这一方法设计测试用例可以不用考虑程序的内部结构,只以对程序的要求和说明,即需求规格说明书为依据,仔细分析和推敲说明书的各项需求,特别是功能需求,把说明中对输入的要求和输出的要求区别开来并加以分解。 由于穷举测试的数量太大,以致于无法实际完成,促使我们在大量的可能数据中选取其中的一部分作为测试用例。例如,在不了解等价分配技术的前提下,测试了1+1、1+2、1+3和1+4之后,还有必要测试1+5和1+6吗?能否放心地认为它们正确吗?那么1+999…(可以

软件测试白盒测试用例练习题

白盒测试用例练习 一、为以下所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖,并画出相应的程序流程图。 void DoWork (int x,int y,int z) { int k=0,j=0; if ( (x>3)&&(z<10) ) { k=x*y-1; j=sqrt(k); //语句块1 } if ( (x==4)||(y>5) ) { j=x*y+10; } //语句块2 j=j%3; //语句块3 }

由这个流程图可以看出,该程序模块有4条不同的路径: P1:(a-c-e) P2:(a-c-d) P3:(a-b-e) P4:(a-b-d) 将里面的判定条件和过程记录如下: 判定条件M={x>3 and z<10} 判定条件N={x=4 or y>5} 1、语句覆盖 2、判定覆盖 p1和p4可以作为测试用例,其中p1作为取真的路径,p4作为取反的路径。 也可以让测试用例测试路径P2和P3。相应的两组输入数据如下:

3、条件覆盖 对于M:x>3取真时T1,取假时F1; z<10取真时T2,取假时F2; 对于N:x=4取真时T3,取假时F3; y>5取真时T4,取假时F4。 条件:x>3,z<10,x=4,y>5 条件:x<=3,z>=10,x!=4,y<=5 根据条件覆盖的基本思路,和这8个条件取值,组合测试用例如表所示: 4、判定/条件覆盖

5、组合覆盖 条件组合 1)x>3,z<10 2)x>3,z>=10 3) x<=3,z<10 4)x<=3,z>=10 5)x=4,y>5 6)x=4,y<=5 7)x!=4,y>5 8)x!=4,y<=5 6、路径覆盖

软件功能测试报告归纳.doc

软件功能测试报告1.概述 软件名称: 软件版本: (同时注明软件软本和测试包的cvs版本) 开发经理:申请单号: 测试人员: 测试日期: 测试内容: 备注: 2.测试环境 用途硬件环境软件环境 表2 测试环境 3.问题统计 (说明:该报告为阶段性测试的统计报告,该报表统计的bug数量为:本发布阶段内第一份申请单提交日期为起,直至填写报告这天为止的BUG数量,如果以前版本中有问题延期至本发布阶段来修正,那么该缺陷也需要统计进来;如果是功能测试报告则只统计当轮的即可,如果是功能+验证则需要统计本发布阶段的) 3.1按BUG状态统计(表格后面可以附上柱形图,以示更直观) BUG状态BUG数量备注 未分配(new) 不是缺陷(Not Bug)

未修改(open) 已修改(fixed) 不予修改(Won’t Fix)延期(Deffered) 被拒绝(Declined)无法重现信息不足重复的 已关闭(Closed) 重开启(Reopen) 合计 表3 按bug状态统计 3.2按BUG类型统计(表格后面可以附上柱形图,以示更直观) BUG 类型 BUG数量 备注未 分 配 未 修 改 不 是 缺 陷 已 修 改 不 予 修 改 延 期 被拒绝 已 关 闭 重 新 开 启 合 计 无 法 重 现 信 息 不 足 重 复 的 功能 界面 交互 3.3按BUG严重级别统计(表格后面可以附上柱形图,以示更直观) BUG 严 BUG数量 备注未未不已不延被拒绝已重合

重级别分 配 修 改 是 缺 陷 修 改 予 修 改 期无 法 重 现 信 息 不 足 重 复 的 关 闭 新 开 启 计 紧 急 严 重 中 等 轻 微 建 议 表5 按bug严重级别统计 3.4按功能模块统计(表格后面可以附上柱形图,以示更直观) 模块名称 BUG数量 备注未 分 配 未 修 改 不 是 缺 陷 已 修 改 不 予 修 改 延 期 被拒绝 已 关 闭 重 新 开 启 合 计 无 法 重 现 信 息 不 足 重 复 的 模块1 模块2 … …

软件工程白盒测试

实验二白盒测试 一、实验目的 通过对于实例程序的测试,熟悉结构性测试的基本方法。 二、实验要求 (1)综合运用结构性测试方法(如逻辑覆盖、基本路径测试等方法)对被测程序进行测试,找出whiteBox.exe程序中存在的缺陷。 三、测试用例的设计 1.对于Triangle Program的测试 Private Sub triangle(a As Long, b As Long, c As Long, progOutput As String) Dim IsATriangle As Boolean 'Are a, b, and c sides of a Triangle? Node (0) If (a < b + c) And (b < a + c) Then Node (1) IsATriangle = True Else Node (2) IsATriangle = False progOutput = "Not a Triangle" End If ' Determine Triangle Type Node (3) If IsATriangle Then Node (4) If (a = b) And (b = c) Then Node (5) progOutput = "Equilateral" Else Node (6) If (a = b) Or (a = c) Then Node (7) progOutput = "Isosceles" Else

Node (8) If (a * a = b * b + c * c) Or (b * b = a * a + c * c) Or (c * c = a * a + b * b) Then Node (9) progOutput = "Right Triangle" Else Node (10) progOutput = "Scalene" End If Node (11) End If Node (12) End If Node (13) End If Node (14) End Sub (1)程序段的控制流图如下:

软件工程导论实验报告 白盒测试 黑盒测试

《软件工程导论》实验报告 学生姓名: 学号: 班级: 指导老师: 专业: 实验日期:

白盒测试 一、实验目的 通过简单程序白盒测试,熟悉测试过程,对软件测试形成初步了解,并养成良好的测试习惯。熟练掌握如何运用基路径测试方法进行测试用例设计,初步熟悉如何利用程序插装技术进行逻辑覆盖率分析。 二、实验内容: 1、被测试程序功能:求解系数为整数的方程ax2+bx+c=0 2、程序定义:键盘输入3个数字a,b,c,求解方程ax2+bx+c=0 3、测试环境:Windows 8.1、Eclipse 4、说明:本次测试采用插桩测试法,由于程序比较简单,手动输入测试用例。 四、实验步骤 1、程序流程图

2、代码: import java.util.Scanner; public class test { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入3个整数a,b,c:"); String as; String bs; String cs; int a=0; int b=0; int c=0; double x, x1, x2; as=sc.nextLine(); bs=sc.nextLine(); cs=sc.nextLine(); try{ a=Integer.parseInt(as); b=Integer.parseInt(bs); c=Integer.parseInt(cs); }catch(Exception e){ System.out.println("输入错误"); System.exit(0); } if (a == 0) { if (b == 0) { if (c == 0) System.out.println("无穷多解" ); else

软件测试白盒测试实验报告

三角形判定 (1)题目内容描述 输入三条边,进行三角形的判定。 (2)测试用例的编写 测试用例参照三角形的组成规则编写。根据两边之和大于第三边的规则编写测试用例,并且考虑输入值非法的情况(小于0的数)。 程序代码: #include using namespace std; void main() { int b; int c; int a; cin >> a >> b >> c; if (a*b*c != 0 && (a + b > c&&b + c > a&&a + c > b)) { if (a == b&&b == c) { cout << "您输入的是等边三角形!"; } else if ((a + b > c&&a == b) || (b + c > a&&b == c) || (a + c > b&&a == c)) { cout << "您输入的是等腰三角形!"; }

else if ((a*a + b*b == c*c) || (b*b + c*c == a*a) || (a*a + c*c == b*b)) { cout << 您输入的是直角三角形!"; } else { cout << ”普通三角形”; } } else{ cout << "您输入的不能构成三角形"; } }

一:1 2 3 11 预期输出:您输入的不能构成三角形!二:1 2 4 5 11 预期输出:您输入的是等边三角形!三:1 2 4 6 7 11 预期输出:您输入的是等腰三角形!四:1 2 4 6 8 9 11 预期输出:您输入的是直角三角形!五:1 2 4 6 8 10 11预期输出:您输入的是普通三角形 测试实验用例: 一:语句覆盖: 二:条件覆盖:

黑盒测试实验报告记录

黑盒测试实验报告记录

————————————————————————————————作者:————————————————————————————————日期:

黑盒测试实验报告 一实验内容 1、系统地学习和理解黑盒测试的基本概念、原理,掌握黑盒测试的基本技术和方 法; 2、对一个已知的程序进行测试。 3、通过试验和应用,要逐步提高和运用黑盒测试技术解决实际测试问题的能力; 4、完成实验并认真书写实验报告(要求给出完整的测试信息,如测试程序、测试 用例,测试报告等) 二实验原理 黑盒测试原理:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看作一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试。 从理论上讲,黑盒测试只有采用穷举输入测试,把所有可能的输入都作为测试情况考虑,才能查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但可能的输入进行测试。这样看来,完全测试是不可能的,所以我们要进行有针对性的测试,通过制定测试案例指导测试的实施,保证软件测试有组织、按步骤,以及有计划地进行。黑盒测试行为必须能够加以量化,才能真正保证软件质量,而测试用例就是将测试行为具体量化的方法之一。具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法等。 等价类划分的办法是把程序的输入域划分成若干部分(子集),然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值。该方法是一种重要的,常用的黑盒测试用例设计方法。 1 划分等价类 划分等价类:等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试。因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据。取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。 有效等价类:是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。 无效等价类:与有效等价类的定义恰巧相反。 设计测试用例时,要同时考虑这两种等价类。因为,软件不仅要能接收合理的数据,也要能经受意外的考验。这样的测试才能确保软件具有更高的可靠性。 2 边界值分析 边界值分析是通过选择等价类边界的测试用例。边界值分析法不仅重视输入条件边界,而且也必须考虑输出域边界。它是对等价类划分方法的补充。 (1)边界值分析方法的考虑:

软件工程白盒测试练习及解答

白盒测试练习 1、什么是白盒测试? 白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。 2、什么是测试用例? 一组由前提条件、输入、执行条件、预期结果等组成,以完成对某个特定需求或者目标测试的数据,体现测试方案、方法、技术和策略的文档 3、写出以上程序的所有路径; L1(1->2->3) L2(1->4->5->3) L3(1->2->6->7) L4(1->4->5->6->7) 4、尝试用表格的形式描述满足以下情况的测试用例:

a)写出满足语句覆盖需要的测试用例; 解:语句覆盖就是程序中每一个语句至少能被执行一次 运行结果 b)写出满足判定覆盖(分支覆盖)需要的测试用例; 解:判定覆盖就是程序中每个判定至少有一次为真值,有一次为假值,使得程序中 每个分支至少执行一次 运行结果

c) 写出满足条件覆盖需要的测试用例; 解:条件覆盖是程序各判定中的每个条件获得各种可能的取值至少满足一次 运行结果 d) 写出满足判定/条件覆盖需要的测试用例; 解:判定/条件覆盖是程序中每个判定至少有一次为真值,有一次为假值,使得程序中每个分支至少执行一次,且使得各判定中的每个条件获得各种可能的取值至少满足一次。

运行结果 e) 写出满足条件组合覆盖需要的测试用例。 解:条件组合覆盖是判定中条件的各种组合都至少被执行一次 运行结果

游戏测试与软件测试的区别

游戏测试与软件测试的区别 灰度发布 关于软件测试与游戏测试的区别,网上也有几篇文章提到,但是感觉没有描述的特别清晰,原因无非2点:一是即做过软件测试又做过游戏测试的人本身不多,二是在软件和游戏测试都做过的这一小撮人里善于归纳总结的更是少之又少。笔者不才,恰恰软件测试和游戏测试都做过,而且都从事的时间较长,感触颇多,今天尝试阐述下2者的不同,希望能够抛砖引玉,共同探讨学习。 游戏本质也是软件的一种,所以从测试工程的角度来讲,游戏测试与软件测试的本质是完全相同的。2者的不同更多的是在表象层面或者流程方面,我们可以把游戏测试看作软件测试的子类,它继承了软件测试这个父类的特性,又有自己的一些新特性。 笔者通过归纳总结,把游戏测试相对软件测试的不同归纳为以下几点: 1,UIUE 2,数值 3,活动 4,进度 5,工具 6,性能 7,安全 8,合服(针对网游) 9,交互 10,网络 下面我们就每一点来详细探讨下。

1,UIUE。相对来讲UIUE在游戏和软件测试中,重要性并非很高,但它们确是用户和测试人员最直观感受的部分,也最受“非专业人士”的关注,游戏行业尤甚。对大部分软件来说,UIUE的重要性没有游戏那么高,毕竟软件使用过程愉悦感和趣味性并非是重要的事情,我们日常使用各种各样的软件时肯定深有体会,大部分情况是用软件来完成一项任务,能完成就好了,在使用过程中很难体会到上面说的愉悦感和趣味性。而游戏则不然,在玩游戏的过程中,愉悦感和趣味性是至关重要的,如果缺失了这些要素,用户可能瞬间就流失了,也就意味着这款游戏失败了。这好比高层小户型和海景别墅,虽然都能满足居住需求,但给人的感觉是完全不同的。 2,数值。数值对游戏而言是至关重要的,无论是单机游戏还是网络游戏,玩家非常重视自己角色的数值增长,任何差错都可能导致用户的抱怨甚至流失。另一个层面是游戏的功能之间的耦合度非常高,数值之间有着千丝万缕的关联。所以测试的过程中需要关注每个数值变化带来的各种影响。而软件功能之间的耦合度则没有这么高,很多情况下功能之间的数值是相对独立的。而且软件的用户很多时候并不关注内部的数值,能完成所需即可,细微的差错甚至都没人关心。举个例子,比如很多显示开机速度的软件,在用户打开电脑时会提示用户开机速度击败了百分之多少的其它用户,至于是20%还是25%,可能对用户而言没什么太大的差别。而游戏则不然,比如一个角色的战斗力是1000,下次登陆变成999,仅仅是1的差距,玩家可能就会愤怒的打客服电话质问了。 3,活动。很多软件也经常搞活动,笔者经常遇到某邮箱或某论坛搞活动送积分之类的,但是在游戏中,活动则是频度更高的一种玩法。所以测试过程中可能受到的关注度更高一些,尤其是网络游戏。游戏活动的测试更关注时间与资源产出,如开启时间,关闭时间,资源产出概率等。因为一个活动的开启和关闭及产出都已经提前公告给玩家,如果出了任何差错,都会导致玩家不满。而且一个活动完毕后

软件工程白盒测试

白盒测试 白盒测试以程序的结构为依据,所有又称为结构测试。早期的白盒测试把注意力放在流程图的各个判定框,使用不同的逻辑覆盖标准来表达对程序进行测试的详尽程度。随着测试技术的发展,人们越来越重视对程序执行路径的考察,并且用程序图代替流程图来设计测试用例。为了区分这两种白盒测试技术,以下把前者称为逻辑覆盖测试,后者称为路径测试。 一、逻辑覆盖测试 逻辑覆盖测试法(Logic Coverage Testing )考察的重点是图中的判定框(菱形框)。因为这些判定若不是与选择结构有关,就是与循环结构有关,是决定程序结构的关键成分。 按照对被测程序所作测试的有效程度,逻辑覆盖测试可由弱到强区分为5种覆盖标准: 发现错误的能力 弱 强 语句覆盖 每条语句至少执行一次 判定覆盖 每一判定的每个分支至少执行一次 条件覆盖 每一判定中的每个条件,分别按“真”、“假”至少各执行一次 判定/条件覆盖 同时满足判定覆盖和条件覆盖的要求 条件组合覆盖 求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次 举例说明: 有一个程序段如下: a b F T c d F T e (A>1) (B=0) (A=2) (x>1) x=x/a x=x+1

(a)语句覆盖:设计若干个测试用例,运行被测程序,使得每一个可执行语句至 少执行一次。例如在上图所给出的例子中,正好所有的可执行语句都在路径L1(a->c->e)上,所以选择路径L1设计测试用例,就可以覆盖所有的可执行语句。 L1(a->c->e) ={(A>1) and (B=0) } and {(A=2) or (x/A>1)} =(A=2) and (B=0) or {(A>1) and (B=0) and (x/A>1)} 测试用例可以设计为:【(2,0,4),(2,0,3)】覆盖ace【L1】 从程序中每个可执行语句都得到执行这一点来看,语句覆盖的方法似乎能够比较全面的检验每一个可执行语句。但与后面介绍的其它覆盖相比,语句覆盖是最弱的逻辑覆盖准则。 (b)判定覆盖 所谓判定覆盖就是设计若干个测试用例,运行被测试程序,使得程序中每个判断的取真分支和取假分支至少经历一次。判定覆盖又称为分支覆盖。如上例如果选择路径L1(a->c->e)和L2(a->b->d),可得满足要求得测试用例: L2(a->b->d) ={(A<=1) or (B≠0) } and {(A≠2) and (x<=1)} =( A<=1) and (x<=1) or {( B≠0) and (A≠2) and (x<=1)} 测试用例可以设计为: 【(2,0,4),(2,0,3)】覆盖ace【L1】 【(1,1,1),(1,1,1)】覆盖abd【L2】 如果选取路径L3(a->b->e)和L4(a->c->d) L3(a->b->e) ={(A<=1) or (B≠0) } and {(A=2) or (x>1)} ={( A<=1) and (x>1)} or {( B≠0) and (A=2) } or {( B≠0) and (x>1)} L4(a->c->d) ={(A>1) and (B=0) } and {(A≠2) and (x/A<=1)} 还可以得到另一组可用得测试用例: 【(2,1,1),(2,1,2)】覆盖abe【L3】 【(3,0,3),(3,1,1)】覆盖acd【L4】 所有测试用例得取法不唯一。注意有例外情况,例如,如果把上例中第二个判定中的条件x>1错写成x<1,那么利用上面两组测试用例,仍能得到同样的结果。这表明,只是判定覆盖,还不能保证一定能查出在判断得条件中存在得错误。因此还需要更强的逻辑覆盖准则检验判断内部条件。 (c)条件覆盖

软件工程与软件测试技术

《软件工程与软件测试技术》 课程复习资料 注:如学员使用其他版本教材,请参考相关知识点及教师PPT PPT相关章节标记示例“(1.1),(1.4)” 一、客观部分:(单项选择、多项选择、不定项选择、判断) (一)单项选择题 1.关于原型化开发方法的叙述中,不正确的是()。 A. 原型化方法适应于需求不明确的软件开发 B. 在开发过程中,可以废弃不用早期构造的软件原型 C. 原型化方法利于确认各项系统服务的可用性 D. 原型化方法可以直接开发出最终产品 ★考核知识点: 原型开发模型的特点。相关知识参考教材中P8及课件相关内容。(1.1) 2.以下属于软件维护阶段文档的是()。 A.测试分析报告 B.操作手册 C.软件问题报告 D.软件需求说明 ★考核知识点:软件生命周期各阶段的任务,在软件维护的流程中,第一步就是制定维护申请报告,也称为软件问题报告,它是维护阶段的一种文档,由申请维护的用户填写。(1.1) 3.在软件生命周期的不同阶段,需要实施不同类型的测试工作,单元测试是对程序设计进 行验证,其中()不是单元测试的主要内容。 A. 模块接口测试 B. 有效性测试 C. 路径测试 D. 边界测试 ★考核知识点:单元测试的主要内容,有效性测试即确认测试,不属于单元测试。(1.1) 4.软件测试的目的是()。 A.发现程序中的错误

B. 证明程序中没有错误 C. 测量程序的动态特性 D. 检查程序中的语法错误 ★考核知识点:软件测试的目的。(2.1) 5.对于软件的β测试,下列描述正确的是()。 A.β测试就是在软件公司内部展开的测试,由公司专业的测试人员执行的测试 B.β测试就是在软件公司内部展开的测试,由公司的非专业测试人员执行的测试 C.β测试就是在软件公司外部展开的测试,由专业的测试人员执行的测试 D.β测试就是在软件公司外部展开的测试,可以由非专业的测试人员执行的测试 ★考核知识点: β测试的概念,又称用户测试。(2.1) 6.V模型指出,()对程序设计进行验证 . A. 验收测试和确认测试 B. 系统测试 C. 单元和集成测试 D. 验证测试 ★考核知识点:V模型的概念,单元和集成测试对程序设计进行验证。(2.3)7.下面哪个不属于静态测试?() A.编码规则检查 B.内存泄漏 C.程序复杂度分析 D.程序结构分析 ★考核知识点:静态测试的内容,编码规则检查、程序复杂度分析和程序结构分析都属于静态测试,内存泄露属于性能测试检查的范畴,不属于静态测试。 (3.2) 8.使用白盒测试方法时,确定测试数据应根据()和指定的覆盖标准。 A.程序的内部逻辑 B.程序的复杂结构 C.使用说明书 D.程序的功能 ★考核知识点:白盒测试的概念,白盒测试主要根据程序的内部逻辑来设计测试用例。(3.1) 9.下列测试工具中哪个不能作为性能测试压力工具() A.Quick Test Professional B. Borland SilkPerformer C. Compware QA Center Performance Edition D. Mercury LoadRunner ★考核知识点:性能测试工具(5.4) 10.在McCall软件质量度量模型中,属于面向软件产品适应的是(). A.可用性B.适应性C.可维护性D.可互操作性 ★考核知识点:McCall质量模型(7.1) 11.下列关于软件测试的叙述中,正确的是() A.用黑盒法测试时,测试用例是根据程序内部逻辑设计的 B.测试是为了验证该软件已正确地实现了用户的要求

相关文档
最新文档