《软件测试》课件第1章_第1页
《软件测试》课件第1章_第2页
《软件测试》课件第1章_第3页
《软件测试》课件第1章_第4页
《软件测试》课件第1章_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目一设计测试用例测试分段函数程序1.1问题情境1.2问题分析1.3任务设计与实施1.4知识总结1.5应用实践

有一个程序,用来计算某个分段函数y

=

f(x)的值,要求设计一组测试用例来测试该程序是否存在某些缺陷或是错误。具体函数功能如下:1.1问题情境

该函数是一个具有四个段的分段函数,假设为实数域的函数。根据以往对程序进行验证的经验,分别在每个分段中取出一组或是两组数据进行测试。如果正确,即可保证程序在该分段上是正确的。1.2问题分析

步骤1:分析问题,设计测试用例。

根据以上分析,在分段函数的每个分段区间设计一组测试用例即可,因为这些测试用例对测试该段函数的正确性有着等价的作用。针对上述分段函数设计如表1-1所示的测试用例。1.3任务设计与实施表1-1分段函数的测试用例在该测试用例中,包含两部分内容,第一部分是输入,即程序要求输入的值;第二部分是根据输入将会得到的预期的输出结果。

步骤2:根据步骤1设计出的测试用例测试程序。

在此处不提供该分段函数的程序,读者可自己编写一个程序,然后执行步骤2。

将程序按照上面设计的每个输入执行一遍,如果执行结果和预期结果一致,表明程序正确。如果不一致,证明程序存在缺陷或是错误。同时记录测试数据及结果。步骤3:写出测试报告。

测试报告模板见附录C,读者可自行完成。

小结:该分段函数程序测试用例的设计思想就是软件测试中一种最基本也是最常用的方法——等价类划分法。

1.4.1黑盒测试方法——等价类划分法

1.黑盒测试方法的概念

黑盒测试的基本观点是:任何程序都可以看做是从输入定义域映射到输出值域的函数过程,被测程序被认为是一个打不开的黑盒子,黑盒中的内容(实现过程)完全不知道,只明确要做到什么。作为软件功能的测试手段,黑盒测试是重要的测试方法。黑盒测试中,根据规格说明,主要依靠的是被测程序输入和输出之间的关系或程序的功能设计测试用例,并不涉及程序内部结构和内部特性。1.4知识总结很明显,如果内部特性本身有问题或规格说明书的规定有误,用黑盒测试方法是发现不了的。黑盒测试方法着重测试软件的功能需求,是在程序接口上进行的测试,主要是为了发现以下错误:

(1)是否有不正确的功能,是否有遗漏的功能。

(2)在接口上,是否能够正确地接收输入数据并产生正确的输出结果。

(3)是否有数据结构错误或外部信息访问错误。

(4)性能上是否能够满足要求。

(5)是否有程序初始化和终止方面的错误。黑盒测试有以下两个显著的特点:

(1)黑盒测试不考虑软件的具体实现过程,当软件实现的过程发生变化时,测试用例仍然可以使用。

(2)黑盒测试用例的设计可以和软件实现同时进行,这样能够压缩总的开发时间。

黑盒测试能够找到大多数其他测试方法无法发现的错误,对于一些外购软件、参数化软件包以及某些自动生成的软件,由于无法得到源程序,在一些情况下只能选择黑盒测试。

黑盒测试有两种基本方法,即通过测试和失败测试。

在进行通过测试时,实际上是确认软件能做什么,而不会去考验其能力如何。软件测试人员只是运用最简单、最直观的测试案例进行测试。在设计和执行测试案例时,总是先要进行通过测试,验证软件的基本功能是否都已实现。

在确信了软件正确运行之后,就可以采取各种手段通过搞垮软件来找出缺陷。纯粹为了破坏软件而设计和执行的测试案例,被称为失败测试或迫使出错测试。

黑盒测试的具体技术方法主要包括等价类划分法、边界值分析法、因果图法、决策表法等。这些方法都是比较实用的,在设计具体的测试方案时需要针对开发项目的特点选择适当的设计方案。

2.等价类划分法的概念

等价类划分法是黑盒测试用例设计中一种常用的设计方法,它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。

等价类划分法是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。所谓等价类,是指输入域的某个子集合,所有等价类的并集就是整个输入域。在等价类中,各个输入数据对于揭露程序中的错误都是等效的,它们具有等价特性。因此,测试某个等价类的代表值就等价于对这一类中其他值的测试。也就是说,如果某一类中的一个例子发现了错误,这一等价类中的其他例子也能发现同样的错误;反之,如果某一类中的一个例子没有发现错误,则这一类中的其他例子也不会查出错误。

软件不能只接收合理有效的数据,也要具有处理异常数据的功能,这样的测试才能确保软件具有更高的可靠性。因此,在划分等价类的过程中,不但要考虑有效等价类的划分,同时也要考虑无效等价类的划分。

使用等价类划分法设计测试用例,首先必须在分析需求规格说明的基础上划分等价类,然后列出等价类表。

例1

设计测试用例,实现一个对所有实数进行开平方运算(y

=

sqrt(x))的程序的测试。

由于开平方运算只对非负实数有效,这时需要将所有的实数(输入域x)进行划分,可以分成正实数、0和负实数。假设我们选定

+1.44代表正实数,-2.5代表负实数,则为该程序设计的测试用例的输入为

+1.44、0和

-2.5。

3.等价类的划分原则

等价类是输入域的某个子集合,而所有等价类的并集就是整个输入域。因此,等价类对于测试有两个重要的意义:

完备性:整个输入域提供一种形式的完备性。

无冗余性:若互不相交则可保证一种形式的无冗余性。

划分等价类需要先从程序的规格说明书中找出各个输入条件,再把每个输入条件划分成两个或多个等价类,形成若干个互不相交的子集。

采用等价类划分法设计测试用例通常分两步进行:

(1)确定等价类,列出等价类表。

(2)确定测试用例。划分等价类可分为两种情况:

(1)有效等价类是指对软件规格说明而言,由有意义的、合理的输入数据所组成的集合。利用有效等价类,能够检验程序是否实现了规格说明中预先规定的功能和性能。

(2)无效等价类是指对软件规格说明而言,由无意义的、不合理的输入数据所构成的集合。利用无效等价类,可以鉴别程序异常处理的情况,检查被测对象的功能和性能的实现是否有不符合规格说明要求的地方。进行等价类划分的依据有以下几种:

(1)按照区间划分。在输入条件规定了取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类。

例2

程序输入条件为小于100大于10的整数x,则有效等价类为10<x<100,两个无效等价类为x≤10和x≥100。

例3

程序输入x取值于一个固定的枚举类型{1,3,7,15},且程序中对这4个数值分别进行了处理,则有效等价类为x

=

1、x

=

3、x

=

7、x

=

15,无效等价类为x

1,3,7,15的值的集合。

(2)按照数值划分。在规定了一组输入数据(假设包括n个输入值),并且程序要对每一个输入值分别进行处理的情况下,可确定n个有效等价类(每个值确定一个有效等价类)和一个无效等价类(所有不允许的输入值的集合)。

(3)按照数值集合划分。在输入条件规定了输入值的集合或规定了“必须如何”的条件下,可以确定一个有效等价类和一个无效等价类(该集合有效值之外)。

例4

程序输入条件为取值为奇数的整数x,则有效等价类为x的值为奇数的整数,无效等价类为x的值不为奇数的整数。

例5

程序输入条件为以字符“a”开头、长度为8的字符串,并且字符串不包含“a”~“z”之外的其他字符,则有效等价类为满足了上述所有条件的字符串,无效等价类为不以“a”开头的字符串、长度不为8的字符串和包含了“a”~“z”之外的其他字符的字符串。

(4)细分等价类。在确定划分的等价类中各元素在程序中的处理方式不同的情况下,则应将该等价类进一步划分为更小的等价类,并建立等价类表。

(5)按照限制条件或规则划分。在规定了输入数据必须遵守的规则或限制条件的情况下,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。

4.等价类划分法的测试用例设计

在设计测试用例时,应同时考虑有效等价类和无效等价类测试用例的设计。根据已列出的等价类表可确定测试用例,具体过程如下:

(1)首先为等价类表中的每一个等价类分别规定一个唯一的编号。

(2)设计一个新的测试用例,使它能够尽量覆盖尚未覆盖的有效等价类。重复这个步骤,直到所有的有效等价类均被测试用例所覆盖。

(3)设计一个新的测试用例,使它仅覆盖一个尚未覆盖的无效等价类。重复这一步骤,直到所有的无效等价类均被测试用例所覆盖。

5.常见等价类划分测试形式

针对是否对无效数据进行测试,可以将等价类测试分为标准等价类测试和健壮等价类测试。

(1)标准等价类测试不考虑无效数据值,测试用例使用每个等价类中的一个值。

(2)健壮等价类测试主要的出发点是考虑无效等价类。对有效输入,测试用例从每个有效等价类中取一个值;对无效输入,一个测试用例有一个无效值,其他值均取有效值。健壮等价类测试存在两个问题:需要花费精力定义无效测试用例的期望输出;对强类型的语言没有必要考虑无效的输入。1.4.2使用测试用例的原因

作为软件质量控制特定的概念和技能,测试用例的设计成为唯一被广泛认可的东西。在软件项目测试过程中,最值得考虑的、最重要的当属测试用例的设计以及创建有效的测试用例。但是,仍然有不少的测试团队和测试人员认为没有必要编写和设计测试用例,尤其是当敏捷编程开始盛行后,很多人更是认为编写和设计测试用例是浪费时间。为什么要编写测试用例?测试用例至少有两个用途或目的:

(1)如果顾客有要求的话,测试用例会是交付给顾客的产品中的一部分。测试用例在这里起到了提高软件可信度的作用。

(2)测试用例只作为内部使用,目的是提高测试效率。在代码尚未完成时,我们基于设计编写测试用例,一旦代码准备好了,我们就可以很快地测试产品。测试永远也无法保证发现所有的错误。测试用例的设计如此重要,正是因为完整的测试是不可能的,任何项目的测试都是不完整的。因此,在有限的时间和资源下,很显然我们需要通过设计测试用例,让测试尽可能地完善。

按照等价类划分法为保险公司人寿保险费计算程序设计等价类,假设保费为1万元。设计测试用例。

某保险公司人寿保险的保费计算方式为:保费

=

投保额

×

保险费率。其中,保险费率根据点数的不同而有所不同。例如10点以上的保险费率为0.6%,10点及以下的保险费率为0.1%;而点数又是由投保人的年龄、性别、婚姻状

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论