好文档 - 专业文书写作范文服务资料分享网站

计算机二级公共基础知识-[免费下载] 

天下 分享 时间: 加入收藏 我要投稿 点赞

(i , j , x)

(6,4,0) (6,4,6) 输入

(i , j) 输出 (i , j , x)

(5,10,0) (5,10,10) 测试用例3

判断-条件覆盖也有缺陷,对质量要求高的软件单元,可根据情况提出多重条件组合覆盖以及其他更高的覆盖要求。

(2)基本路径测试

基本路径测试的思想和步骤是,根据软件过程性描述中的控制流程确定程序的环路复杂性度量,用此度量定义基本路径集合,并由此导出一组测试用例对每一条独立执行路径进行测试。 例3.5设有程序流程图表示的程序如图3.28

对图3.28的程序流程图确定程序的环路复杂度,方法是:环境复杂度=程序流程图中的判断框个数+1

则环路复杂度的值即为要设计测试用例的基本路径数,图3。28所示的程序环路复杂度为3,设计如表3。3列出的一组测试用例,覆盖的基本路径是:abf , acef , adcf

测试用例 通过路径 [(A=-2,B=0),(输出略)] Abf [(A=5,B=0),(输出略)] Acef [(A=5,B=5),(输出略)] acdf

3.黑盒测试方法与测试用例设计

黑盒测试方法也称功能测试或数据驱动测试。黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证。黑盒测试完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明。所以,黑盒测试是在软件接口处进行,完成功能验证。黑盒测试只检查程序功能是否按照需求规格说明书的规定政党使用,程序是否能适当地接输入数据而产生正确的输出信息并且保持外部信息(如数据库或文件)的完整性。

黑盒测试主要诊断功能不对或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止条件错。 黑盒测试方法主要有等价类划分法、边界值分析法、错误推测试法、因果图等,主要用于软件确认测试。 (1)等价类划分法

等价类划分法是一种典型的黑盒测试方法,它是将程序的所有可能的输入数据划分成若干部分(及若干等价类),然后从每个等价类中选取数据作为测试用例,对每一个等价类,各个输入数据对发现程序中的错误的几率都有是等效的,因此只需从每个等价中选取一些有代表性的测试用例进行测试而发现错误。

使用等价类划分法设计测试方案,首先需要划分输入集合的等价类。等价类包括: ① 有效等价类:合理、有意义的输入数据构成的集合。可以检验程序中符合规定的功能、性能。 ② 无效等价类:不合理、无意义的输入数据构成的集合。可以检验程序中不符合规定的功能、性能。 为此,需要研究程序的功能说明,从而确定输入数据的有效等价类的无效等价类。 等价类划分法实施步骤分为两步: 第1步:划分等价类;

第2步:根据等价类选取相应的测试用例

例3.6程序实现输入3个边长(设为A,B,C),判断能否构成三角形。对该程序考虑等价类划分法。满足测试三角形构成

条件程序的等价类划分如表3。4所示。

输入条件 有效等价类 无效等价类

1边长A,B,C限制 A>0或B>0或C>0 A<=0或B<=0或C<=0

2边长关系限制 A+B>C或B+C>A或A+C>B A+B<=C或B+C<=A或A+C<=B 根据表3。4划分的等价类,可以设计以下的测试用例: 对满足输入条件1和2的有效等价类设计的测试用例: [(A=3,B=4,C=5),(符合三角形构成条件)] 对满足输入条件1的无效等价类设计的测试用例: [(A=-3,B=4,C=5),(无效输入)]

对满足输入条件2的无效等价类设计的测试用例: [(A=3,B=4,C=8),(无效输入)] 划分等价类常用的几条原则是:

若输入条件规定了确切的联欢会范围,则可划分出一个有效等价类和两个无效等价类; 若输入条件规定了输入 值的集合(或有“必须如何”的条件),可确定一个有效等价类和一个无效等价类; 若输入条件是一个布尔量,则可确定一个有效等价类和一个无效等价类;

若输入数据是一组值,且程序要对每个值分别处理。可为每个输入值确定一个有效等价类和一个无效等价类; 若规定了输入数据必须遵守一定规则,则可确定一个有效等价类和若干个无效等价类;

若已划分的等价类中各元素在程序中处理方式不同,须将该等价类进一步划分(更小的等价类)。 (2)边界值分析法

边界值分析法是对各种输入、输出范围的边界情况设计测试用例的方法。

经验表明,程序错误最容易出现在输入或输出范围的边界处,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。

使用边界值分析法设计测试用例,确定边界情况应考虑选取正好等于,刚刚大于,或刚刚小于边界的值作为测试数据,这样发现程序中错误的概率较大。

边界值分析方法的使用要注意以下几点: ① 如果输入条件规定了取值范围或数据个数,则可选择正好等于边界值、刚刚在边界范围内和刚刚超越边界外的值进行测试; ② 针对规格说明的每个输入条件,使用上述原则; ③ 对于有序数列,选择第一个和最后一个作为测试数据。 一般多用边界值分析法来补充等价类划分方法。 (3)错误推测法

人们可以靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子,这就是错误推测法。 错误推测法的基本想法是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。错误推测法针对性强,可以直叫苄入可能的错误,直接定位,是一种非常实用、有效的方法。但是它需要丰富的经验和专业知识。 错误推测法的实施步聚一般是,对被测软件首先列出所有可能有的错误和易错情况表,然后基于该表设计测试用例。

例如,一般程序中输入为0或输出为0的情形是易错情总,测试者可以设计输入值为0的测试情况,以及使输出强迫为0的测试情况。

例如,要测试一个排序子程序,特别需要检查的情况是:输入表为空;输入表只含有一个元素;输入表的所有元素的值都相同;输入表已经排过序。这些情况都在程序设计时可能忽略的特殊情况。

实际上,无论是使用白盒测试方法还是黑盒测试方法,或是其他测试方法,针对一种方法设计的测试用例,仅仅是易于发现某种类型的错误,对其他类型的错误不易发现,所以没有一种用例设计方法能适应全部的测试方案,而是各有所长,综合使用各种方法来确定合适的测试方案,应该考虑在测试成本和测试效果之间的一个合理折中。 四、 软件测试的实施

软件测试是保证软件质量的重要手段,软件测试是一个过程,其测试流程是该过程规定的程序,目的是使软件测试工作系统化。

软件测试过程一般按4个步骤进行,即单元测试,集成测试、验收测试(确认测试)和系统测试。 通过这些步骤的实施来验证软件是否合格,能否交付用户使用。 1、 单元测试

单元测试是对软件设计的最小单位——模块(程序单元)进行正确性检验的测试。单元测试的目的是发现各模块内部可能存在的各种错误。

单元测试的依据是详细设计说明书和源程序。

单元测试的技术可以采用静态分析和动态测试。对动态测试通常以白盒动态测试为主,辅之以黑盒测试。

单元测试主要针对模块的下列5个基本特性进行: ① 模块接口测试——测试通过模块的数据流。例如,检查模块的输入参数和输出参数、全局量、文件属性与操作等都属于模块接口测试的内容。 ② 局部数据结构测试。例如,检查局部数据说明的一致性,数据的初始化,数据类型的致以及数据的下溢、上溢等。 ③ 重要的执行路径的检查。 ④ 出错处理测试。检查模块的错误处理功能。 ⑤ 影响以上各点及其他相关点的边界条件测试。

单元测试是针对某个模块,这样的模块通常并不是一个独立的程序,因此模块自己不能运行,而要靠辅助其他模块调用或驱动。同时,模块自身也会作为驱动模块去调用其他模块,也就是说,单元测试要考虑它和外界的联系,必须在一定的环境下进行,这些环境可以是真实的也可以是模拟的。模拟环境是单元测试常用的。

所谓模拟环境就是在单元测试中,用一些辅助模块去模拟与被测试模块的相联系的其他模块,即为被测模块设计和搭建驱动模块和桩模块。

其中,驱动模块相当于被测模块的主程序。它接收测试数据,并传给被测模块,输出实际测试结果。桩模块通常用于代替被测模块调用的其他模块,其作用仅做少量的数据操作,是一个模拟子程序,不必将模块的所有功能带入。 2.集成测试

集成测试是测试和组装软件的过程。它是把模块在按照设计要求组装起来的同时进行测试,主要目的是发现与接口有关的错误。集成测试的依据是概要设计说明书。

集成测试所涉及的内容包括:软件单元的接口测试、全局数据结构测试、边界条件和非法输入的测试等。 集成测试时效模块组装成程序通常采用两种方式:非增量方式组装与增量方式组装。

非增量方式也称为一次性组装方式。将测试好的每一个软件单元一次组装在一起再进行整体测试。

增量方式是将已经测试好的模块逐步组装成较大系统,在组装过程中边连接边测试,以发现连接过程中产生的问题。最后通过增殖,逐步组装至所要求的软件系统。

增量方式包括自顶向下、自底向上、自顶向下与自底向上相结合的混合增量方法。 (1) 自顶向下的增量方式

将模块按系统程序结构,从主控模块(主程序)开始,沿控制层次自顶向下地逐个把模块连接起来。自顶向下的增量方式在测试过程中能较早地验证主要的控制的判断点。 自顶向下集成的过程与步骤如下: ① 主控模块作为测试驱动器。直接附属于主控模块的各模块全都用桩模块代替。 ② 按照一定的组装次序,每次用一个真模块取代一个附属的桩模块。 ③ 当装入每个真模块时都要进行测试。 ④ 做完每一组测试后再用一个真模块代替另一个桩模块。 ⑤ 可以进行回归测试(即重新再做过去做过的全部或部分测试),以便确定没有新的错误发生。 例3.7对图3。30(A)所示程序结构进行自顶向下的增量方式组装测试。 自顶向下的增量方式的组装过和如图3。30(B)~(F)所示 (2) 自底向上的增量方式

自底向上集成测试方法是从软件结构中最底层的、最基本的软件单元开始进行集成和测试。在模块的测试过程中需要从子模块得到的信息可以直接运行子模块得到。由于在逐步向上组装过程中下层模块总是存在的,因此不再需要桩模块,但是需要调用这些模块的驱动模块。

自底向上集成的过程与步骤如下: ① 低层的模块组成簇,以执行某个特定的软件子功能。 ② 编写一个驱动模块作为测试的控制程序,和被测试的簇连在一起,负责安排测试用例的输入及输出。 ③ 对簇进行测试。 ④ 拆去各个小簇的驱动模块,把几个小簇合并成大簇,再重复做2。3。4步。这样在软件结构上逐步向上组装。 例3.8对图3。31(A)所示程序结构进行自底向上的增量方式的组装测试。 自底向上的增量方式的组装过程如图3。31(B)至(D)所示。 (3) 混合增量方式

自顶向下增量的方式和自底向上增量的方式各有优缺点,一种方式的优点是另一种方式的缺点。

被测程序(A) 加入A 加入B 加入E

加入C 加入D 自顶向下的增量测试

自底向上的增量测试

自顶向下测试的主要优点是能较早显示出整个程序的轮廓,主要缺点是,当测试上层模块时使用桩模块较多,很难模拟出真实模块的全部功能,使部分测试内容被迫推迟,直至换上真实模块后再补充测试。

自底向上测试从下层模块开始,设计测试用例比较容易,但是在测试的早期不能显示出程序的轮廓。

针对自顶向下、自底向上方法各自的优点和不足,人们提出了自顶向下的自底向上相结合、从两头向中间逼近的混合式组装方法,被形象称之为“三明治”方法。这种方式,结合考虑软件总体结构的良好设计原则,在程序结构的高层使用自顶向下方式 ,在程序结构的低层使用自底向上方式。 3.确认测试

确认测试的任务是验证软件功能和性能及其他特性是否满足了需求规格说明中确定的各种需求,以及软件配置是否完全、正确。

确认测试的实施首先运用黑盒测试方法,对软件进行有效性测试,即验证被测试软件是否满足需求规格说明确认的标准。复审的目的在于保证软件配置齐全、分类有序,以及软件配置所有成分的完备性、一致性、准确性和可操作性,并且包括软件维护所必需的细节。 4、系统测试

系统测试是将通过测试确认的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、支持软件、数据和人员等其他系统元素组合在一起,在实际运行(使用)环境下对计算机系统进行一系列的集成测试和确认测试。由此可知,系统测试必须在目标环境下运行,其功用在于评估系统环境下软件的性能,发现和捕捉软件中潜在的错误。

系统测试的目的是在真实的系统工作环境下检验软件是否能与系统正确连接,发现软件与系统需求不一致的地方。 系统测试的具体实施一般包括:功能测试、性能测试、操作测试、配置测试、外部接口测试、安全性测试等。 3.5程序的调试 一、基本概念

在对程序进行了成功的测试之后将进入程序调试(通常称Debug,即排错)。程序调试的任务是诊断和改正程序中的错误。它

与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于一定的调试工具去执行找出软件错误的具体位置。软件测试贯穿整个软件生命期,调试主要在开发阶段。

由程序调试的概念可知,程序调试活动由两部分组成,其一是根据错误的迹象确定程序中错误的确切性质、原因和位置。其二,对程序进行修改,排除这个错误。 1、 程序调试的基本步骤 (1) 错误定位

从错误的外部表现形式入手,研究有关部分的程序,确定程序中出错位置,找出错误的内在原因。确定错误位置占据了软件调试绝大部分的工作量。

从技术角度来看,错误的特征和查找错误的难度在于: ① 现象与原因所处的位置可能相距很远。就是说,现象可能出现在程序的一个部位,而原因可能在离此很远的另一个位置。高耦合的程序结构中这种情况更为明显。 ② 当纠正其他错误时,这一错误所表现出的现象可能会消失或暂时性消失,但并未实际排除。 ③ 现象可能并不是由错误引起的(如舍入误差)。 ④ 现象可能性是由于一些不容易发现的人为错误引起的。 ⑤ 错误现象可能时有时无。 ⑥ 现象是由于难于再现的输入状态(例如实时应用中输入顺序不确定)引起的。 ⑦ 现象可能是周期出现的。

(2) 修改设计和代码,以排除错误

排错是软件开发过程中一项艰苦的工作,这也决定了调试工作是一个具有很强技术性和技巧性的工作。软件工程人员在分析测试结果的时候会发现,软件运行失效或出现问题,往往只是潜在错误的外部表现,而外部表现与内在原因之间常常没有明显的联系。如果要找出真正的原因,排除潜在的错误,不是一件易事。因此可以说,调试是通过现象,找出原因的一个思维分析的过程。

(3) 进行回归测试,防止引进新的错误

因为修改程序可能带来新的错误,重复进行暴露这个错误的原始测试或某些有关测试,以确认该错误是否被排除、是否引进了新的错误。如果所做的修正无效,则撤销这次改动,重复上述过程,直到找到一个有效的解决办法为止。 2、 程序调试的原则

在软件调试方面,许多原则实际上是心理学方面的问题。因为调试活动由对程序中错误的定性,定位和排错两部分组成,因此调试原则 也从以下两个方面考虑。

(1) 确定错误的性质和位置时的注意事项: ① 分析思考与错误征兆有关的信息。 ② 避开死胡同。 ③ 只把调试工具当作辅助手段来使用。 ④ 避免用试探法,最多只能把它当作最后手段。 (2) 修改错误的原则 ① 在出现错误的地方,很可能还有别的错误。经验表明,错误吸群集现象,当在某一程序段发现有错误时,在该程序段中还存在另的错误的概率也很高。因此,在修改一个错误时,还要观察和检查相关的代码,看是否还有别的错误。 ② 修改错误的一个觉失误是只修改了这个错误的征兆或这个错误的表现,而没有修改错误本身。如果提出的修改不能解释与这个错误有关的全部现象,那就表明了只修改了错误的一部分。 ③ 注意修正了一个错误的同时有可能会引入新的错误。 ④ 修改错误的过程将迫使人们暂时回到程序设计阶段。修改错误也是程序设计的一种形式。一般说来,在程序设计阶段所使用的任何方法都可以应用到错误修正的过程中来。 ⑤ 修改源代码程序,不要改变目标代码。 二、软件调试方法

调试的关键在于推断程序内部的错误位置及原因。从是否跟踪和和执行程序的角度,类似于软件测试,软件调试可以分为静态调试和动态调试。软件测试中讲座的表态分析方法同样适用静态调试。静态调试主要指通过人的思维来分析源程序代码和排错,是主要的调试手段,而动态调试是辅助静态调试的。主要的调试方法可以采用: 1、强行排错法 ① 通过内存全部打印来排错。 ② 在程序特定部位设置打印语句——即断点法。输出存储器内容,就是在程序执行到某一行的时候,计算机自动停止运行,并保留这时各变量的状态,方便检查,校对。 ③ 自动调试工具。其功能是设置断点,当程序执行到某个特定的语句或某个特定的变量值改变是地,程序暂停执行。程序可在终端上观察程序此时的状态。

计算机二级公共基础知识-[免费下载] 

(i,j,x)(6,4,0)(6,4,6)输入(i,j)输出(i,j,x)(5,10,0)(5,10,10)测试用例3判断-条件覆盖也有缺陷,对质量要求高的软件单元,可根据情况提出多重条件组合覆盖以及其他更高的覆盖要求。(2)
推荐度:
点击下载文档文档为doc格式
5pyba3x4ji0cqsi0v4xe
领取福利

微信扫码领取福利

微信扫码分享